@textbus/xnote 0.2.6 → 0.3.0

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/README.md CHANGED
@@ -100,6 +100,12 @@ const editor = new Editor({
100
100
  })
101
101
  ```
102
102
 
103
+ ## 更新编辑器内容
104
+
105
+ ```ts
106
+ editor.setContent('<p>你好!</p>')
107
+ ```
108
+
103
109
  ## @ 人
104
110
 
105
111
  在文档中 @ 人功能需实现以下接口,以对接用户信息
@@ -1,8 +1,9 @@
1
1
  import { OutputTranslator } from '@viewfly/platform-browser';
2
2
  import { ViewOptions } from '@textbus/platform-browser';
3
3
  import { CollaborateConfig } from '@textbus/collaborate';
4
- import { Textbus, TextbusConfig } from '@textbus/core';
4
+ import { ComponentStateLiteral, Textbus, TextbusConfig } from '@textbus/core';
5
5
  import './assets/icons/style.css';
6
+ import { RootComponentState } from './textbus/components/_api';
6
7
  import './textbus/doc.scss';
7
8
  export interface XNoteCollaborateConfig extends CollaborateConfig {
8
9
  userinfo: {
@@ -16,7 +17,7 @@ export interface XNoteCollaborateConfig extends CollaborateConfig {
16
17
  */
17
18
  export interface EditorConfig extends TextbusConfig {
18
19
  /** 默认 HTML 内容*/
19
- content?: string;
20
+ content?: string | ComponentStateLiteral<RootComponentState>;
20
21
  /** 协作服务配置 */
21
22
  collaborateConfig?: XNoteCollaborateConfig;
22
23
  /** 视图配置项 */
@@ -29,5 +30,9 @@ export declare class Editor extends Textbus {
29
30
  private vDomAdapter;
30
31
  constructor(editorConfig?: EditorConfig);
31
32
  mount(host: HTMLElement): Promise<this>;
33
+ setContent(content: string | ComponentStateLiteral<RootComponentState>): void;
32
34
  getHTML(): string;
35
+ private createModel;
36
+ private createModelFromState;
37
+ private createModelFromHTML;
33
38
  }
package/bundles/index.css CHANGED
@@ -21,4 +21,4 @@
21
21
  Updated for @stackoverflow/stacks v0.64.0
22
22
  Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
23
23
  Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
24
- */}.xnote-source-code.stackoverflow-light pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.stackoverflow-light code.hljs{padding:3px 5px}.xnote-source-code.stackoverflow-light .hljs{background:#f6f6f6;color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-subst{color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-comment{color:#656e77}.xnote-source-code.stackoverflow-light .hljs-attr,.xnote-source-code.stackoverflow-light .hljs-doctag,.xnote-source-code.stackoverflow-light .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-meta .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-section,.xnote-source-code.stackoverflow-light .hljs-selector-tag{color:#015692}.xnote-source-code.stackoverflow-light .hljs-attribute{color:#803378}.xnote-source-code.stackoverflow-light .hljs-name,.xnote-source-code.stackoverflow-light .hljs-number,.xnote-source-code.stackoverflow-light .hljs-quote,.xnote-source-code.stackoverflow-light .hljs-selector-id,.xnote-source-code.stackoverflow-light .hljs-template-tag,.xnote-source-code.stackoverflow-light .hljs-type{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-selector-class{color:#015692}.xnote-source-code.stackoverflow-light .hljs-link,.xnote-source-code.stackoverflow-light .hljs-regexp,.xnote-source-code.stackoverflow-light .hljs-selector-attr,.xnote-source-code.stackoverflow-light .hljs-string,.xnote-source-code.stackoverflow-light .hljs-symbol,.xnote-source-code.stackoverflow-light .hljs-template-variable,.xnote-source-code.stackoverflow-light .hljs-variable{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-meta,.xnote-source-code.stackoverflow-light .hljs-selector-pseudo{color:#015692}.xnote-source-code.stackoverflow-light .hljs-built_in,.xnote-source-code.stackoverflow-light .hljs-literal,.xnote-source-code.stackoverflow-light .hljs-title{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-bullet,.xnote-source-code.stackoverflow-light .hljs-code{color:#535a60}.xnote-source-code.stackoverflow-light .hljs-meta .hljs-string{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-deletion{color:#c02d2e}.xnote-source-code.stackoverflow-light .hljs-addition{color:#2f6f44}.xnote-source-code.stackoverflow-light .hljs-emphasis{font-style:italic}.xnote-source-code.stackoverflow-light .hljs-strong{font-weight:700}.xnote-source-code.vs2015 pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.vs2015 code.hljs{padding:3px 5px}.xnote-source-code.vs2015 .hljs{background:#1e1e1e;color:#dcdcdc}.xnote-source-code.vs2015 .hljs-keyword,.xnote-source-code.vs2015 .hljs-literal,.xnote-source-code.vs2015 .hljs-name,.xnote-source-code.vs2015 .hljs-symbol{color:#569cd6}.xnote-source-code.vs2015 .hljs-link{color:#569cd6;text-decoration:underline}.xnote-source-code.vs2015 .hljs-built_in,.xnote-source-code.vs2015 .hljs-type{color:#4ec9b0}.xnote-source-code.vs2015 .hljs-class,.xnote-source-code.vs2015 .hljs-number{color:#b8d7a3}.xnote-source-code.vs2015 .hljs-meta .hljs-string,.xnote-source-code.vs2015 .hljs-string{color:#d69d85}.xnote-source-code.vs2015 .hljs-regexp,.xnote-source-code.vs2015 .hljs-template-tag{color:#9a5334}.xnote-source-code.vs2015 .hljs-formula,.xnote-source-code.vs2015 .hljs-function,.xnote-source-code.vs2015 .hljs-params,.xnote-source-code.vs2015 .hljs-subst,.xnote-source-code.vs2015 .hljs-title{color:#dcdcdc}.xnote-source-code.vs2015 .hljs-comment,.xnote-source-code.vs2015 .hljs-quote{color:#57a64a;font-style:italic}.xnote-source-code.vs2015 .hljs-doctag{color:#608b4e}.xnote-source-code.vs2015 .hljs-meta,.xnote-source-code.vs2015 .hljs-meta .hljs-keyword,.xnote-source-code.vs2015 .hljs-tag{color:#9b9b9b}.xnote-source-code.vs2015 .hljs-template-variable,.xnote-source-code.vs2015 .hljs-variable{color:#bd63c5}.xnote-source-code.vs2015 .hljs-attr,.xnote-source-code.vs2015 .hljs-attribute{color:#9cdcfe}.xnote-source-code.vs2015 .hljs-section{color:gold}.xnote-source-code.vs2015 .hljs-emphasis{font-style:italic}.xnote-source-code.vs2015 .hljs-strong{font-weight:700}.xnote-source-code.vs2015 .hljs-bullet,.xnote-source-code.vs2015 .hljs-selector-attr,.xnote-source-code.vs2015 .hljs-selector-class,.xnote-source-code.vs2015 .hljs-selector-id,.xnote-source-code.vs2015 .hljs-selector-pseudo,.xnote-source-code.vs2015 .hljs-selector-tag{color:#d7ba7d}.xnote-source-code.vs2015 .hljs-addition{background-color:#144212;display:inline-block;width:100%}.xnote-source-code.vs2015 .hljs-deletion{background-color:#600;display:inline-block;width:100%}.xnote-source-code.xcode .xnote-source-code-container{border:1px solid #eee}.xnote-source-code.xcode .xnote-source-code-line-number-bg{background-color:#fafafa}.xnote-source-code.xcode pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xcode code.hljs{padding:3px 5px}.xnote-source-code.xcode .hljs{background:#fff;color:#000}.xnote-source-code.xcode .xml .hljs-meta{color:silver}.xnote-source-code.xcode .hljs-comment,.xnote-source-code.xcode .hljs-quote{color:#007400}.xnote-source-code.xcode .hljs-attribute,.xnote-source-code.xcode .hljs-keyword,.xnote-source-code.xcode .hljs-literal,.xnote-source-code.xcode .hljs-name,.xnote-source-code.xcode .hljs-selector-tag,.xnote-source-code.xcode .hljs-tag{color:#aa0d91}.xnote-source-code.xcode .hljs-template-variable,.xnote-source-code.xcode .hljs-variable{color:#3f6e74}.xnote-source-code.xcode .hljs-code,.xnote-source-code.xcode .hljs-meta .hljs-string,.xnote-source-code.xcode .hljs-string{color:#c41a16}.xnote-source-code.xcode .hljs-link,.xnote-source-code.xcode .hljs-regexp{color:#0e0eff}.xnote-source-code.xcode .hljs-bullet,.xnote-source-code.xcode .hljs-number,.xnote-source-code.xcode .hljs-symbol,.xnote-source-code.xcode .hljs-title{color:#1c00cf}.xnote-source-code.xcode .hljs-meta,.xnote-source-code.xcode .hljs-section{color:#643820}.xnote-source-code.xcode .hljs-built_in,.xnote-source-code.xcode .hljs-class .hljs-title,.xnote-source-code.xcode .hljs-params,.xnote-source-code.xcode .hljs-title.class_,.xnote-source-code.xcode .hljs-type{color:#5c2699}.xnote-source-code.xcode .hljs-attr{color:#836c28}.xnote-source-code.xcode .hljs-subst{color:#000}.xnote-source-code.xcode .hljs-formula{background-color:#eee;font-style:italic}.xnote-source-code.xcode .hljs-addition{background-color:#baeeba}.xnote-source-code.xcode .hljs-deletion{background-color:#ffc8bd}.xnote-source-code.xcode .hljs-selector-class,.xnote-source-code.xcode .hljs-selector-id{color:#9b703f}.xnote-source-code.xcode .hljs-doctag,.xnote-source-code.xcode .hljs-strong{font-weight:700}.xnote-source-code.xcode .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark .hljs{background:#182324;color:#a9aeb2}.xnote-source-code.xnote-dark .hljs-comment,.xnote-source-code.xnote-dark .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark .hljs-doctag,.xnote-source-code.xnote-dark .hljs-formula,.xnote-source-code.xnote-dark .hljs-keyword{color:#71b155;font-weight:700}.xnote-source-code.xnote-dark .hljs-deletion,.xnote-source-code.xnote-dark .hljs-section,.xnote-source-code.xnote-dark .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark .hljs-literal{color:#388138}.xnote-source-code.xnote-dark .hljs-addition,.xnote-source-code.xnote-dark .hljs-attribute,.xnote-source-code.xnote-dark .hljs-meta .hljs-string,.xnote-source-code.xnote-dark .hljs-regexp,.xnote-source-code.xnote-dark .hljs-string{color:#dd7600}.xnote-source-code.xnote-dark .hljs-number,.xnote-source-code.xnote-dark .hljs-selector-attr,.xnote-source-code.xnote-dark .hljs-selector-class,.xnote-source-code.xnote-dark .hljs-selector-pseudo,.xnote-source-code.xnote-dark .hljs-template-variable,.xnote-source-code.xnote-dark .hljs-type,.xnote-source-code.xnote-dark .hljs-variable{color:#388138}.xnote-source-code.xnote-dark .hljs-bullet,.xnote-source-code.xnote-dark .hljs-link,.xnote-source-code.xnote-dark .hljs-meta,.xnote-source-code.xnote-dark .hljs-name,.xnote-source-code.xnote-dark .hljs-selector-id,.xnote-source-code.xnote-dark .hljs-subst,.xnote-source-code.xnote-dark .hljs-symbol,.xnote-source-code.xnote-dark .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark .hljs-built_in,.xnote-source-code.xnote-dark .hljs-class .hljs-title,.xnote-source-code.xnote-dark .hljs-title.class_{color:#e6c07b}.xnote-source-code.xnote-dark .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark .hljs-link{text-decoration:underline}.xnote-source-code.xnote-dark-blue pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark-blue code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark-blue .hljs{background:#1c222a;color:#a9aeb2}.xnote-source-code.xnote-dark-blue .hljs-comment,.xnote-source-code.xnote-dark-blue .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-doctag,.xnote-source-code.xnote-dark-blue .hljs-formula,.xnote-source-code.xnote-dark-blue .hljs-keyword{color:#0086b3;font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-deletion,.xnote-source-code.xnote-dark-blue .hljs-section,.xnote-source-code.xnote-dark-blue .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark-blue .hljs-literal{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-addition,.xnote-source-code.xnote-dark-blue .hljs-attribute,.xnote-source-code.xnote-dark-blue .hljs-meta .hljs-string,.xnote-source-code.xnote-dark-blue .hljs-regexp,.xnote-source-code.xnote-dark-blue .hljs-string{color:#ce5a70}.xnote-source-code.xnote-dark-blue .hljs-number,.xnote-source-code.xnote-dark-blue .hljs-selector-attr,.xnote-source-code.xnote-dark-blue .hljs-selector-class,.xnote-source-code.xnote-dark-blue .hljs-selector-pseudo,.xnote-source-code.xnote-dark-blue .hljs-template-variable,.xnote-source-code.xnote-dark-blue .hljs-type,.xnote-source-code.xnote-dark-blue .hljs-variable{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-bullet,.xnote-source-code.xnote-dark-blue .hljs-link,.xnote-source-code.xnote-dark-blue .hljs-meta,.xnote-source-code.xnote-dark-blue .hljs-name,.xnote-source-code.xnote-dark-blue .hljs-selector-id,.xnote-source-code.xnote-dark-blue .hljs-subst,.xnote-source-code.xnote-dark-blue .hljs-symbol,.xnote-source-code.xnote-dark-blue .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark-blue .hljs-built_in,.xnote-source-code.xnote-dark-blue .hljs-class .hljs-title,.xnote-source-code.xnote-dark-blue .hljs-title.class_{color:#399fcf}.xnote-source-code.xnote-dark-blue .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-link{text-decoration:underline}.xnote-source-code code{background:none;border:none;border-radius:0;padding:0;vertical-align:inherit}.xnote-source-code{margin-bottom:16px;margin-top:16px;position:relative}.xnote-source-code-container{border-radius:5px;display:flex;line-height:1.418em;overflow:hidden;position:relative}.xnote-source-code-container.xnote-source-code-auto-break .xnote-source-code-line{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}code,kbd,pre,samp{font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace}.xnote-source-code-line-number-bg{background-color:inherit;display:none;position:relative;width:3em;z-index:2}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line-number-bg{display:block}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line{margin-left:-4em}.xnote-source-code-content{counter-reset:codeNum;flex:1;font-size:15px;margin:0;max-height:450px;overflow:auto;padding:15px 0;position:relative}.xnote-source-code-content:hover::-webkit-scrollbar-thumb{background-color:#80848f}.xnote-source-code-content::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.xnote-source-code-content::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.xnote-source-code-content::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.xnote-source-code-content-highlight .xnote-source-code-line{opacity:.36}.xnote-source-code-line{display:flex;margin:2px 0}.xnote-source-code-line-content{display:block;padding:0 20px}.xnote-source-code-line-number .xnote-source-code-line-content{padding:0 20px 0 10px}.xnote-source-code-line-number .xnote-source-code-line:before{box-sizing:border-box;content:counter(codeNum);counter-increment:codeNum;left:0;min-width:4em;opacity:.5;overflow:hidden;padding-right:10px;position:sticky;text-align:right;transform:translateX(-4em);white-space:nowrap;z-index:2}.xnote-source-code-content-highlight .xnote-source-code-line-emphasize{opacity:1}.xnote-source-code-lang{font-size:13px;opacity:.5;padding:4px 10px;pointer-events:none;position:absolute;right:0;top:0}.xnote-paragraph{margin:8px 0}.xnote-blockquote{border-left:2px solid #296eff;margin:1em 0;padding:0 15px}.xnote-blockquote>:first-child{margin-top:0}.xnote-blockquote>:last-child{margin-bottom:0}.xnote-highlight-box{background:#fcf5ce;border:1px solid #f5c774;border-radius:4px;display:flex;margin:16px 0}.xnote-highlight-box-left{padding-top:.65em;text-align:center;width:40px}.xnote-highlight-box-content{flex:1;width:0}.xnote-highlight-box-icon button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.2em;height:30px;padding:0;width:30px}.xnote-highlight-box-icon button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-icons{text-align:left}.xnote-highlight-box-icons button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:22px;height:30px;padding:0;width:30px}.xnote-highlight-box-icons button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-content{padding:5px}.xnote-highlight-box-heading{font-size:14px;opacity:.8;padding:10px 0 10px 3px}.xnote-image{display:inline-block}.xnote-image,.xnote-image img,.xnote-video{max-width:100%}.xnote-video{display:inline-block}.xnote-video video{max-width:100%}.xnote-todolist{align-items:center;display:flex;margin:8px 0}.xnote-todolist-icon{color:#296eff;cursor:pointer;margin-right:6px}.xnote-todolist-content{min-width:2em}.xnote-todolist-content[style*=text-indent]{text-indent:0!important}.xnote-todolist-content[style*=text-align]{text-align:left!important}.xnote-list{margin:8px 0;padding:0}.xnote-list>li{display:flex}.xnote-list-content{min-width:2em}ul.xnote-list .xnote-list-type{font-family:initial;font-size:16px}.xnote-list-type{box-sizing:border-box;color:#296eff;flex-shrink:0;text-align:left;text-indent:0;white-space:nowrap;width:24px}.xnote-order-btn{padding-left:5px}.xnote-list-content[style*=text-indent]{text-indent:0!important}.xnote-list-content[style*=text-align]{text-align:left!important}.btn-group[vf-cf8e1c]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-cf8e1c]{margin:2px 5px}@import "~katex/dist/katex.min.css";.katex,.katex-display,.katex-html,.xnote-katex{display:inline-block}.xnote-katex{margin-left:.5em;margin-right:.5em}.xnote-katex-input{inset:0;min-height:300px;position:absolute;width:590px}.xnote-katex-input .xnote-source-code{margin:0;overflow:hidden;user-select:text}.xnote-katex-input .xnote-source-code-container{border:0!important;height:100%}.xnote-katex-input .xnote-source-code-content{box-sizing:border-box;max-height:none;min-height:300px;overflow:hidden}.input-group[vf-e74208]{display:flex;padding:5px 10px}.input-group input[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px;margin-right:5px;outline:none;padding:2px 6px}.input-group input[vf-e74208]:focus{border-color:#296eff}.input-group button[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px}.split-line[vf-669084]{background:#ddd;margin:8px 5px;width:1px}.left-toolbar[vf-b05292]{font-size:15px;left:-10px;position:absolute;top:0;z-index:10}.left-toolbar-btn-wrap[vf-b05292]{position:absolute;transition:all .2s}.left-toolbar-btn[vf-b05292]{background:#fff;border:1px solid #ddd;border-radius:5px;cursor:pointer;height:26px}.left-toolbar-btn span[vf-b05292]{align-items:center;display:inline-flex}.btn-group[vf-b05292]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-b05292]{margin:2px 5px}.link-jump-plugin[vf-3073ba]{background-color:#333;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.3);color:#ddd;font-size:12px;line-height:1em;margin-top:-30px;padding:6px 0;position:absolute;text-align:center;text-decoration:none;transform:translateX(-50%);width:66px}.link-jump-plugin a[vf-3073ba],.link-jump-plugin span[vf-3073ba]{color:inherit;cursor:pointer;margin-left:2px;margin-right:2px;text-decoration:none}.link-jump-plugin a[vf-3073ba]:hover,.link-jump-plugin span[vf-3073ba]:hover{color:#296eff}.link-jump-plugin[vf-3073ba]:after{border:6px solid transparent;border-top-color:#333;content:"";left:50%;margin-left:-6px;pointer-events:none;position:absolute;top:100%}.toolbar[vf-33b3ca]{background-color:#fff;border:1px solid #dee0e3;border-radius:5px;box-shadow:0 4px 8px rgba(0,0,0,.08);box-sizing:border-box;display:flex;font-size:13px;height:36px;opacity:0;padding:0 6px;pointer-events:none;position:absolute;text-align:left;transform:translateX(-50%);transition-duration:.4s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.dark[vf-33b3ca]{background-color:#222;color:#ccc}.toolbar.dark[vf-33b3ca] .split-line{background:#666}.toolbar.dark[vf-33b3ca] .btn.active,.toolbar.dark[vf-33b3ca] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-42c12d]{border-radius:inherit;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 15px;position:relative;text-align:left;top:0;z-index:3}.toolbar.dark[vf-42c12d]{background-color:#222;color:#ccc}.toolbar.dark[vf-42c12d] .split-line{background:#666}.toolbar.dark[vf-42c12d] .btn.active,.toolbar.dark[vf-42c12d] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-25fd9c]{background:#fff;border:1px solid #dee0e3;border-radius:5px;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 10px;position:relative;text-align:left;top:0;transition-duration:.15s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.suspension[vf-25fd9c]{box-shadow:0 4px 8px rgba(0,0,0,.08)}.toolbar.dark[vf-25fd9c]{background-color:#222;color:#ccc}.toolbar.dark[vf-25fd9c] .split-line{background:#666}.toolbar.dark[vf-25fd9c] .btn.active,.toolbar.dark[vf-25fd9c] .btn:hover{background-color:hsla(0,0%,100%,.2)}.xnote-at{color:#296eff;display:inline-block;line-height:1em}.xnote-at-complete{background-color:#296eff;border-radius:1em;color:#fff;font-size:.9em;margin-left:2px;margin-right:2px;padding:4px 6px}.xnote-at-input{display:inline-block;min-width:2em}.xnote-at-menu{user-select:none}.xnote-at-member{border-radius:4px;cursor:pointer;display:flex;height:50px;margin:4px 0;overflow:hidden;padding:5px;transition:background-color .2s;width:100%}.xnote-at-member.selected,.xnote-at-member:hover{background:#eee}.xnote-at-member-avatar{align-items:center;display:flex;font-size:12px;text-align:center;width:40px}.xnote-at-member-avatar img,.xnote-at-member-avatar-bg{background:#eee;border-radius:50%;display:inline-block;font-size:.9em;height:36px;line-height:36px;overflow:hidden;width:36px}.xnote-at-member-info{flex:1;font-size:14px;padding-left:10px;width:156px}.xnote-at-member-desc,.xnote-at-member-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xnote-at-member-desc{font-size:12px;opacity:.7}.xnote-root{color:#1f2329}.xnote-root * ::selection{background:rgba(20,99,252,.34)}.xnote-content{color:initial;font-family:initial;font-size:medium;line-height:1.65}.xnote-content:before{content:attr(data-placeholder);opacity:.5;position:absolute}.xnote-table{margin-bottom:16px;margin-top:16px}.xnote-table-inner{display:inline-block;max-width:100%;position:relative}.xnote-table-content{background:hsla(0,0%,100%,.8);border-collapse:collapse;border-spacing:0;table-layout:fixed;width:0}.xnote-table-content.hide-selection * ::selection{background:none}.xnote-table-content td{border:1px solid #ddd;box-sizing:content-box;padding:0 10px}.xnote-table-container,.xnote-table-wrapper{position:relative}.xnote-table-delete-btn{background:#eee;border:none;border-radius:4px;color:#5c6370;cursor:pointer;height:30px;line-height:30px;width:24px}.xnote-table-delete-btn:hover{color:#333}.drag-line[vf-681de2]{border-color:transparent;border-style:solid;border-width:0 5px;bottom:0;box-sizing:content-box;cursor:col-resize;display:none;margin-left:-5px;position:absolute;top:0;width:2px}.drag-line[vf-681de2]:before{background:#296eff;content:"";inset:0;position:absolute}.top-bar[vf-39cb2c]{display:none;left:0;position:absolute;right:0;top:0}.top-bar.active[vf-39cb2c]{display:block}.top-delete-toolbar[vf-39cb2c]{height:0;position:relative;top:-10px}.toolbar-wrapper[vf-39cb2c]{height:60px;left:0;pointer-events:none;position:absolute;right:0;top:-60px}.insert-bar[vf-39cb2c]{box-sizing:content-box;height:30px;margin-left:-10px;margin-right:-10px;overflow:hidden;padding-left:10px;padding-right:10px;padding-top:30px}.insert-bar table[vf-39cb2c]{border-collapse:collapse;border-spacing:0;position:relative;table-layout:fixed;z-index:1}.insert-bar table td[vf-39cb2c]{border:1px solid transparent;box-sizing:border-box;height:18px;position:relative}.insert-bar table .tool-container[vf-39cb2c]{height:18px}.insert-bar table .tool-container>div[vf-39cb2c],.insert-bar table .tool-container>span[vf-39cb2c]{pointer-events:auto}.insert-bar table .insert-btn-wrap[vf-39cb2c]{cursor:pointer;height:21px;position:absolute;right:-11px;top:-2px;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]:after{background:inherit;content:"";height:10px;left:5.5px;position:absolute;top:12px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-39cb2c]{background:#296eff;transform:scale(1)}.action-bar[vf-39cb2c]{margin-top:-12px;overflow:hidden;pointer-events:auto;position:relative;z-index:0}.action-bar.active[vf-39cb2c]{display:block}.action-bar table[vf-39cb2c]{border-collapse:collapse;border-radius:4px 4px 0 0;border-spacing:0;overflow:hidden;table-layout:fixed}.action-bar table td[vf-39cb2c]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-39cb2c]:hover{background:#dedede}.action-bar table td.active[vf-39cb2c]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-39cb2c]:before{border-color:inherit;border-style:solid;border-width:0 0 0 1px;bottom:0;content:"";left:-1px;position:absolute;top:-1px}.scroll-container[vf-7bef30]{overflow-x:auto;overflow-y:hidden}.scroll-container[vf-7bef30]:hover::-webkit-scrollbar-thumb{background-color:#80848f}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.scroll-container[vf-7bef30]::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.scroll-container[vf-7bef30]:before{background-image:linear-gradient(90deg,rgba(0,0,0,.1),transparent);border-left:1px solid #ddd;left:0;z-index:1}.scroll-container[vf-7bef30]:after,.scroll-container[vf-7bef30]:before{bottom:6px;content:"";pointer-events:none;position:absolute;top:0;width:12px}.scroll-container[vf-7bef30]:after{background:linear-gradient(90deg,transparent,rgba(0,0,0,.1));border-right:1px solid #ddd;right:0}.scroll-container.left-end[vf-7bef30]:before,.scroll-container.right-end[vf-7bef30]:after{display:none}.left-bar[vf-aaece0]{display:none;left:0;margin-left:-30px;position:absolute;top:0;width:30px}.left-bar.active[vf-aaece0]{display:flex}.toolbar-item[vf-aaece0]{align-items:center;display:flex;inset:0;position:absolute}.insert-bar[vf-aaece0]{width:18px}.insert-bar table[vf-aaece0]{border-collapse:collapse;border-spacing:0;table-layout:fixed}.insert-bar table td[vf-aaece0]{border:1px solid transparent;position:relative}.insert-bar table .insert-btn-wrap[vf-aaece0]{bottom:-8px;cursor:pointer;height:21px;left:0;position:absolute;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]:after{background:inherit;content:"";height:10px;left:11px;position:absolute;top:5.5px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-aaece0]{background:#296eff;transform:scale(1)}.action-bar[vf-aaece0]{width:12px}.action-bar table[vf-aaece0]{border-collapse:collapse;border-radius:4px 0 0 4px;border-spacing:0;overflow:hidden;table-layout:fixed;width:13px}.action-bar table td[vf-aaece0]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-aaece0]:hover{background:#dedede}.action-bar table td.active[vf-aaece0]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-aaece0]:before{border-color:inherit;border-style:solid;border-width:1px 0 0;content:"";left:-1px;position:absolute;right:-1px;top:-1px}.drag-line[vf-d4c4a9]{background:#296eff;contain:layout size style;height:2px;left:0;max-width:100%;position:absolute;right:0;z-index:1}.mask[vf-4a5ad1]{background:rgba(41,110,255,.063);border:1px solid #296eff;box-sizing:content-box;display:none;pointer-events:none;position:absolute}.mask.active[vf-4a5ad1]{display:block}@font-face{font-display:block;font-family:textbus;font-style:normal;font-weight:400;src:url(fonts/textbus.ttf?oyolf2) format("truetype"),url(fonts/textbus.woff?oyolf2) format("woff"),url(fonts/textbus.svg?oyolf2#textbus) format("svg")}[class*=" xnote-icon-"],[class^=xnote-icon-]{speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:textbus!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.xnote-icon-timeline:before{content:"\e900"}.xnote-icon-step:before{content:"\e901"}.xnote-icon-arrow-left:before{content:"\e902"}.xnote-icon-arrow-right:before{content:"\e903"}.xnote-icon-arrow-top:before{content:"\e904"}.xnote-icon-arrow-bottom:before{content:"\e905"}.xnote-icon-source-code:before{content:"\e906"}.xnote-icon-insert-paragraph-after:before{content:"\e907"}.xnote-icon-insert-paragraph-before:before{content:"\e908"}.xnote-icon-plus:before{content:"\e909"}.xnote-icon-table-border:before{content:"\e90a"}.xnote-icon-table-remove:before{content:"\e90b"}.xnote-icon-function:before{content:"\e90c"}.xnote-icon-paint-bucket:before{content:"\e90d"}.xnote-icon-background-color:before{content:"\e90e"}.xnote-icon-color:before{content:"\e90f"}.xnote-icon-hightlight-box:before{content:"\e910"}.xnote-icon-table-edit:before{content:"\e911"}.xnote-icon-table-split-columns:before{content:"\e912"}.xnote-icon-align-middle:before{content:"\e913"}.xnote-icon-align-bottom:before{content:"\e914"}.xnote-icon-align-top:before{content:"\e915"}.xnote-icon-palette:before{content:"\e916"}.xnote-icon-split-cells:before{content:"\e917"}.xnote-icon-merge-cells:before{content:"\e918"}.xnote-icon-image:before{content:"\e919"}.xnote-icon-music:before{content:"\e91b"}.xnote-icon-video:before{content:"\e91c"}.xnote-icon-unlink:before{content:"\e91d"}.xnote-icon-select:before{content:"\e91e"}.xnote-icon-tree:before{content:"\e91f"}.xnote-icon-more:before{content:"\e921"}.xnote-icon-checkmark:before{content:"\e922"}.xnote-icon-text-wrap:before{content:"\e924"}.xnote-icon-heading-h1:before{content:"\e925"}.xnote-icon-heading-h2:before{content:"\e926"}.xnote-icon-heading-h3:before{content:"\e927"}.xnote-icon-heading-h4:before{content:"\e928"}.xnote-icon-heading-h5:before{content:"\e929"}.xnote-icon-heading-h6:before{content:"\e92a"}.xnote-icon-heading:before{content:"\e92b"}.xnote-icon-copy:before{content:"\e92c"}.xnote-icon-paste:before{content:"\e92d"}.xnote-icon-history-back:before{content:"\e967"}.xnote-icon-history-forward:before{content:"\e968"}.xnote-icon-quotes-right:before{content:"\e978"}.xnote-icon-bin:before{content:"\e9ac"}.xnote-icon-list-numbered:before{content:"\e9b9"}.xnote-icon-list:before{content:"\e9bb"}.xnote-icon-link:before{content:"\e9cb"}.xnote-icon-command:before{content:"\ea4e"}.xnote-icon-shift:before{content:"\ea4f"}.xnote-icon-ctrl:before{content:"\ea50"}.xnote-icon-opt:before{content:"\ea51"}.xnote-icon-checkbox-checked:before{content:"\ea52"}.xnote-icon-checkbox-unchecked:before{content:"\ea53"}.xnote-icon-cut:before{content:"\ea5a"}.xnote-icon-line-height:before{content:"\ea5f"}.xnote-icon-letter-spacing:before{content:"\ea60"}.xnote-icon-font-size:before{content:"\ea61"}.xnote-icon-bold:before{content:"\ea62"}.xnote-icon-underline:before{content:"\ea63"}.xnote-icon-italic:before{content:"\ea64"}.xnote-icon-strikethrough:before{content:"\ea65"}.xnote-icon-superscript:before{content:"\ea69"}.xnote-icon-subscript:before{content:"\ea6a"}.xnote-icon-table:before{content:"\ea71"}.xnote-icon-pilcrow:before{content:"\ea73"}.xnote-icon-ltr:before{content:"\ea74"}.xnote-icon-rtl:before{content:"\ea75"}.xnote-icon-paragraph-left:before{content:"\ea77"}.xnote-icon-paragraph-center:before{content:"\ea78"}.xnote-icon-paragraph-right:before{content:"\ea79"}.xnote-icon-paragraph-justify:before{content:"\ea7a"}.xnote-icon-indent-increase:before{content:"\ea7b"}.xnote-icon-indent-decrease:before{content:"\ea7c"}.xnote-icon-code:before{content:"\ea80"}.xnote-icon-clear-formatting:before{content:"\ea6f"}.xnote-h1{font-size:2.2em;font-weight:600}.xnote-h2{font-size:1.8em;font-weight:600}.xnote-h3{font-size:1.4em;font-weight:600}.xnote-h4{font-size:1em;font-weight:600}.xnote-h5{font-size:.9em;font-weight:600}.xnote-h6{font-size:.8em;font-weight:600}.xnote-code{border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace;margin:0 3px;padding:2px 3px}.xnote-timeline{display:block;padding-left:5px;padding-top:1em}.xnote-timeline-item{display:block;opacity:.76;padding-bottom:.5em;padding-left:1.5em;position:relative}.xnote-timeline-item:first-of-type>.xnote-timeline-line{top:1em}.xnote-timeline-item:last-of-type>.xnote-timeline-line{bottom:calc(100% - 1em)}.xnote-timeline-line{border-left:1px solid #dddee1;bottom:0;left:0;position:absolute;top:0;width:0}.xnote-timeline-icon{background-color:#fff;border:1px solid #bbbec4;border-radius:50%;box-sizing:border-box;height:9px;left:-4px;position:absolute;top:.5em;width:9px}.xnote-timeline-tools{display:none;position:absolute;right:0;top:0}.xnote-timeline-item-content>:first-child{margin-top:0}.xnote-timeline-item:hover .xnote-timeline-tools{display:block}.xnote-step{display:flex}.xnote-step-item{flex:1;position:relative}.xnote-step-item:last-child .xnote-step-item-line{display:none}.xnote-step-item.xnote-complete .xnote-step-item-line{border-top-color:#15bd9a}.xnote-step-item.xnote-complete .xnote-step-item-icon{background-color:#15bd9a}.xnote-step-item.xnote-current .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-current .xnote-step-item-icon{background-color:#1296db}.xnote-step-item.xnote-waiting .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-waiting .xnote-step-item-icon{background-color:#bbbec4}.xnote-step-item.xnote-waiting .xnote-step-item-content{opacity:.8}.xnote-step-item-header{cursor:pointer;margin-bottom:1em;position:relative}.xnote-step-item-icon{border-radius:50%;color:#fff;font-weight:500;height:1.6em;line-height:1.6em;position:relative;text-align:center;width:1.6em}.xnote-step-item-line{border-top:1px solid #dddee1;left:0;position:absolute;right:0;top:50%}.xnote-step-item-content{padding-right:15px}.xnote-step-title{font-size:1.2em;font-weight:500;margin:0}.xnote-step-title>small{font-weight:400;opacity:.8}.xnote-step-content{font-weight:400;margin:0}.xnote-step-tools{display:none;position:absolute;right:0;top:0}.xnote-step-item-content>:first-child{margin-top:0}.xnote-step-item:hover .xnote-step-tools{display:block}
24
+ */}.xnote-source-code.stackoverflow-light pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.stackoverflow-light code.hljs{padding:3px 5px}.xnote-source-code.stackoverflow-light .hljs{background:#f6f6f6;color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-subst{color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-comment{color:#656e77}.xnote-source-code.stackoverflow-light .hljs-attr,.xnote-source-code.stackoverflow-light .hljs-doctag,.xnote-source-code.stackoverflow-light .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-meta .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-section,.xnote-source-code.stackoverflow-light .hljs-selector-tag{color:#015692}.xnote-source-code.stackoverflow-light .hljs-attribute{color:#803378}.xnote-source-code.stackoverflow-light .hljs-name,.xnote-source-code.stackoverflow-light .hljs-number,.xnote-source-code.stackoverflow-light .hljs-quote,.xnote-source-code.stackoverflow-light .hljs-selector-id,.xnote-source-code.stackoverflow-light .hljs-template-tag,.xnote-source-code.stackoverflow-light .hljs-type{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-selector-class{color:#015692}.xnote-source-code.stackoverflow-light .hljs-link,.xnote-source-code.stackoverflow-light .hljs-regexp,.xnote-source-code.stackoverflow-light .hljs-selector-attr,.xnote-source-code.stackoverflow-light .hljs-string,.xnote-source-code.stackoverflow-light .hljs-symbol,.xnote-source-code.stackoverflow-light .hljs-template-variable,.xnote-source-code.stackoverflow-light .hljs-variable{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-meta,.xnote-source-code.stackoverflow-light .hljs-selector-pseudo{color:#015692}.xnote-source-code.stackoverflow-light .hljs-built_in,.xnote-source-code.stackoverflow-light .hljs-literal,.xnote-source-code.stackoverflow-light .hljs-title{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-bullet,.xnote-source-code.stackoverflow-light .hljs-code{color:#535a60}.xnote-source-code.stackoverflow-light .hljs-meta .hljs-string{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-deletion{color:#c02d2e}.xnote-source-code.stackoverflow-light .hljs-addition{color:#2f6f44}.xnote-source-code.stackoverflow-light .hljs-emphasis{font-style:italic}.xnote-source-code.stackoverflow-light .hljs-strong{font-weight:700}.xnote-source-code.vs2015 pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.vs2015 code.hljs{padding:3px 5px}.xnote-source-code.vs2015 .hljs{background:#1e1e1e;color:#dcdcdc}.xnote-source-code.vs2015 .hljs-keyword,.xnote-source-code.vs2015 .hljs-literal,.xnote-source-code.vs2015 .hljs-name,.xnote-source-code.vs2015 .hljs-symbol{color:#569cd6}.xnote-source-code.vs2015 .hljs-link{color:#569cd6;text-decoration:underline}.xnote-source-code.vs2015 .hljs-built_in,.xnote-source-code.vs2015 .hljs-type{color:#4ec9b0}.xnote-source-code.vs2015 .hljs-class,.xnote-source-code.vs2015 .hljs-number{color:#b8d7a3}.xnote-source-code.vs2015 .hljs-meta .hljs-string,.xnote-source-code.vs2015 .hljs-string{color:#d69d85}.xnote-source-code.vs2015 .hljs-regexp,.xnote-source-code.vs2015 .hljs-template-tag{color:#9a5334}.xnote-source-code.vs2015 .hljs-formula,.xnote-source-code.vs2015 .hljs-function,.xnote-source-code.vs2015 .hljs-params,.xnote-source-code.vs2015 .hljs-subst,.xnote-source-code.vs2015 .hljs-title{color:#dcdcdc}.xnote-source-code.vs2015 .hljs-comment,.xnote-source-code.vs2015 .hljs-quote{color:#57a64a;font-style:italic}.xnote-source-code.vs2015 .hljs-doctag{color:#608b4e}.xnote-source-code.vs2015 .hljs-meta,.xnote-source-code.vs2015 .hljs-meta .hljs-keyword,.xnote-source-code.vs2015 .hljs-tag{color:#9b9b9b}.xnote-source-code.vs2015 .hljs-template-variable,.xnote-source-code.vs2015 .hljs-variable{color:#bd63c5}.xnote-source-code.vs2015 .hljs-attr,.xnote-source-code.vs2015 .hljs-attribute{color:#9cdcfe}.xnote-source-code.vs2015 .hljs-section{color:gold}.xnote-source-code.vs2015 .hljs-emphasis{font-style:italic}.xnote-source-code.vs2015 .hljs-strong{font-weight:700}.xnote-source-code.vs2015 .hljs-bullet,.xnote-source-code.vs2015 .hljs-selector-attr,.xnote-source-code.vs2015 .hljs-selector-class,.xnote-source-code.vs2015 .hljs-selector-id,.xnote-source-code.vs2015 .hljs-selector-pseudo,.xnote-source-code.vs2015 .hljs-selector-tag{color:#d7ba7d}.xnote-source-code.vs2015 .hljs-addition{background-color:#144212;display:inline-block;width:100%}.xnote-source-code.vs2015 .hljs-deletion{background-color:#600;display:inline-block;width:100%}.xnote-source-code.xcode .xnote-source-code-container{border:1px solid #eee}.xnote-source-code.xcode .xnote-source-code-line-number-bg{background-color:#fafafa}.xnote-source-code.xcode pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xcode code.hljs{padding:3px 5px}.xnote-source-code.xcode .hljs{background:#fff;color:#000}.xnote-source-code.xcode .xml .hljs-meta{color:silver}.xnote-source-code.xcode .hljs-comment,.xnote-source-code.xcode .hljs-quote{color:#007400}.xnote-source-code.xcode .hljs-attribute,.xnote-source-code.xcode .hljs-keyword,.xnote-source-code.xcode .hljs-literal,.xnote-source-code.xcode .hljs-name,.xnote-source-code.xcode .hljs-selector-tag,.xnote-source-code.xcode .hljs-tag{color:#aa0d91}.xnote-source-code.xcode .hljs-template-variable,.xnote-source-code.xcode .hljs-variable{color:#3f6e74}.xnote-source-code.xcode .hljs-code,.xnote-source-code.xcode .hljs-meta .hljs-string,.xnote-source-code.xcode .hljs-string{color:#c41a16}.xnote-source-code.xcode .hljs-link,.xnote-source-code.xcode .hljs-regexp{color:#0e0eff}.xnote-source-code.xcode .hljs-bullet,.xnote-source-code.xcode .hljs-number,.xnote-source-code.xcode .hljs-symbol,.xnote-source-code.xcode .hljs-title{color:#1c00cf}.xnote-source-code.xcode .hljs-meta,.xnote-source-code.xcode .hljs-section{color:#643820}.xnote-source-code.xcode .hljs-built_in,.xnote-source-code.xcode .hljs-class .hljs-title,.xnote-source-code.xcode .hljs-params,.xnote-source-code.xcode .hljs-title.class_,.xnote-source-code.xcode .hljs-type{color:#5c2699}.xnote-source-code.xcode .hljs-attr{color:#836c28}.xnote-source-code.xcode .hljs-subst{color:#000}.xnote-source-code.xcode .hljs-formula{background-color:#eee;font-style:italic}.xnote-source-code.xcode .hljs-addition{background-color:#baeeba}.xnote-source-code.xcode .hljs-deletion{background-color:#ffc8bd}.xnote-source-code.xcode .hljs-selector-class,.xnote-source-code.xcode .hljs-selector-id{color:#9b703f}.xnote-source-code.xcode .hljs-doctag,.xnote-source-code.xcode .hljs-strong{font-weight:700}.xnote-source-code.xcode .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark .hljs{background:#182324;color:#a9aeb2}.xnote-source-code.xnote-dark .hljs-comment,.xnote-source-code.xnote-dark .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark .hljs-doctag,.xnote-source-code.xnote-dark .hljs-formula,.xnote-source-code.xnote-dark .hljs-keyword{color:#71b155;font-weight:700}.xnote-source-code.xnote-dark .hljs-deletion,.xnote-source-code.xnote-dark .hljs-section,.xnote-source-code.xnote-dark .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark .hljs-literal{color:#388138}.xnote-source-code.xnote-dark .hljs-addition,.xnote-source-code.xnote-dark .hljs-attribute,.xnote-source-code.xnote-dark .hljs-meta .hljs-string,.xnote-source-code.xnote-dark .hljs-regexp,.xnote-source-code.xnote-dark .hljs-string{color:#dd7600}.xnote-source-code.xnote-dark .hljs-number,.xnote-source-code.xnote-dark .hljs-selector-attr,.xnote-source-code.xnote-dark .hljs-selector-class,.xnote-source-code.xnote-dark .hljs-selector-pseudo,.xnote-source-code.xnote-dark .hljs-template-variable,.xnote-source-code.xnote-dark .hljs-type,.xnote-source-code.xnote-dark .hljs-variable{color:#388138}.xnote-source-code.xnote-dark .hljs-bullet,.xnote-source-code.xnote-dark .hljs-link,.xnote-source-code.xnote-dark .hljs-meta,.xnote-source-code.xnote-dark .hljs-name,.xnote-source-code.xnote-dark .hljs-selector-id,.xnote-source-code.xnote-dark .hljs-subst,.xnote-source-code.xnote-dark .hljs-symbol,.xnote-source-code.xnote-dark .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark .hljs-built_in,.xnote-source-code.xnote-dark .hljs-class .hljs-title,.xnote-source-code.xnote-dark .hljs-title.class_{color:#e6c07b}.xnote-source-code.xnote-dark .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark .hljs-link{text-decoration:underline}.xnote-source-code.xnote-dark-blue pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark-blue code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark-blue .hljs{background:#1c222a;color:#a9aeb2}.xnote-source-code.xnote-dark-blue .hljs-comment,.xnote-source-code.xnote-dark-blue .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-doctag,.xnote-source-code.xnote-dark-blue .hljs-formula,.xnote-source-code.xnote-dark-blue .hljs-keyword{color:#0086b3;font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-deletion,.xnote-source-code.xnote-dark-blue .hljs-section,.xnote-source-code.xnote-dark-blue .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark-blue .hljs-literal{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-addition,.xnote-source-code.xnote-dark-blue .hljs-attribute,.xnote-source-code.xnote-dark-blue .hljs-meta .hljs-string,.xnote-source-code.xnote-dark-blue .hljs-regexp,.xnote-source-code.xnote-dark-blue .hljs-string{color:#ce5a70}.xnote-source-code.xnote-dark-blue .hljs-number,.xnote-source-code.xnote-dark-blue .hljs-selector-attr,.xnote-source-code.xnote-dark-blue .hljs-selector-class,.xnote-source-code.xnote-dark-blue .hljs-selector-pseudo,.xnote-source-code.xnote-dark-blue .hljs-template-variable,.xnote-source-code.xnote-dark-blue .hljs-type,.xnote-source-code.xnote-dark-blue .hljs-variable{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-bullet,.xnote-source-code.xnote-dark-blue .hljs-link,.xnote-source-code.xnote-dark-blue .hljs-meta,.xnote-source-code.xnote-dark-blue .hljs-name,.xnote-source-code.xnote-dark-blue .hljs-selector-id,.xnote-source-code.xnote-dark-blue .hljs-subst,.xnote-source-code.xnote-dark-blue .hljs-symbol,.xnote-source-code.xnote-dark-blue .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark-blue .hljs-built_in,.xnote-source-code.xnote-dark-blue .hljs-class .hljs-title,.xnote-source-code.xnote-dark-blue .hljs-title.class_{color:#399fcf}.xnote-source-code.xnote-dark-blue .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-link{text-decoration:underline}.xnote-source-code code{background:none;border:none;border-radius:0;padding:0;vertical-align:inherit}.xnote-source-code{margin-bottom:16px;margin-top:16px;position:relative}.xnote-source-code-container{border-radius:5px;display:flex;line-height:1.418em;overflow:hidden;position:relative}.xnote-source-code-container.xnote-source-code-auto-break .xnote-source-code-line{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}code,kbd,pre,samp{font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace}.xnote-source-code-line-number-bg{background-color:inherit;display:none;position:relative;width:3em;z-index:2}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line-number-bg{display:block}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line{margin-left:-4em}.xnote-source-code-content{counter-reset:codeNum;flex:1;font-size:15px;margin:0;max-height:450px;overflow:auto;padding:15px 0;position:relative}.xnote-source-code-content:hover::-webkit-scrollbar-thumb{background-color:#80848f}.xnote-source-code-content::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.xnote-source-code-content::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.xnote-source-code-content::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.xnote-source-code-content-highlight .xnote-source-code-line{opacity:.36}.xnote-source-code-line{display:flex;margin:2px 0}.xnote-source-code-line-content{display:block;padding:0 20px}.xnote-source-code-line-number .xnote-source-code-line-content{padding:0 20px 0 10px}.xnote-source-code-line-number .xnote-source-code-line:before{box-sizing:border-box;content:counter(codeNum);counter-increment:codeNum;left:0;min-width:4em;opacity:.5;overflow:hidden;padding-right:10px;position:sticky;text-align:right;transform:translateX(-4em);white-space:nowrap;z-index:2}.xnote-source-code-content-highlight .xnote-source-code-line-emphasize{opacity:1}.xnote-source-code-lang{font-size:13px;opacity:.5;padding:4px 10px;pointer-events:none;position:absolute;right:0;top:0}.xnote-paragraph{margin:8px 0}.xnote-blockquote{border-left:2px solid #296eff;margin:1em 0;padding:0 15px}.xnote-blockquote>:first-child{margin-top:0}.xnote-blockquote>:last-child{margin-bottom:0}.xnote-highlight-box{background:#fcf5ce;border:1px solid #f5c774;border-radius:4px;display:flex;margin:16px 0}.xnote-highlight-box-left{padding-top:.65em;text-align:center;width:40px}.xnote-highlight-box-content{flex:1;width:0}.xnote-highlight-box-icon{user-select:none}.xnote-highlight-box-icon button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.2em;height:30px;padding:0;width:30px}.xnote-highlight-box-icon button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-icons{text-align:left}.xnote-highlight-box-icons button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:22px;height:30px;padding:0;width:30px}.xnote-highlight-box-icons button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-content{padding:5px}.xnote-highlight-box-heading{font-size:14px;opacity:.8;padding:10px 0 10px 3px}.xnote-image{display:inline-block}.xnote-image,.xnote-image img,.xnote-video{max-width:100%}.xnote-video{display:inline-block}.xnote-video video{max-width:100%}.xnote-todolist{align-items:center;display:flex;margin:8px 0}.xnote-todolist-icon{color:#296eff;cursor:pointer;margin-right:6px}.xnote-todolist-content{min-width:2em}.xnote-todolist-content[style*=text-indent]{text-indent:0!important}.xnote-todolist-content[style*=text-align]{text-align:left!important}.xnote-list{margin:8px 0;padding:0}.xnote-list>li{display:flex}.xnote-list-content{min-width:2em}ul.xnote-list .xnote-list-type{font-family:initial;font-size:16px}.xnote-list-type{box-sizing:border-box;color:#296eff;flex-shrink:0;text-align:left;text-indent:0;user-select:none;white-space:nowrap;width:24px}.xnote-order-btn{padding-left:5px}.xnote-list-content[style*=text-indent]{text-indent:0!important}.xnote-list-content[style*=text-align]{text-align:left!important}.btn-group[vf-cf8e1c]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-cf8e1c]{margin:2px 5px}@import "~katex/dist/katex.min.css";.katex,.katex-display,.katex-html,.xnote-katex{display:inline-block}.xnote-katex{margin-left:.5em;margin-right:.5em}.xnote-katex-input{inset:0;min-height:300px;position:absolute;width:590px}.xnote-katex-input .xnote-source-code{margin:0;overflow:hidden;user-select:text}.xnote-katex-input .xnote-source-code-container{border:0!important;height:100%}.xnote-katex-input .xnote-source-code-content{box-sizing:border-box;max-height:none;min-height:300px;overflow:hidden}.input-group[vf-e74208]{display:flex;padding:5px 10px}.input-group input[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px;margin-right:5px;outline:none;padding:2px 6px}.input-group input[vf-e74208]:focus{border-color:#296eff}.input-group button[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px}.split-line[vf-669084]{background:#ddd;margin:8px 5px;width:1px}.left-toolbar[vf-b05292]{font-size:15px;left:-10px;position:absolute;top:0;z-index:10}.left-toolbar-btn-wrap[vf-b05292]{position:absolute;transition:all .2s}.left-toolbar-btn[vf-b05292]{background:#fff;border:1px solid #ddd;border-radius:5px;cursor:pointer;height:26px}.left-toolbar-btn span[vf-b05292]{align-items:center;display:inline-flex}.btn-group[vf-b05292]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-b05292]{margin:2px 5px}.link-jump-plugin[vf-3073ba]{background-color:#333;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.3);color:#ddd;font-size:12px;line-height:1em;margin-top:-30px;padding:6px 0;position:absolute;text-align:center;text-decoration:none;transform:translateX(-50%);width:66px}.link-jump-plugin a[vf-3073ba],.link-jump-plugin span[vf-3073ba]{color:inherit;cursor:pointer;margin-left:2px;margin-right:2px;text-decoration:none}.link-jump-plugin a[vf-3073ba]:hover,.link-jump-plugin span[vf-3073ba]:hover{color:#296eff}.link-jump-plugin[vf-3073ba]:after{border:6px solid transparent;border-top-color:#333;content:"";left:50%;margin-left:-6px;pointer-events:none;position:absolute;top:100%}.toolbar[vf-33b3ca]{background-color:#fff;border:1px solid #dee0e3;border-radius:5px;box-shadow:0 4px 8px rgba(0,0,0,.08);box-sizing:border-box;display:flex;font-size:13px;height:36px;opacity:0;padding:0 6px;pointer-events:none;position:absolute;text-align:left;transform:translateX(-50%);transition-duration:.4s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.dark[vf-33b3ca]{background-color:#222;color:#ccc}.toolbar.dark[vf-33b3ca] .split-line{background:#666}.toolbar.dark[vf-33b3ca] .btn.active,.toolbar.dark[vf-33b3ca] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-42c12d]{border-radius:inherit;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 15px;position:relative;text-align:left;top:0;z-index:3}.toolbar.dark[vf-42c12d]{background-color:#222;color:#ccc}.toolbar.dark[vf-42c12d] .split-line{background:#666}.toolbar.dark[vf-42c12d] .btn.active,.toolbar.dark[vf-42c12d] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-25fd9c]{background:#fff;border:1px solid #dee0e3;border-radius:5px;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 10px;position:relative;text-align:left;top:0;transition-duration:.15s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.suspension[vf-25fd9c]{box-shadow:0 4px 8px rgba(0,0,0,.08)}.toolbar.dark[vf-25fd9c]{background-color:#222;color:#ccc}.toolbar.dark[vf-25fd9c] .split-line{background:#666}.toolbar.dark[vf-25fd9c] .btn.active,.toolbar.dark[vf-25fd9c] .btn:hover{background-color:hsla(0,0%,100%,.2)}.xnote-at{color:#296eff;display:inline-block;line-height:1em}.xnote-at-complete{background-color:#296eff;border-radius:1em;color:#fff;font-size:.9em;margin-left:2px;margin-right:2px;padding:4px 6px}.xnote-at-input{display:inline-block;min-width:2em}.xnote-at-menu{user-select:none}.xnote-at-member{border-radius:4px;cursor:pointer;display:flex;height:50px;margin:4px 0;overflow:hidden;padding:5px;transition:background-color .2s;width:100%}.xnote-at-member.selected,.xnote-at-member:hover{background:#eee}.xnote-at-member-avatar{align-items:center;display:flex;font-size:12px;text-align:center;width:40px}.xnote-at-member-avatar img,.xnote-at-member-avatar-bg{background:#eee;border-radius:50%;display:inline-block;font-size:.9em;height:36px;line-height:36px;overflow:hidden;width:36px}.xnote-at-member-info{flex:1;font-size:14px;padding-left:10px;width:156px}.xnote-at-member-desc,.xnote-at-member-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xnote-at-member-desc{font-size:12px;opacity:.7}.xnote-root{color:#1f2329}.xnote-root * ::selection{background:rgba(20,99,252,.34)}.xnote-content{color:initial;font-family:initial;font-size:medium;line-height:1.65}.xnote-content:before{content:attr(data-placeholder);opacity:.5;position:absolute}.xnote-table{margin-bottom:16px;margin-top:16px}.xnote-table-inner{display:inline-block;max-width:100%;position:relative}.xnote-table-content{background:hsla(0,0%,100%,.8);border-collapse:collapse;border-spacing:0;table-layout:fixed;width:0}.xnote-table-content.hide-selection * ::selection{background:none}.xnote-table-content td{border:1px solid #ddd;box-sizing:content-box;padding:0 10px}.xnote-table-container,.xnote-table-wrapper{position:relative}.xnote-table-delete-btn{background:#eee;border:none;border-radius:4px;color:#5c6370;cursor:pointer;height:30px;line-height:30px;width:24px}.xnote-table-delete-btn:hover{color:#333}.drag-line[vf-681de2]{border-color:transparent;border-style:solid;border-width:0 5px;bottom:0;box-sizing:content-box;cursor:col-resize;display:none;margin-left:-5px;position:absolute;top:0;width:2px}.drag-line[vf-681de2]:before{background:#296eff;content:"";inset:0;position:absolute}.top-bar[vf-39cb2c]{display:none;left:0;position:absolute;right:0;top:0}.top-bar.active[vf-39cb2c]{display:block}.top-delete-toolbar[vf-39cb2c]{height:0;position:relative;top:-10px}.toolbar-wrapper[vf-39cb2c]{height:60px;left:0;pointer-events:none;position:absolute;right:0;top:-60px}.insert-bar[vf-39cb2c]{box-sizing:content-box;height:30px;margin-left:-10px;margin-right:-10px;overflow:hidden;padding-left:10px;padding-right:10px;padding-top:30px}.insert-bar table[vf-39cb2c]{border-collapse:collapse;border-spacing:0;position:relative;table-layout:fixed;z-index:1}.insert-bar table td[vf-39cb2c]{border:1px solid transparent;box-sizing:border-box;height:18px;position:relative}.insert-bar table .tool-container[vf-39cb2c]{height:18px}.insert-bar table .tool-container>div[vf-39cb2c],.insert-bar table .tool-container>span[vf-39cb2c]{pointer-events:auto}.insert-bar table .insert-btn-wrap[vf-39cb2c]{cursor:pointer;height:21px;position:absolute;right:-11px;top:-2px;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]:after{background:inherit;content:"";height:10px;left:5.5px;position:absolute;top:12px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-39cb2c]{background:#296eff;transform:scale(1)}.action-bar[vf-39cb2c]{margin-top:-12px;overflow:hidden;pointer-events:auto;position:relative;z-index:0}.action-bar.active[vf-39cb2c]{display:block}.action-bar table[vf-39cb2c]{border-collapse:collapse;border-radius:4px 4px 0 0;border-spacing:0;overflow:hidden;table-layout:fixed}.action-bar table td[vf-39cb2c]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-39cb2c]:hover{background:#dedede}.action-bar table td.active[vf-39cb2c]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-39cb2c]:before{border-color:inherit;border-style:solid;border-width:0 0 0 1px;bottom:0;content:"";left:-1px;position:absolute;top:-1px}.scroll-container[vf-7bef30]{overflow-x:auto;overflow-y:hidden}.scroll-container[vf-7bef30]:hover::-webkit-scrollbar-thumb{background-color:#80848f}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.scroll-container[vf-7bef30]::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.scroll-container[vf-7bef30]:before{background-image:linear-gradient(90deg,rgba(0,0,0,.1),transparent);border-left:1px solid #ddd;left:0;z-index:1}.scroll-container[vf-7bef30]:after,.scroll-container[vf-7bef30]:before{bottom:6px;content:"";pointer-events:none;position:absolute;top:0;width:12px}.scroll-container[vf-7bef30]:after{background:linear-gradient(90deg,transparent,rgba(0,0,0,.1));border-right:1px solid #ddd;right:0}.scroll-container.left-end[vf-7bef30]:before,.scroll-container.right-end[vf-7bef30]:after{display:none}.left-bar[vf-aaece0]{display:none;left:0;margin-left:-30px;position:absolute;top:0;width:30px}.left-bar.active[vf-aaece0]{display:flex}.toolbar-item[vf-aaece0]{align-items:center;display:flex;inset:0;position:absolute}.insert-bar[vf-aaece0]{width:18px}.insert-bar table[vf-aaece0]{border-collapse:collapse;border-spacing:0;table-layout:fixed}.insert-bar table td[vf-aaece0]{border:1px solid transparent;position:relative}.insert-bar table .insert-btn-wrap[vf-aaece0]{bottom:-8px;cursor:pointer;height:21px;left:0;position:absolute;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]:after{background:inherit;content:"";height:10px;left:11px;position:absolute;top:5.5px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-aaece0]{background:#296eff;transform:scale(1)}.action-bar[vf-aaece0]{width:12px}.action-bar table[vf-aaece0]{border-collapse:collapse;border-radius:4px 0 0 4px;border-spacing:0;overflow:hidden;table-layout:fixed;width:13px}.action-bar table td[vf-aaece0]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-aaece0]:hover{background:#dedede}.action-bar table td.active[vf-aaece0]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-aaece0]:before{border-color:inherit;border-style:solid;border-width:1px 0 0;content:"";left:-1px;position:absolute;right:-1px;top:-1px}.drag-line[vf-d4c4a9]{background:#296eff;contain:layout size style;height:2px;left:0;max-width:100%;position:absolute;right:0;z-index:1}.mask[vf-4a5ad1]{background:rgba(41,110,255,.063);border:1px solid #296eff;box-sizing:content-box;display:none;pointer-events:none;position:absolute}.mask.active[vf-4a5ad1]{display:block}@font-face{font-display:block;font-family:textbus;font-style:normal;font-weight:400;src:url(fonts/textbus.ttf?oyolf2) format("truetype"),url(fonts/textbus.woff?oyolf2) format("woff"),url(fonts/textbus.svg?oyolf2#textbus) format("svg")}[class*=" xnote-icon-"],[class^=xnote-icon-]{speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:textbus!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.xnote-icon-timeline:before{content:"\e900"}.xnote-icon-step:before{content:"\e901"}.xnote-icon-arrow-left:before{content:"\e902"}.xnote-icon-arrow-right:before{content:"\e903"}.xnote-icon-arrow-top:before{content:"\e904"}.xnote-icon-arrow-bottom:before{content:"\e905"}.xnote-icon-source-code:before{content:"\e906"}.xnote-icon-insert-paragraph-after:before{content:"\e907"}.xnote-icon-insert-paragraph-before:before{content:"\e908"}.xnote-icon-plus:before{content:"\e909"}.xnote-icon-table-border:before{content:"\e90a"}.xnote-icon-table-remove:before{content:"\e90b"}.xnote-icon-function:before{content:"\e90c"}.xnote-icon-paint-bucket:before{content:"\e90d"}.xnote-icon-background-color:before{content:"\e90e"}.xnote-icon-color:before{content:"\e90f"}.xnote-icon-hightlight-box:before{content:"\e910"}.xnote-icon-table-edit:before{content:"\e911"}.xnote-icon-table-split-columns:before{content:"\e912"}.xnote-icon-align-middle:before{content:"\e913"}.xnote-icon-align-bottom:before{content:"\e914"}.xnote-icon-align-top:before{content:"\e915"}.xnote-icon-palette:before{content:"\e916"}.xnote-icon-split-cells:before{content:"\e917"}.xnote-icon-merge-cells:before{content:"\e918"}.xnote-icon-image:before{content:"\e919"}.xnote-icon-music:before{content:"\e91b"}.xnote-icon-video:before{content:"\e91c"}.xnote-icon-unlink:before{content:"\e91d"}.xnote-icon-select:before{content:"\e91e"}.xnote-icon-tree:before{content:"\e91f"}.xnote-icon-more:before{content:"\e921"}.xnote-icon-checkmark:before{content:"\e922"}.xnote-icon-text-wrap:before{content:"\e924"}.xnote-icon-heading-h1:before{content:"\e925"}.xnote-icon-heading-h2:before{content:"\e926"}.xnote-icon-heading-h3:before{content:"\e927"}.xnote-icon-heading-h4:before{content:"\e928"}.xnote-icon-heading-h5:before{content:"\e929"}.xnote-icon-heading-h6:before{content:"\e92a"}.xnote-icon-heading:before{content:"\e92b"}.xnote-icon-copy:before{content:"\e92c"}.xnote-icon-paste:before{content:"\e92d"}.xnote-icon-history-back:before{content:"\e967"}.xnote-icon-history-forward:before{content:"\e968"}.xnote-icon-quotes-right:before{content:"\e978"}.xnote-icon-bin:before{content:"\e9ac"}.xnote-icon-list-numbered:before{content:"\e9b9"}.xnote-icon-list:before{content:"\e9bb"}.xnote-icon-link:before{content:"\e9cb"}.xnote-icon-command:before{content:"\ea4e"}.xnote-icon-shift:before{content:"\ea4f"}.xnote-icon-ctrl:before{content:"\ea50"}.xnote-icon-opt:before{content:"\ea51"}.xnote-icon-checkbox-checked:before{content:"\ea52"}.xnote-icon-checkbox-unchecked:before{content:"\ea53"}.xnote-icon-cut:before{content:"\ea5a"}.xnote-icon-line-height:before{content:"\ea5f"}.xnote-icon-letter-spacing:before{content:"\ea60"}.xnote-icon-font-size:before{content:"\ea61"}.xnote-icon-bold:before{content:"\ea62"}.xnote-icon-underline:before{content:"\ea63"}.xnote-icon-italic:before{content:"\ea64"}.xnote-icon-strikethrough:before{content:"\ea65"}.xnote-icon-superscript:before{content:"\ea69"}.xnote-icon-subscript:before{content:"\ea6a"}.xnote-icon-table:before{content:"\ea71"}.xnote-icon-pilcrow:before{content:"\ea73"}.xnote-icon-ltr:before{content:"\ea74"}.xnote-icon-rtl:before{content:"\ea75"}.xnote-icon-paragraph-left:before{content:"\ea77"}.xnote-icon-paragraph-center:before{content:"\ea78"}.xnote-icon-paragraph-right:before{content:"\ea79"}.xnote-icon-paragraph-justify:before{content:"\ea7a"}.xnote-icon-indent-increase:before{content:"\ea7b"}.xnote-icon-indent-decrease:before{content:"\ea7c"}.xnote-icon-code:before{content:"\ea80"}.xnote-icon-clear-formatting:before{content:"\ea6f"}.xnote-h1{font-size:2.2em;font-weight:600}.xnote-h2{font-size:1.8em;font-weight:600}.xnote-h3{font-size:1.4em;font-weight:600}.xnote-h4{font-size:1em;font-weight:600}.xnote-h5{font-size:.9em;font-weight:600}.xnote-h6{font-size:.8em;font-weight:600}.xnote-code{border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace;margin:0 3px;padding:2px 3px}.xnote-timeline{display:block;padding-left:5px;padding-top:1em}.xnote-timeline-item{display:block;opacity:.76;padding-bottom:.5em;padding-left:1.5em;position:relative}.xnote-timeline-item:first-of-type>.xnote-timeline-line{top:1em}.xnote-timeline-item:last-of-type>.xnote-timeline-line{bottom:calc(100% - 1em)}.xnote-timeline-line{border-left:1px solid #dddee1;bottom:0;left:0;position:absolute;top:0;width:0}.xnote-timeline-icon{background-color:#fff;border:1px solid #bbbec4;border-radius:50%;box-sizing:border-box;height:9px;left:-4px;position:absolute;top:.5em;width:9px}.xnote-timeline-tools{display:none;position:absolute;right:0;top:0}.xnote-timeline-item-content>:first-child{margin-top:0}.xnote-timeline-item:hover .xnote-timeline-tools{display:block}.xnote-step{display:flex}.xnote-step-item{flex:1;position:relative}.xnote-step-item:last-child .xnote-step-item-line{display:none}.xnote-step-item.xnote-complete .xnote-step-item-line{border-top-color:#15bd9a}.xnote-step-item.xnote-complete .xnote-step-item-icon{background-color:#15bd9a}.xnote-step-item.xnote-current .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-current .xnote-step-item-icon{background-color:#1296db}.xnote-step-item.xnote-waiting .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-waiting .xnote-step-item-icon{background-color:#bbbec4}.xnote-step-item.xnote-waiting .xnote-step-item-content{opacity:.8}.xnote-step-item-header{cursor:pointer;margin-bottom:1em;position:relative}.xnote-step-item-icon{border-radius:50%;color:#fff;font-weight:500;height:1.6em;line-height:1.6em;position:relative;text-align:center;user-select:none;width:1.6em}.xnote-step-item-line{border-top:1px solid #dddee1;left:0;position:absolute;right:0;top:50%}.xnote-step-item-content{padding-right:15px}.xnote-step-title{font-size:1.2em;font-weight:500;margin:0}.xnote-step-title>small{font-weight:400;opacity:.8}.xnote-step-content{font-weight:400;margin:0}.xnote-step-tools{display:none;position:absolute;right:0;top:0}.xnote-step-item-content>:first-child{margin-top:0}.xnote-step-item:hover .xnote-step-tools{display:block}
@@ -21,4 +21,4 @@
21
21
  Updated for @stackoverflow/stacks v0.64.0
22
22
  Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
23
23
  Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
24
- */}.xnote-source-code.stackoverflow-light pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.stackoverflow-light code.hljs{padding:3px 5px}.xnote-source-code.stackoverflow-light .hljs{background:#f6f6f6;color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-subst{color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-comment{color:#656e77}.xnote-source-code.stackoverflow-light .hljs-attr,.xnote-source-code.stackoverflow-light .hljs-doctag,.xnote-source-code.stackoverflow-light .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-meta .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-section,.xnote-source-code.stackoverflow-light .hljs-selector-tag{color:#015692}.xnote-source-code.stackoverflow-light .hljs-attribute{color:#803378}.xnote-source-code.stackoverflow-light .hljs-name,.xnote-source-code.stackoverflow-light .hljs-number,.xnote-source-code.stackoverflow-light .hljs-quote,.xnote-source-code.stackoverflow-light .hljs-selector-id,.xnote-source-code.stackoverflow-light .hljs-template-tag,.xnote-source-code.stackoverflow-light .hljs-type{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-selector-class{color:#015692}.xnote-source-code.stackoverflow-light .hljs-link,.xnote-source-code.stackoverflow-light .hljs-regexp,.xnote-source-code.stackoverflow-light .hljs-selector-attr,.xnote-source-code.stackoverflow-light .hljs-string,.xnote-source-code.stackoverflow-light .hljs-symbol,.xnote-source-code.stackoverflow-light .hljs-template-variable,.xnote-source-code.stackoverflow-light .hljs-variable{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-meta,.xnote-source-code.stackoverflow-light .hljs-selector-pseudo{color:#015692}.xnote-source-code.stackoverflow-light .hljs-built_in,.xnote-source-code.stackoverflow-light .hljs-literal,.xnote-source-code.stackoverflow-light .hljs-title{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-bullet,.xnote-source-code.stackoverflow-light .hljs-code{color:#535a60}.xnote-source-code.stackoverflow-light .hljs-meta .hljs-string{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-deletion{color:#c02d2e}.xnote-source-code.stackoverflow-light .hljs-addition{color:#2f6f44}.xnote-source-code.stackoverflow-light .hljs-emphasis{font-style:italic}.xnote-source-code.stackoverflow-light .hljs-strong{font-weight:700}.xnote-source-code.vs2015 pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.vs2015 code.hljs{padding:3px 5px}.xnote-source-code.vs2015 .hljs{background:#1e1e1e;color:#dcdcdc}.xnote-source-code.vs2015 .hljs-keyword,.xnote-source-code.vs2015 .hljs-literal,.xnote-source-code.vs2015 .hljs-name,.xnote-source-code.vs2015 .hljs-symbol{color:#569cd6}.xnote-source-code.vs2015 .hljs-link{color:#569cd6;text-decoration:underline}.xnote-source-code.vs2015 .hljs-built_in,.xnote-source-code.vs2015 .hljs-type{color:#4ec9b0}.xnote-source-code.vs2015 .hljs-class,.xnote-source-code.vs2015 .hljs-number{color:#b8d7a3}.xnote-source-code.vs2015 .hljs-meta .hljs-string,.xnote-source-code.vs2015 .hljs-string{color:#d69d85}.xnote-source-code.vs2015 .hljs-regexp,.xnote-source-code.vs2015 .hljs-template-tag{color:#9a5334}.xnote-source-code.vs2015 .hljs-formula,.xnote-source-code.vs2015 .hljs-function,.xnote-source-code.vs2015 .hljs-params,.xnote-source-code.vs2015 .hljs-subst,.xnote-source-code.vs2015 .hljs-title{color:#dcdcdc}.xnote-source-code.vs2015 .hljs-comment,.xnote-source-code.vs2015 .hljs-quote{color:#57a64a;font-style:italic}.xnote-source-code.vs2015 .hljs-doctag{color:#608b4e}.xnote-source-code.vs2015 .hljs-meta,.xnote-source-code.vs2015 .hljs-meta .hljs-keyword,.xnote-source-code.vs2015 .hljs-tag{color:#9b9b9b}.xnote-source-code.vs2015 .hljs-template-variable,.xnote-source-code.vs2015 .hljs-variable{color:#bd63c5}.xnote-source-code.vs2015 .hljs-attr,.xnote-source-code.vs2015 .hljs-attribute{color:#9cdcfe}.xnote-source-code.vs2015 .hljs-section{color:gold}.xnote-source-code.vs2015 .hljs-emphasis{font-style:italic}.xnote-source-code.vs2015 .hljs-strong{font-weight:700}.xnote-source-code.vs2015 .hljs-bullet,.xnote-source-code.vs2015 .hljs-selector-attr,.xnote-source-code.vs2015 .hljs-selector-class,.xnote-source-code.vs2015 .hljs-selector-id,.xnote-source-code.vs2015 .hljs-selector-pseudo,.xnote-source-code.vs2015 .hljs-selector-tag{color:#d7ba7d}.xnote-source-code.vs2015 .hljs-addition{background-color:#144212;display:inline-block;width:100%}.xnote-source-code.vs2015 .hljs-deletion{background-color:#600;display:inline-block;width:100%}.xnote-source-code.xcode .xnote-source-code-container{border:1px solid #eee}.xnote-source-code.xcode .xnote-source-code-line-number-bg{background-color:#fafafa}.xnote-source-code.xcode pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xcode code.hljs{padding:3px 5px}.xnote-source-code.xcode .hljs{background:#fff;color:#000}.xnote-source-code.xcode .xml .hljs-meta{color:silver}.xnote-source-code.xcode .hljs-comment,.xnote-source-code.xcode .hljs-quote{color:#007400}.xnote-source-code.xcode .hljs-attribute,.xnote-source-code.xcode .hljs-keyword,.xnote-source-code.xcode .hljs-literal,.xnote-source-code.xcode .hljs-name,.xnote-source-code.xcode .hljs-selector-tag,.xnote-source-code.xcode .hljs-tag{color:#aa0d91}.xnote-source-code.xcode .hljs-template-variable,.xnote-source-code.xcode .hljs-variable{color:#3f6e74}.xnote-source-code.xcode .hljs-code,.xnote-source-code.xcode .hljs-meta .hljs-string,.xnote-source-code.xcode .hljs-string{color:#c41a16}.xnote-source-code.xcode .hljs-link,.xnote-source-code.xcode .hljs-regexp{color:#0e0eff}.xnote-source-code.xcode .hljs-bullet,.xnote-source-code.xcode .hljs-number,.xnote-source-code.xcode .hljs-symbol,.xnote-source-code.xcode .hljs-title{color:#1c00cf}.xnote-source-code.xcode .hljs-meta,.xnote-source-code.xcode .hljs-section{color:#643820}.xnote-source-code.xcode .hljs-built_in,.xnote-source-code.xcode .hljs-class .hljs-title,.xnote-source-code.xcode .hljs-params,.xnote-source-code.xcode .hljs-title.class_,.xnote-source-code.xcode .hljs-type{color:#5c2699}.xnote-source-code.xcode .hljs-attr{color:#836c28}.xnote-source-code.xcode .hljs-subst{color:#000}.xnote-source-code.xcode .hljs-formula{background-color:#eee;font-style:italic}.xnote-source-code.xcode .hljs-addition{background-color:#baeeba}.xnote-source-code.xcode .hljs-deletion{background-color:#ffc8bd}.xnote-source-code.xcode .hljs-selector-class,.xnote-source-code.xcode .hljs-selector-id{color:#9b703f}.xnote-source-code.xcode .hljs-doctag,.xnote-source-code.xcode .hljs-strong{font-weight:700}.xnote-source-code.xcode .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark .hljs{background:#182324;color:#a9aeb2}.xnote-source-code.xnote-dark .hljs-comment,.xnote-source-code.xnote-dark .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark .hljs-doctag,.xnote-source-code.xnote-dark .hljs-formula,.xnote-source-code.xnote-dark .hljs-keyword{color:#71b155;font-weight:700}.xnote-source-code.xnote-dark .hljs-deletion,.xnote-source-code.xnote-dark .hljs-section,.xnote-source-code.xnote-dark .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark .hljs-literal{color:#388138}.xnote-source-code.xnote-dark .hljs-addition,.xnote-source-code.xnote-dark .hljs-attribute,.xnote-source-code.xnote-dark .hljs-meta .hljs-string,.xnote-source-code.xnote-dark .hljs-regexp,.xnote-source-code.xnote-dark .hljs-string{color:#dd7600}.xnote-source-code.xnote-dark .hljs-number,.xnote-source-code.xnote-dark .hljs-selector-attr,.xnote-source-code.xnote-dark .hljs-selector-class,.xnote-source-code.xnote-dark .hljs-selector-pseudo,.xnote-source-code.xnote-dark .hljs-template-variable,.xnote-source-code.xnote-dark .hljs-type,.xnote-source-code.xnote-dark .hljs-variable{color:#388138}.xnote-source-code.xnote-dark .hljs-bullet,.xnote-source-code.xnote-dark .hljs-link,.xnote-source-code.xnote-dark .hljs-meta,.xnote-source-code.xnote-dark .hljs-name,.xnote-source-code.xnote-dark .hljs-selector-id,.xnote-source-code.xnote-dark .hljs-subst,.xnote-source-code.xnote-dark .hljs-symbol,.xnote-source-code.xnote-dark .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark .hljs-built_in,.xnote-source-code.xnote-dark .hljs-class .hljs-title,.xnote-source-code.xnote-dark .hljs-title.class_{color:#e6c07b}.xnote-source-code.xnote-dark .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark .hljs-link{text-decoration:underline}.xnote-source-code.xnote-dark-blue pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark-blue code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark-blue .hljs{background:#1c222a;color:#a9aeb2}.xnote-source-code.xnote-dark-blue .hljs-comment,.xnote-source-code.xnote-dark-blue .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-doctag,.xnote-source-code.xnote-dark-blue .hljs-formula,.xnote-source-code.xnote-dark-blue .hljs-keyword{color:#0086b3;font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-deletion,.xnote-source-code.xnote-dark-blue .hljs-section,.xnote-source-code.xnote-dark-blue .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark-blue .hljs-literal{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-addition,.xnote-source-code.xnote-dark-blue .hljs-attribute,.xnote-source-code.xnote-dark-blue .hljs-meta .hljs-string,.xnote-source-code.xnote-dark-blue .hljs-regexp,.xnote-source-code.xnote-dark-blue .hljs-string{color:#ce5a70}.xnote-source-code.xnote-dark-blue .hljs-number,.xnote-source-code.xnote-dark-blue .hljs-selector-attr,.xnote-source-code.xnote-dark-blue .hljs-selector-class,.xnote-source-code.xnote-dark-blue .hljs-selector-pseudo,.xnote-source-code.xnote-dark-blue .hljs-template-variable,.xnote-source-code.xnote-dark-blue .hljs-type,.xnote-source-code.xnote-dark-blue .hljs-variable{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-bullet,.xnote-source-code.xnote-dark-blue .hljs-link,.xnote-source-code.xnote-dark-blue .hljs-meta,.xnote-source-code.xnote-dark-blue .hljs-name,.xnote-source-code.xnote-dark-blue .hljs-selector-id,.xnote-source-code.xnote-dark-blue .hljs-subst,.xnote-source-code.xnote-dark-blue .hljs-symbol,.xnote-source-code.xnote-dark-blue .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark-blue .hljs-built_in,.xnote-source-code.xnote-dark-blue .hljs-class .hljs-title,.xnote-source-code.xnote-dark-blue .hljs-title.class_{color:#399fcf}.xnote-source-code.xnote-dark-blue .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-link{text-decoration:underline}.xnote-source-code code{background:none;border:none;border-radius:0;padding:0;vertical-align:inherit}.xnote-source-code{margin-bottom:16px;margin-top:16px;position:relative}.xnote-source-code-container{border-radius:5px;display:flex;line-height:1.418em;overflow:hidden;position:relative}.xnote-source-code-container.xnote-source-code-auto-break .xnote-source-code-line{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}code,kbd,pre,samp{font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace}.xnote-source-code-line-number-bg{background-color:inherit;display:none;position:relative;width:3em;z-index:2}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line-number-bg{display:block}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line{margin-left:-4em}.xnote-source-code-content{counter-reset:codeNum;flex:1;font-size:15px;margin:0;max-height:450px;overflow:auto;padding:15px 0;position:relative}.xnote-source-code-content:hover::-webkit-scrollbar-thumb{background-color:#80848f}.xnote-source-code-content::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.xnote-source-code-content::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.xnote-source-code-content::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.xnote-source-code-content-highlight .xnote-source-code-line{opacity:.36}.xnote-source-code-line{display:flex;margin:2px 0}.xnote-source-code-line-content{display:block;padding:0 20px}.xnote-source-code-line-number .xnote-source-code-line-content{padding:0 20px 0 10px}.xnote-source-code-line-number .xnote-source-code-line:before{box-sizing:border-box;content:counter(codeNum);counter-increment:codeNum;left:0;min-width:4em;opacity:.5;overflow:hidden;padding-right:10px;position:sticky;text-align:right;transform:translateX(-4em);white-space:nowrap;z-index:2}.xnote-source-code-content-highlight .xnote-source-code-line-emphasize{opacity:1}.xnote-source-code-lang{font-size:13px;opacity:.5;padding:4px 10px;pointer-events:none;position:absolute;right:0;top:0}.xnote-paragraph{margin:8px 0}.xnote-blockquote{border-left:2px solid #296eff;margin:1em 0;padding:0 15px}.xnote-blockquote>:first-child{margin-top:0}.xnote-blockquote>:last-child{margin-bottom:0}.xnote-highlight-box{background:#fcf5ce;border:1px solid #f5c774;border-radius:4px;display:flex;margin:16px 0}.xnote-highlight-box-left{padding-top:.65em;text-align:center;width:40px}.xnote-highlight-box-content{flex:1;width:0}.xnote-highlight-box-icon button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.2em;height:30px;padding:0;width:30px}.xnote-highlight-box-icon button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-icons{text-align:left}.xnote-highlight-box-icons button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:22px;height:30px;padding:0;width:30px}.xnote-highlight-box-icons button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-content{padding:5px}.xnote-highlight-box-heading{font-size:14px;opacity:.8;padding:10px 0 10px 3px}.xnote-image{display:inline-block}.xnote-image,.xnote-image img,.xnote-video{max-width:100%}.xnote-video{display:inline-block}.xnote-video video{max-width:100%}.xnote-todolist{align-items:center;display:flex;margin:8px 0}.xnote-todolist-icon{color:#296eff;cursor:pointer;margin-right:6px}.xnote-todolist-content{min-width:2em}.xnote-todolist-content[style*=text-indent]{text-indent:0!important}.xnote-todolist-content[style*=text-align]{text-align:left!important}.xnote-list{margin:8px 0;padding:0}.xnote-list>li{display:flex}.xnote-list-content{min-width:2em}ul.xnote-list .xnote-list-type{font-family:initial;font-size:16px}.xnote-list-type{box-sizing:border-box;color:#296eff;flex-shrink:0;text-align:left;text-indent:0;white-space:nowrap;width:24px}.xnote-order-btn{padding-left:5px}.xnote-list-content[style*=text-indent]{text-indent:0!important}.xnote-list-content[style*=text-align]{text-align:left!important}.btn-group[vf-cf8e1c]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-cf8e1c]{margin:2px 5px}@import "~katex/dist/katex.min.css";.katex,.katex-display,.katex-html,.xnote-katex{display:inline-block}.xnote-katex{margin-left:.5em;margin-right:.5em}.xnote-katex-input{inset:0;min-height:300px;position:absolute;width:590px}.xnote-katex-input .xnote-source-code{margin:0;overflow:hidden;user-select:text}.xnote-katex-input .xnote-source-code-container{border:0!important;height:100%}.xnote-katex-input .xnote-source-code-content{box-sizing:border-box;max-height:none;min-height:300px;overflow:hidden}.input-group[vf-e74208]{display:flex;padding:5px 10px}.input-group input[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px;margin-right:5px;outline:none;padding:2px 6px}.input-group input[vf-e74208]:focus{border-color:#296eff}.input-group button[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px}.split-line[vf-669084]{background:#ddd;margin:8px 5px;width:1px}.left-toolbar[vf-b05292]{font-size:15px;left:-10px;position:absolute;top:0;z-index:10}.left-toolbar-btn-wrap[vf-b05292]{position:absolute;transition:all .2s}.left-toolbar-btn[vf-b05292]{background:#fff;border:1px solid #ddd;border-radius:5px;cursor:pointer;height:26px}.left-toolbar-btn span[vf-b05292]{align-items:center;display:inline-flex}.btn-group[vf-b05292]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-b05292]{margin:2px 5px}.link-jump-plugin[vf-3073ba]{background-color:#333;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.3);color:#ddd;font-size:12px;line-height:1em;margin-top:-30px;padding:6px 0;position:absolute;text-align:center;text-decoration:none;transform:translateX(-50%);width:66px}.link-jump-plugin a[vf-3073ba],.link-jump-plugin span[vf-3073ba]{color:inherit;cursor:pointer;margin-left:2px;margin-right:2px;text-decoration:none}.link-jump-plugin a[vf-3073ba]:hover,.link-jump-plugin span[vf-3073ba]:hover{color:#296eff}.link-jump-plugin[vf-3073ba]:after{border:6px solid transparent;border-top-color:#333;content:"";left:50%;margin-left:-6px;pointer-events:none;position:absolute;top:100%}.toolbar[vf-33b3ca]{background-color:#fff;border:1px solid #dee0e3;border-radius:5px;box-shadow:0 4px 8px rgba(0,0,0,.08);box-sizing:border-box;display:flex;font-size:13px;height:36px;opacity:0;padding:0 6px;pointer-events:none;position:absolute;text-align:left;transform:translateX(-50%);transition-duration:.4s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.dark[vf-33b3ca]{background-color:#222;color:#ccc}.toolbar.dark[vf-33b3ca] .split-line{background:#666}.toolbar.dark[vf-33b3ca] .btn.active,.toolbar.dark[vf-33b3ca] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-42c12d]{border-radius:inherit;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 15px;position:relative;text-align:left;top:0;z-index:3}.toolbar.dark[vf-42c12d]{background-color:#222;color:#ccc}.toolbar.dark[vf-42c12d] .split-line{background:#666}.toolbar.dark[vf-42c12d] .btn.active,.toolbar.dark[vf-42c12d] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-25fd9c]{background:#fff;border:1px solid #dee0e3;border-radius:5px;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 10px;position:relative;text-align:left;top:0;transition-duration:.15s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.suspension[vf-25fd9c]{box-shadow:0 4px 8px rgba(0,0,0,.08)}.toolbar.dark[vf-25fd9c]{background-color:#222;color:#ccc}.toolbar.dark[vf-25fd9c] .split-line{background:#666}.toolbar.dark[vf-25fd9c] .btn.active,.toolbar.dark[vf-25fd9c] .btn:hover{background-color:hsla(0,0%,100%,.2)}.xnote-at{color:#296eff;display:inline-block;line-height:1em}.xnote-at-complete{background-color:#296eff;border-radius:1em;color:#fff;font-size:.9em;margin-left:2px;margin-right:2px;padding:4px 6px}.xnote-at-input{display:inline-block;min-width:2em}.xnote-at-menu{user-select:none}.xnote-at-member{border-radius:4px;cursor:pointer;display:flex;height:50px;margin:4px 0;overflow:hidden;padding:5px;transition:background-color .2s;width:100%}.xnote-at-member.selected,.xnote-at-member:hover{background:#eee}.xnote-at-member-avatar{align-items:center;display:flex;font-size:12px;text-align:center;width:40px}.xnote-at-member-avatar img,.xnote-at-member-avatar-bg{background:#eee;border-radius:50%;display:inline-block;font-size:.9em;height:36px;line-height:36px;overflow:hidden;width:36px}.xnote-at-member-info{flex:1;font-size:14px;padding-left:10px;width:156px}.xnote-at-member-desc,.xnote-at-member-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xnote-at-member-desc{font-size:12px;opacity:.7}.xnote-root{color:#1f2329}.xnote-root * ::selection{background:rgba(20,99,252,.34)}.xnote-content{color:initial;font-family:initial;font-size:medium;line-height:1.65}.xnote-content:before{content:attr(data-placeholder);opacity:.5;position:absolute}.xnote-table{margin-bottom:16px;margin-top:16px}.xnote-table-inner{display:inline-block;max-width:100%;position:relative}.xnote-table-content{background:hsla(0,0%,100%,.8);border-collapse:collapse;border-spacing:0;table-layout:fixed;width:0}.xnote-table-content.hide-selection * ::selection{background:none}.xnote-table-content td{border:1px solid #ddd;box-sizing:content-box;padding:0 10px}.xnote-table-container,.xnote-table-wrapper{position:relative}.xnote-table-delete-btn{background:#eee;border:none;border-radius:4px;color:#5c6370;cursor:pointer;height:30px;line-height:30px;width:24px}.xnote-table-delete-btn:hover{color:#333}.drag-line[vf-681de2]{border-color:transparent;border-style:solid;border-width:0 5px;bottom:0;box-sizing:content-box;cursor:col-resize;display:none;margin-left:-5px;position:absolute;top:0;width:2px}.drag-line[vf-681de2]:before{background:#296eff;content:"";inset:0;position:absolute}.top-bar[vf-39cb2c]{display:none;left:0;position:absolute;right:0;top:0}.top-bar.active[vf-39cb2c]{display:block}.top-delete-toolbar[vf-39cb2c]{height:0;position:relative;top:-10px}.toolbar-wrapper[vf-39cb2c]{height:60px;left:0;pointer-events:none;position:absolute;right:0;top:-60px}.insert-bar[vf-39cb2c]{box-sizing:content-box;height:30px;margin-left:-10px;margin-right:-10px;overflow:hidden;padding-left:10px;padding-right:10px;padding-top:30px}.insert-bar table[vf-39cb2c]{border-collapse:collapse;border-spacing:0;position:relative;table-layout:fixed;z-index:1}.insert-bar table td[vf-39cb2c]{border:1px solid transparent;box-sizing:border-box;height:18px;position:relative}.insert-bar table .tool-container[vf-39cb2c]{height:18px}.insert-bar table .tool-container>div[vf-39cb2c],.insert-bar table .tool-container>span[vf-39cb2c]{pointer-events:auto}.insert-bar table .insert-btn-wrap[vf-39cb2c]{cursor:pointer;height:21px;position:absolute;right:-11px;top:-2px;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]:after{background:inherit;content:"";height:10px;left:5.5px;position:absolute;top:12px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-39cb2c]{background:#296eff;transform:scale(1)}.action-bar[vf-39cb2c]{margin-top:-12px;overflow:hidden;pointer-events:auto;position:relative;z-index:0}.action-bar.active[vf-39cb2c]{display:block}.action-bar table[vf-39cb2c]{border-collapse:collapse;border-radius:4px 4px 0 0;border-spacing:0;overflow:hidden;table-layout:fixed}.action-bar table td[vf-39cb2c]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-39cb2c]:hover{background:#dedede}.action-bar table td.active[vf-39cb2c]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-39cb2c]:before{border-color:inherit;border-style:solid;border-width:0 0 0 1px;bottom:0;content:"";left:-1px;position:absolute;top:-1px}.scroll-container[vf-7bef30]{overflow-x:auto;overflow-y:hidden}.scroll-container[vf-7bef30]:hover::-webkit-scrollbar-thumb{background-color:#80848f}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.scroll-container[vf-7bef30]::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.scroll-container[vf-7bef30]:before{background-image:linear-gradient(90deg,rgba(0,0,0,.1),transparent);border-left:1px solid #ddd;left:0;z-index:1}.scroll-container[vf-7bef30]:after,.scroll-container[vf-7bef30]:before{bottom:6px;content:"";pointer-events:none;position:absolute;top:0;width:12px}.scroll-container[vf-7bef30]:after{background:linear-gradient(90deg,transparent,rgba(0,0,0,.1));border-right:1px solid #ddd;right:0}.scroll-container.left-end[vf-7bef30]:before,.scroll-container.right-end[vf-7bef30]:after{display:none}.left-bar[vf-aaece0]{display:none;left:0;margin-left:-30px;position:absolute;top:0;width:30px}.left-bar.active[vf-aaece0]{display:flex}.toolbar-item[vf-aaece0]{align-items:center;display:flex;inset:0;position:absolute}.insert-bar[vf-aaece0]{width:18px}.insert-bar table[vf-aaece0]{border-collapse:collapse;border-spacing:0;table-layout:fixed}.insert-bar table td[vf-aaece0]{border:1px solid transparent;position:relative}.insert-bar table .insert-btn-wrap[vf-aaece0]{bottom:-8px;cursor:pointer;height:21px;left:0;position:absolute;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]:after{background:inherit;content:"";height:10px;left:11px;position:absolute;top:5.5px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-aaece0]{background:#296eff;transform:scale(1)}.action-bar[vf-aaece0]{width:12px}.action-bar table[vf-aaece0]{border-collapse:collapse;border-radius:4px 0 0 4px;border-spacing:0;overflow:hidden;table-layout:fixed;width:13px}.action-bar table td[vf-aaece0]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-aaece0]:hover{background:#dedede}.action-bar table td.active[vf-aaece0]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-aaece0]:before{border-color:inherit;border-style:solid;border-width:1px 0 0;content:"";left:-1px;position:absolute;right:-1px;top:-1px}.drag-line[vf-d4c4a9]{background:#296eff;contain:layout size style;height:2px;left:0;max-width:100%;position:absolute;right:0;z-index:1}.mask[vf-4a5ad1]{background:rgba(41,110,255,.063);border:1px solid #296eff;box-sizing:content-box;display:none;pointer-events:none;position:absolute}.mask.active[vf-4a5ad1]{display:block}@font-face{font-display:block;font-family:textbus;font-style:normal;font-weight:400;src:url(fonts/textbus.ttf?oyolf2) format("truetype"),url(fonts/textbus.woff?oyolf2) format("woff"),url(fonts/textbus.svg?oyolf2#textbus) format("svg")}[class*=" xnote-icon-"],[class^=xnote-icon-]{speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:textbus!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.xnote-icon-timeline:before{content:"\e900"}.xnote-icon-step:before{content:"\e901"}.xnote-icon-arrow-left:before{content:"\e902"}.xnote-icon-arrow-right:before{content:"\e903"}.xnote-icon-arrow-top:before{content:"\e904"}.xnote-icon-arrow-bottom:before{content:"\e905"}.xnote-icon-source-code:before{content:"\e906"}.xnote-icon-insert-paragraph-after:before{content:"\e907"}.xnote-icon-insert-paragraph-before:before{content:"\e908"}.xnote-icon-plus:before{content:"\e909"}.xnote-icon-table-border:before{content:"\e90a"}.xnote-icon-table-remove:before{content:"\e90b"}.xnote-icon-function:before{content:"\e90c"}.xnote-icon-paint-bucket:before{content:"\e90d"}.xnote-icon-background-color:before{content:"\e90e"}.xnote-icon-color:before{content:"\e90f"}.xnote-icon-hightlight-box:before{content:"\e910"}.xnote-icon-table-edit:before{content:"\e911"}.xnote-icon-table-split-columns:before{content:"\e912"}.xnote-icon-align-middle:before{content:"\e913"}.xnote-icon-align-bottom:before{content:"\e914"}.xnote-icon-align-top:before{content:"\e915"}.xnote-icon-palette:before{content:"\e916"}.xnote-icon-split-cells:before{content:"\e917"}.xnote-icon-merge-cells:before{content:"\e918"}.xnote-icon-image:before{content:"\e919"}.xnote-icon-music:before{content:"\e91b"}.xnote-icon-video:before{content:"\e91c"}.xnote-icon-unlink:before{content:"\e91d"}.xnote-icon-select:before{content:"\e91e"}.xnote-icon-tree:before{content:"\e91f"}.xnote-icon-more:before{content:"\e921"}.xnote-icon-checkmark:before{content:"\e922"}.xnote-icon-text-wrap:before{content:"\e924"}.xnote-icon-heading-h1:before{content:"\e925"}.xnote-icon-heading-h2:before{content:"\e926"}.xnote-icon-heading-h3:before{content:"\e927"}.xnote-icon-heading-h4:before{content:"\e928"}.xnote-icon-heading-h5:before{content:"\e929"}.xnote-icon-heading-h6:before{content:"\e92a"}.xnote-icon-heading:before{content:"\e92b"}.xnote-icon-copy:before{content:"\e92c"}.xnote-icon-paste:before{content:"\e92d"}.xnote-icon-history-back:before{content:"\e967"}.xnote-icon-history-forward:before{content:"\e968"}.xnote-icon-quotes-right:before{content:"\e978"}.xnote-icon-bin:before{content:"\e9ac"}.xnote-icon-list-numbered:before{content:"\e9b9"}.xnote-icon-list:before{content:"\e9bb"}.xnote-icon-link:before{content:"\e9cb"}.xnote-icon-command:before{content:"\ea4e"}.xnote-icon-shift:before{content:"\ea4f"}.xnote-icon-ctrl:before{content:"\ea50"}.xnote-icon-opt:before{content:"\ea51"}.xnote-icon-checkbox-checked:before{content:"\ea52"}.xnote-icon-checkbox-unchecked:before{content:"\ea53"}.xnote-icon-cut:before{content:"\ea5a"}.xnote-icon-line-height:before{content:"\ea5f"}.xnote-icon-letter-spacing:before{content:"\ea60"}.xnote-icon-font-size:before{content:"\ea61"}.xnote-icon-bold:before{content:"\ea62"}.xnote-icon-underline:before{content:"\ea63"}.xnote-icon-italic:before{content:"\ea64"}.xnote-icon-strikethrough:before{content:"\ea65"}.xnote-icon-superscript:before{content:"\ea69"}.xnote-icon-subscript:before{content:"\ea6a"}.xnote-icon-table:before{content:"\ea71"}.xnote-icon-pilcrow:before{content:"\ea73"}.xnote-icon-ltr:before{content:"\ea74"}.xnote-icon-rtl:before{content:"\ea75"}.xnote-icon-paragraph-left:before{content:"\ea77"}.xnote-icon-paragraph-center:before{content:"\ea78"}.xnote-icon-paragraph-right:before{content:"\ea79"}.xnote-icon-paragraph-justify:before{content:"\ea7a"}.xnote-icon-indent-increase:before{content:"\ea7b"}.xnote-icon-indent-decrease:before{content:"\ea7c"}.xnote-icon-code:before{content:"\ea80"}.xnote-icon-clear-formatting:before{content:"\ea6f"}.xnote-h1{font-size:2.2em;font-weight:600}.xnote-h2{font-size:1.8em;font-weight:600}.xnote-h3{font-size:1.4em;font-weight:600}.xnote-h4{font-size:1em;font-weight:600}.xnote-h5{font-size:.9em;font-weight:600}.xnote-h6{font-size:.8em;font-weight:600}.xnote-code{border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace;margin:0 3px;padding:2px 3px}.xnote-timeline{display:block;padding-left:5px;padding-top:1em}.xnote-timeline-item{display:block;opacity:.76;padding-bottom:.5em;padding-left:1.5em;position:relative}.xnote-timeline-item:first-of-type>.xnote-timeline-line{top:1em}.xnote-timeline-item:last-of-type>.xnote-timeline-line{bottom:calc(100% - 1em)}.xnote-timeline-line{border-left:1px solid #dddee1;bottom:0;left:0;position:absolute;top:0;width:0}.xnote-timeline-icon{background-color:#fff;border:1px solid #bbbec4;border-radius:50%;box-sizing:border-box;height:9px;left:-4px;position:absolute;top:.5em;width:9px}.xnote-timeline-tools{display:none;position:absolute;right:0;top:0}.xnote-timeline-item-content>:first-child{margin-top:0}.xnote-timeline-item:hover .xnote-timeline-tools{display:block}.xnote-step{display:flex}.xnote-step-item{flex:1;position:relative}.xnote-step-item:last-child .xnote-step-item-line{display:none}.xnote-step-item.xnote-complete .xnote-step-item-line{border-top-color:#15bd9a}.xnote-step-item.xnote-complete .xnote-step-item-icon{background-color:#15bd9a}.xnote-step-item.xnote-current .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-current .xnote-step-item-icon{background-color:#1296db}.xnote-step-item.xnote-waiting .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-waiting .xnote-step-item-icon{background-color:#bbbec4}.xnote-step-item.xnote-waiting .xnote-step-item-content{opacity:.8}.xnote-step-item-header{cursor:pointer;margin-bottom:1em;position:relative}.xnote-step-item-icon{border-radius:50%;color:#fff;font-weight:500;height:1.6em;line-height:1.6em;position:relative;text-align:center;width:1.6em}.xnote-step-item-line{border-top:1px solid #dddee1;left:0;position:absolute;right:0;top:50%}.xnote-step-item-content{padding-right:15px}.xnote-step-title{font-size:1.2em;font-weight:500;margin:0}.xnote-step-title>small{font-weight:400;opacity:.8}.xnote-step-content{font-weight:400;margin:0}.xnote-step-tools{display:none;position:absolute;right:0;top:0}.xnote-step-item-content>:first-child{margin-top:0}.xnote-step-item:hover .xnote-step-tools{display:block}
24
+ */}.xnote-source-code.stackoverflow-light pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.stackoverflow-light code.hljs{padding:3px 5px}.xnote-source-code.stackoverflow-light .hljs{background:#f6f6f6;color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-subst{color:#2f3337}.xnote-source-code.stackoverflow-light .hljs-comment{color:#656e77}.xnote-source-code.stackoverflow-light .hljs-attr,.xnote-source-code.stackoverflow-light .hljs-doctag,.xnote-source-code.stackoverflow-light .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-meta .hljs-keyword,.xnote-source-code.stackoverflow-light .hljs-section,.xnote-source-code.stackoverflow-light .hljs-selector-tag{color:#015692}.xnote-source-code.stackoverflow-light .hljs-attribute{color:#803378}.xnote-source-code.stackoverflow-light .hljs-name,.xnote-source-code.stackoverflow-light .hljs-number,.xnote-source-code.stackoverflow-light .hljs-quote,.xnote-source-code.stackoverflow-light .hljs-selector-id,.xnote-source-code.stackoverflow-light .hljs-template-tag,.xnote-source-code.stackoverflow-light .hljs-type{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-selector-class{color:#015692}.xnote-source-code.stackoverflow-light .hljs-link,.xnote-source-code.stackoverflow-light .hljs-regexp,.xnote-source-code.stackoverflow-light .hljs-selector-attr,.xnote-source-code.stackoverflow-light .hljs-string,.xnote-source-code.stackoverflow-light .hljs-symbol,.xnote-source-code.stackoverflow-light .hljs-template-variable,.xnote-source-code.stackoverflow-light .hljs-variable{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-meta,.xnote-source-code.stackoverflow-light .hljs-selector-pseudo{color:#015692}.xnote-source-code.stackoverflow-light .hljs-built_in,.xnote-source-code.stackoverflow-light .hljs-literal,.xnote-source-code.stackoverflow-light .hljs-title{color:#b75501}.xnote-source-code.stackoverflow-light .hljs-bullet,.xnote-source-code.stackoverflow-light .hljs-code{color:#535a60}.xnote-source-code.stackoverflow-light .hljs-meta .hljs-string{color:#54790d}.xnote-source-code.stackoverflow-light .hljs-deletion{color:#c02d2e}.xnote-source-code.stackoverflow-light .hljs-addition{color:#2f6f44}.xnote-source-code.stackoverflow-light .hljs-emphasis{font-style:italic}.xnote-source-code.stackoverflow-light .hljs-strong{font-weight:700}.xnote-source-code.vs2015 pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.vs2015 code.hljs{padding:3px 5px}.xnote-source-code.vs2015 .hljs{background:#1e1e1e;color:#dcdcdc}.xnote-source-code.vs2015 .hljs-keyword,.xnote-source-code.vs2015 .hljs-literal,.xnote-source-code.vs2015 .hljs-name,.xnote-source-code.vs2015 .hljs-symbol{color:#569cd6}.xnote-source-code.vs2015 .hljs-link{color:#569cd6;text-decoration:underline}.xnote-source-code.vs2015 .hljs-built_in,.xnote-source-code.vs2015 .hljs-type{color:#4ec9b0}.xnote-source-code.vs2015 .hljs-class,.xnote-source-code.vs2015 .hljs-number{color:#b8d7a3}.xnote-source-code.vs2015 .hljs-meta .hljs-string,.xnote-source-code.vs2015 .hljs-string{color:#d69d85}.xnote-source-code.vs2015 .hljs-regexp,.xnote-source-code.vs2015 .hljs-template-tag{color:#9a5334}.xnote-source-code.vs2015 .hljs-formula,.xnote-source-code.vs2015 .hljs-function,.xnote-source-code.vs2015 .hljs-params,.xnote-source-code.vs2015 .hljs-subst,.xnote-source-code.vs2015 .hljs-title{color:#dcdcdc}.xnote-source-code.vs2015 .hljs-comment,.xnote-source-code.vs2015 .hljs-quote{color:#57a64a;font-style:italic}.xnote-source-code.vs2015 .hljs-doctag{color:#608b4e}.xnote-source-code.vs2015 .hljs-meta,.xnote-source-code.vs2015 .hljs-meta .hljs-keyword,.xnote-source-code.vs2015 .hljs-tag{color:#9b9b9b}.xnote-source-code.vs2015 .hljs-template-variable,.xnote-source-code.vs2015 .hljs-variable{color:#bd63c5}.xnote-source-code.vs2015 .hljs-attr,.xnote-source-code.vs2015 .hljs-attribute{color:#9cdcfe}.xnote-source-code.vs2015 .hljs-section{color:gold}.xnote-source-code.vs2015 .hljs-emphasis{font-style:italic}.xnote-source-code.vs2015 .hljs-strong{font-weight:700}.xnote-source-code.vs2015 .hljs-bullet,.xnote-source-code.vs2015 .hljs-selector-attr,.xnote-source-code.vs2015 .hljs-selector-class,.xnote-source-code.vs2015 .hljs-selector-id,.xnote-source-code.vs2015 .hljs-selector-pseudo,.xnote-source-code.vs2015 .hljs-selector-tag{color:#d7ba7d}.xnote-source-code.vs2015 .hljs-addition{background-color:#144212;display:inline-block;width:100%}.xnote-source-code.vs2015 .hljs-deletion{background-color:#600;display:inline-block;width:100%}.xnote-source-code.xcode .xnote-source-code-container{border:1px solid #eee}.xnote-source-code.xcode .xnote-source-code-line-number-bg{background-color:#fafafa}.xnote-source-code.xcode pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xcode code.hljs{padding:3px 5px}.xnote-source-code.xcode .hljs{background:#fff;color:#000}.xnote-source-code.xcode .xml .hljs-meta{color:silver}.xnote-source-code.xcode .hljs-comment,.xnote-source-code.xcode .hljs-quote{color:#007400}.xnote-source-code.xcode .hljs-attribute,.xnote-source-code.xcode .hljs-keyword,.xnote-source-code.xcode .hljs-literal,.xnote-source-code.xcode .hljs-name,.xnote-source-code.xcode .hljs-selector-tag,.xnote-source-code.xcode .hljs-tag{color:#aa0d91}.xnote-source-code.xcode .hljs-template-variable,.xnote-source-code.xcode .hljs-variable{color:#3f6e74}.xnote-source-code.xcode .hljs-code,.xnote-source-code.xcode .hljs-meta .hljs-string,.xnote-source-code.xcode .hljs-string{color:#c41a16}.xnote-source-code.xcode .hljs-link,.xnote-source-code.xcode .hljs-regexp{color:#0e0eff}.xnote-source-code.xcode .hljs-bullet,.xnote-source-code.xcode .hljs-number,.xnote-source-code.xcode .hljs-symbol,.xnote-source-code.xcode .hljs-title{color:#1c00cf}.xnote-source-code.xcode .hljs-meta,.xnote-source-code.xcode .hljs-section{color:#643820}.xnote-source-code.xcode .hljs-built_in,.xnote-source-code.xcode .hljs-class .hljs-title,.xnote-source-code.xcode .hljs-params,.xnote-source-code.xcode .hljs-title.class_,.xnote-source-code.xcode .hljs-type{color:#5c2699}.xnote-source-code.xcode .hljs-attr{color:#836c28}.xnote-source-code.xcode .hljs-subst{color:#000}.xnote-source-code.xcode .hljs-formula{background-color:#eee;font-style:italic}.xnote-source-code.xcode .hljs-addition{background-color:#baeeba}.xnote-source-code.xcode .hljs-deletion{background-color:#ffc8bd}.xnote-source-code.xcode .hljs-selector-class,.xnote-source-code.xcode .hljs-selector-id{color:#9b703f}.xnote-source-code.xcode .hljs-doctag,.xnote-source-code.xcode .hljs-strong{font-weight:700}.xnote-source-code.xcode .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark .hljs{background:#182324;color:#a9aeb2}.xnote-source-code.xnote-dark .hljs-comment,.xnote-source-code.xnote-dark .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark .hljs-doctag,.xnote-source-code.xnote-dark .hljs-formula,.xnote-source-code.xnote-dark .hljs-keyword{color:#71b155;font-weight:700}.xnote-source-code.xnote-dark .hljs-deletion,.xnote-source-code.xnote-dark .hljs-section,.xnote-source-code.xnote-dark .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark .hljs-literal{color:#388138}.xnote-source-code.xnote-dark .hljs-addition,.xnote-source-code.xnote-dark .hljs-attribute,.xnote-source-code.xnote-dark .hljs-meta .hljs-string,.xnote-source-code.xnote-dark .hljs-regexp,.xnote-source-code.xnote-dark .hljs-string{color:#dd7600}.xnote-source-code.xnote-dark .hljs-number,.xnote-source-code.xnote-dark .hljs-selector-attr,.xnote-source-code.xnote-dark .hljs-selector-class,.xnote-source-code.xnote-dark .hljs-selector-pseudo,.xnote-source-code.xnote-dark .hljs-template-variable,.xnote-source-code.xnote-dark .hljs-type,.xnote-source-code.xnote-dark .hljs-variable{color:#388138}.xnote-source-code.xnote-dark .hljs-bullet,.xnote-source-code.xnote-dark .hljs-link,.xnote-source-code.xnote-dark .hljs-meta,.xnote-source-code.xnote-dark .hljs-name,.xnote-source-code.xnote-dark .hljs-selector-id,.xnote-source-code.xnote-dark .hljs-subst,.xnote-source-code.xnote-dark .hljs-symbol,.xnote-source-code.xnote-dark .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark .hljs-built_in,.xnote-source-code.xnote-dark .hljs-class .hljs-title,.xnote-source-code.xnote-dark .hljs-title.class_{color:#e6c07b}.xnote-source-code.xnote-dark .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark .hljs-link{text-decoration:underline}.xnote-source-code.xnote-dark-blue pre code.hljs{display:block;overflow-x:auto;padding:1em}.xnote-source-code.xnote-dark-blue code.hljs{padding:3px 5px}.xnote-source-code.xnote-dark-blue .hljs{background:#1c222a;color:#a9aeb2}.xnote-source-code.xnote-dark-blue .hljs-comment,.xnote-source-code.xnote-dark-blue .hljs-quote{color:#5c6d6e;font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-doctag,.xnote-source-code.xnote-dark-blue .hljs-formula,.xnote-source-code.xnote-dark-blue .hljs-keyword{color:#0086b3;font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-deletion,.xnote-source-code.xnote-dark-blue .hljs-section,.xnote-source-code.xnote-dark-blue .hljs-selector-tag{color:#e06c75}.xnote-source-code.xnote-dark-blue .hljs-literal{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-addition,.xnote-source-code.xnote-dark-blue .hljs-attribute,.xnote-source-code.xnote-dark-blue .hljs-meta .hljs-string,.xnote-source-code.xnote-dark-blue .hljs-regexp,.xnote-source-code.xnote-dark-blue .hljs-string{color:#ce5a70}.xnote-source-code.xnote-dark-blue .hljs-number,.xnote-source-code.xnote-dark-blue .hljs-selector-attr,.xnote-source-code.xnote-dark-blue .hljs-selector-class,.xnote-source-code.xnote-dark-blue .hljs-selector-pseudo,.xnote-source-code.xnote-dark-blue .hljs-template-variable,.xnote-source-code.xnote-dark-blue .hljs-type,.xnote-source-code.xnote-dark-blue .hljs-variable{color:#388138}.xnote-source-code.xnote-dark-blue .hljs-bullet,.xnote-source-code.xnote-dark-blue .hljs-link,.xnote-source-code.xnote-dark-blue .hljs-meta,.xnote-source-code.xnote-dark-blue .hljs-name,.xnote-source-code.xnote-dark-blue .hljs-selector-id,.xnote-source-code.xnote-dark-blue .hljs-subst,.xnote-source-code.xnote-dark-blue .hljs-symbol,.xnote-source-code.xnote-dark-blue .hljs-title{color:#2e89c1}.xnote-source-code.xnote-dark-blue .hljs-built_in,.xnote-source-code.xnote-dark-blue .hljs-class .hljs-title,.xnote-source-code.xnote-dark-blue .hljs-title.class_{color:#399fcf}.xnote-source-code.xnote-dark-blue .hljs-emphasis{font-style:italic}.xnote-source-code.xnote-dark-blue .hljs-strong{font-weight:700}.xnote-source-code.xnote-dark-blue .hljs-link{text-decoration:underline}.xnote-source-code code{background:none;border:none;border-radius:0;padding:0;vertical-align:inherit}.xnote-source-code{margin-bottom:16px;margin-top:16px;position:relative}.xnote-source-code-container{border-radius:5px;display:flex;line-height:1.418em;overflow:hidden;position:relative}.xnote-source-code-container.xnote-source-code-auto-break .xnote-source-code-line{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}code,kbd,pre,samp{font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace}.xnote-source-code-line-number-bg{background-color:inherit;display:none;position:relative;width:3em;z-index:2}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line-number-bg{display:block}.xnote-source-code.xnote-source-code-line-number .xnote-source-code-line{margin-left:-4em}.xnote-source-code-content{counter-reset:codeNum;flex:1;font-size:15px;margin:0;max-height:450px;overflow:auto;padding:15px 0;position:relative}.xnote-source-code-content:hover::-webkit-scrollbar-thumb{background-color:#80848f}.xnote-source-code-content::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.xnote-source-code-content::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.xnote-source-code-content::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.xnote-source-code-content-highlight .xnote-source-code-line{opacity:.36}.xnote-source-code-line{display:flex;margin:2px 0}.xnote-source-code-line-content{display:block;padding:0 20px}.xnote-source-code-line-number .xnote-source-code-line-content{padding:0 20px 0 10px}.xnote-source-code-line-number .xnote-source-code-line:before{box-sizing:border-box;content:counter(codeNum);counter-increment:codeNum;left:0;min-width:4em;opacity:.5;overflow:hidden;padding-right:10px;position:sticky;text-align:right;transform:translateX(-4em);white-space:nowrap;z-index:2}.xnote-source-code-content-highlight .xnote-source-code-line-emphasize{opacity:1}.xnote-source-code-lang{font-size:13px;opacity:.5;padding:4px 10px;pointer-events:none;position:absolute;right:0;top:0}.xnote-paragraph{margin:8px 0}.xnote-blockquote{border-left:2px solid #296eff;margin:1em 0;padding:0 15px}.xnote-blockquote>:first-child{margin-top:0}.xnote-blockquote>:last-child{margin-bottom:0}.xnote-highlight-box{background:#fcf5ce;border:1px solid #f5c774;border-radius:4px;display:flex;margin:16px 0}.xnote-highlight-box-left{padding-top:.65em;text-align:center;width:40px}.xnote-highlight-box-content{flex:1;width:0}.xnote-highlight-box-icon{user-select:none}.xnote-highlight-box-icon button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.2em;height:30px;padding:0;width:30px}.xnote-highlight-box-icon button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-icons{text-align:left}.xnote-highlight-box-icons button{background:none;border:none;border-radius:4px;cursor:pointer;font-size:22px;height:30px;padding:0;width:30px}.xnote-highlight-box-icons button:hover{background:rgba(0,0,0,.1)}.xnote-highlight-box-content{padding:5px}.xnote-highlight-box-heading{font-size:14px;opacity:.8;padding:10px 0 10px 3px}.xnote-image{display:inline-block}.xnote-image,.xnote-image img,.xnote-video{max-width:100%}.xnote-video{display:inline-block}.xnote-video video{max-width:100%}.xnote-todolist{align-items:center;display:flex;margin:8px 0}.xnote-todolist-icon{color:#296eff;cursor:pointer;margin-right:6px}.xnote-todolist-content{min-width:2em}.xnote-todolist-content[style*=text-indent]{text-indent:0!important}.xnote-todolist-content[style*=text-align]{text-align:left!important}.xnote-list{margin:8px 0;padding:0}.xnote-list>li{display:flex}.xnote-list-content{min-width:2em}ul.xnote-list .xnote-list-type{font-family:initial;font-size:16px}.xnote-list-type{box-sizing:border-box;color:#296eff;flex-shrink:0;text-align:left;text-indent:0;user-select:none;white-space:nowrap;width:24px}.xnote-order-btn{padding-left:5px}.xnote-list-content[style*=text-indent]{text-indent:0!important}.xnote-list-content[style*=text-align]{text-align:left!important}.btn-group[vf-cf8e1c]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-cf8e1c]{margin:2px 5px}@import "~katex/dist/katex.min.css";.katex,.katex-display,.katex-html,.xnote-katex{display:inline-block}.xnote-katex{margin-left:.5em;margin-right:.5em}.xnote-katex-input{inset:0;min-height:300px;position:absolute;width:590px}.xnote-katex-input .xnote-source-code{margin:0;overflow:hidden;user-select:text}.xnote-katex-input .xnote-source-code-container{border:0!important;height:100%}.xnote-katex-input .xnote-source-code-content{box-sizing:border-box;max-height:none;min-height:300px;overflow:hidden}.input-group[vf-e74208]{display:flex;padding:5px 10px}.input-group input[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px;margin-right:5px;outline:none;padding:2px 6px}.input-group input[vf-e74208]:focus{border-color:#296eff}.input-group button[vf-e74208]{border:1px solid #ddd;border-radius:4px;font-size:14px}.split-line[vf-669084]{background:#ddd;margin:8px 5px;width:1px}.left-toolbar[vf-b05292]{font-size:15px;left:-10px;position:absolute;top:0;z-index:10}.left-toolbar-btn-wrap[vf-b05292]{position:absolute;transition:all .2s}.left-toolbar-btn[vf-b05292]{background:#fff;border:1px solid #ddd;border-radius:5px;cursor:pointer;height:26px}.left-toolbar-btn span[vf-b05292]{align-items:center;display:inline-flex}.btn-group[vf-b05292]{font-size:15px;padding:5px 0;text-align:center}.btn-group button[vf-b05292]{margin:2px 5px}.link-jump-plugin[vf-3073ba]{background-color:#333;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.3);color:#ddd;font-size:12px;line-height:1em;margin-top:-30px;padding:6px 0;position:absolute;text-align:center;text-decoration:none;transform:translateX(-50%);width:66px}.link-jump-plugin a[vf-3073ba],.link-jump-plugin span[vf-3073ba]{color:inherit;cursor:pointer;margin-left:2px;margin-right:2px;text-decoration:none}.link-jump-plugin a[vf-3073ba]:hover,.link-jump-plugin span[vf-3073ba]:hover{color:#296eff}.link-jump-plugin[vf-3073ba]:after{border:6px solid transparent;border-top-color:#333;content:"";left:50%;margin-left:-6px;pointer-events:none;position:absolute;top:100%}.toolbar[vf-33b3ca]{background-color:#fff;border:1px solid #dee0e3;border-radius:5px;box-shadow:0 4px 8px rgba(0,0,0,.08);box-sizing:border-box;display:flex;font-size:13px;height:36px;opacity:0;padding:0 6px;pointer-events:none;position:absolute;text-align:left;transform:translateX(-50%);transition-duration:.4s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.dark[vf-33b3ca]{background-color:#222;color:#ccc}.toolbar.dark[vf-33b3ca] .split-line{background:#666}.toolbar.dark[vf-33b3ca] .btn.active,.toolbar.dark[vf-33b3ca] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-42c12d]{border-radius:inherit;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 15px;position:relative;text-align:left;top:0;z-index:3}.toolbar.dark[vf-42c12d]{background-color:#222;color:#ccc}.toolbar.dark[vf-42c12d] .split-line{background:#666}.toolbar.dark[vf-42c12d] .btn.active,.toolbar.dark[vf-42c12d] .btn:hover{background-color:hsla(0,0%,100%,.2)}.toolbar[vf-25fd9c]{background:#fff;border:1px solid #dee0e3;border-radius:5px;box-sizing:border-box;color:#000;display:flex;font-size:13px;padding:3px 10px;position:relative;text-align:left;top:0;transition-duration:.15s;transition-property:all;transition-timing-function:ease;z-index:3}.toolbar.suspension[vf-25fd9c]{box-shadow:0 4px 8px rgba(0,0,0,.08)}.toolbar.dark[vf-25fd9c]{background-color:#222;color:#ccc}.toolbar.dark[vf-25fd9c] .split-line{background:#666}.toolbar.dark[vf-25fd9c] .btn.active,.toolbar.dark[vf-25fd9c] .btn:hover{background-color:hsla(0,0%,100%,.2)}.xnote-at{color:#296eff;display:inline-block;line-height:1em}.xnote-at-complete{background-color:#296eff;border-radius:1em;color:#fff;font-size:.9em;margin-left:2px;margin-right:2px;padding:4px 6px}.xnote-at-input{display:inline-block;min-width:2em}.xnote-at-menu{user-select:none}.xnote-at-member{border-radius:4px;cursor:pointer;display:flex;height:50px;margin:4px 0;overflow:hidden;padding:5px;transition:background-color .2s;width:100%}.xnote-at-member.selected,.xnote-at-member:hover{background:#eee}.xnote-at-member-avatar{align-items:center;display:flex;font-size:12px;text-align:center;width:40px}.xnote-at-member-avatar img,.xnote-at-member-avatar-bg{background:#eee;border-radius:50%;display:inline-block;font-size:.9em;height:36px;line-height:36px;overflow:hidden;width:36px}.xnote-at-member-info{flex:1;font-size:14px;padding-left:10px;width:156px}.xnote-at-member-desc,.xnote-at-member-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.xnote-at-member-desc{font-size:12px;opacity:.7}.xnote-root{color:#1f2329}.xnote-root * ::selection{background:rgba(20,99,252,.34)}.xnote-content{color:initial;font-family:initial;font-size:medium;line-height:1.65}.xnote-content:before{content:attr(data-placeholder);opacity:.5;position:absolute}.xnote-table{margin-bottom:16px;margin-top:16px}.xnote-table-inner{display:inline-block;max-width:100%;position:relative}.xnote-table-content{background:hsla(0,0%,100%,.8);border-collapse:collapse;border-spacing:0;table-layout:fixed;width:0}.xnote-table-content.hide-selection * ::selection{background:none}.xnote-table-content td{border:1px solid #ddd;box-sizing:content-box;padding:0 10px}.xnote-table-container,.xnote-table-wrapper{position:relative}.xnote-table-delete-btn{background:#eee;border:none;border-radius:4px;color:#5c6370;cursor:pointer;height:30px;line-height:30px;width:24px}.xnote-table-delete-btn:hover{color:#333}.drag-line[vf-681de2]{border-color:transparent;border-style:solid;border-width:0 5px;bottom:0;box-sizing:content-box;cursor:col-resize;display:none;margin-left:-5px;position:absolute;top:0;width:2px}.drag-line[vf-681de2]:before{background:#296eff;content:"";inset:0;position:absolute}.top-bar[vf-39cb2c]{display:none;left:0;position:absolute;right:0;top:0}.top-bar.active[vf-39cb2c]{display:block}.top-delete-toolbar[vf-39cb2c]{height:0;position:relative;top:-10px}.toolbar-wrapper[vf-39cb2c]{height:60px;left:0;pointer-events:none;position:absolute;right:0;top:-60px}.insert-bar[vf-39cb2c]{box-sizing:content-box;height:30px;margin-left:-10px;margin-right:-10px;overflow:hidden;padding-left:10px;padding-right:10px;padding-top:30px}.insert-bar table[vf-39cb2c]{border-collapse:collapse;border-spacing:0;position:relative;table-layout:fixed;z-index:1}.insert-bar table td[vf-39cb2c]{border:1px solid transparent;box-sizing:border-box;height:18px;position:relative}.insert-bar table .tool-container[vf-39cb2c]{height:18px}.insert-bar table .tool-container>div[vf-39cb2c],.insert-bar table .tool-container>span[vf-39cb2c]{pointer-events:auto}.insert-bar table .insert-btn-wrap[vf-39cb2c]{cursor:pointer;height:21px;position:absolute;right:-11px;top:-2px;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-39cb2c]:after{background:inherit;content:"";height:10px;left:5.5px;position:absolute;top:12px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-39cb2c]{background:#296eff;transform:scale(1)}.action-bar[vf-39cb2c]{margin-top:-12px;overflow:hidden;pointer-events:auto;position:relative;z-index:0}.action-bar.active[vf-39cb2c]{display:block}.action-bar table[vf-39cb2c]{border-collapse:collapse;border-radius:4px 4px 0 0;border-spacing:0;overflow:hidden;table-layout:fixed}.action-bar table td[vf-39cb2c]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-39cb2c]:hover{background:#dedede}.action-bar table td.active[vf-39cb2c]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-39cb2c]:before{border-color:inherit;border-style:solid;border-width:0 0 0 1px;bottom:0;content:"";left:-1px;position:absolute;top:-1px}.scroll-container[vf-7bef30]{overflow-x:auto;overflow-y:hidden}.scroll-container[vf-7bef30]:hover::-webkit-scrollbar-thumb{background-color:#80848f}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb{border:0;border-radius:4px;height:50px;outline:0;outline-offset:0}.scroll-container[vf-7bef30]::-webkit-scrollbar-thumb:hover{background-color:#495060;height:50px}.scroll-container[vf-7bef30]::-webkit-scrollbar{border-radius:3px;height:6px;width:6px}.scroll-container[vf-7bef30]:before{background-image:linear-gradient(90deg,rgba(0,0,0,.1),transparent);border-left:1px solid #ddd;left:0;z-index:1}.scroll-container[vf-7bef30]:after,.scroll-container[vf-7bef30]:before{bottom:6px;content:"";pointer-events:none;position:absolute;top:0;width:12px}.scroll-container[vf-7bef30]:after{background:linear-gradient(90deg,transparent,rgba(0,0,0,.1));border-right:1px solid #ddd;right:0}.scroll-container.left-end[vf-7bef30]:before,.scroll-container.right-end[vf-7bef30]:after{display:none}.left-bar[vf-aaece0]{display:none;left:0;margin-left:-30px;position:absolute;top:0;width:30px}.left-bar.active[vf-aaece0]{display:flex}.toolbar-item[vf-aaece0]{align-items:center;display:flex;inset:0;position:absolute}.insert-bar[vf-aaece0]{width:18px}.insert-bar table[vf-aaece0]{border-collapse:collapse;border-spacing:0;table-layout:fixed}.insert-bar table td[vf-aaece0]{border:1px solid transparent;position:relative}.insert-bar table .insert-btn-wrap[vf-aaece0]{bottom:-8px;cursor:pointer;height:21px;left:0;position:absolute;width:21px;z-index:1}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]{background:#ccc;border:none;border-radius:50%;box-shadow:none;color:#fff;cursor:inherit;font-size:16px;height:100%;line-height:20px;padding:0;position:relative;text-align:center;transform:scale(.2);transition:transform .15s;width:100%}.insert-bar table .insert-btn-wrap .insert-btn[vf-aaece0]:after{background:inherit;content:"";height:10px;left:11px;position:absolute;top:5.5px;transform:rotate(45deg);width:10px;z-index:-1}.insert-bar table .insert-btn-wrap:hover .insert-btn[vf-aaece0]{background:#296eff;transform:scale(1)}.action-bar[vf-aaece0]{width:12px}.action-bar table[vf-aaece0]{border-collapse:collapse;border-radius:4px 0 0 4px;border-spacing:0;overflow:hidden;table-layout:fixed;width:13px}.action-bar table td[vf-aaece0]{background:#eee;border:1px solid #eee;box-sizing:border-box;cursor:pointer;height:12px;position:relative}.action-bar table td[vf-aaece0]:hover{background:#dedede}.action-bar table td.active[vf-aaece0]{background:#296eff;border-color:#2358c9}.action-bar table td.active[vf-aaece0]:before{border-color:inherit;border-style:solid;border-width:1px 0 0;content:"";left:-1px;position:absolute;right:-1px;top:-1px}.drag-line[vf-d4c4a9]{background:#296eff;contain:layout size style;height:2px;left:0;max-width:100%;position:absolute;right:0;z-index:1}.mask[vf-4a5ad1]{background:rgba(41,110,255,.063);border:1px solid #296eff;box-sizing:content-box;display:none;pointer-events:none;position:absolute}.mask.active[vf-4a5ad1]{display:block}@font-face{font-display:block;font-family:textbus;font-style:normal;font-weight:400;src:url(fonts/textbus.ttf?oyolf2) format("truetype"),url(fonts/textbus.woff?oyolf2) format("woff"),url(fonts/textbus.svg?oyolf2#textbus) format("svg")}[class*=" xnote-icon-"],[class^=xnote-icon-]{speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:textbus!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.xnote-icon-timeline:before{content:"\e900"}.xnote-icon-step:before{content:"\e901"}.xnote-icon-arrow-left:before{content:"\e902"}.xnote-icon-arrow-right:before{content:"\e903"}.xnote-icon-arrow-top:before{content:"\e904"}.xnote-icon-arrow-bottom:before{content:"\e905"}.xnote-icon-source-code:before{content:"\e906"}.xnote-icon-insert-paragraph-after:before{content:"\e907"}.xnote-icon-insert-paragraph-before:before{content:"\e908"}.xnote-icon-plus:before{content:"\e909"}.xnote-icon-table-border:before{content:"\e90a"}.xnote-icon-table-remove:before{content:"\e90b"}.xnote-icon-function:before{content:"\e90c"}.xnote-icon-paint-bucket:before{content:"\e90d"}.xnote-icon-background-color:before{content:"\e90e"}.xnote-icon-color:before{content:"\e90f"}.xnote-icon-hightlight-box:before{content:"\e910"}.xnote-icon-table-edit:before{content:"\e911"}.xnote-icon-table-split-columns:before{content:"\e912"}.xnote-icon-align-middle:before{content:"\e913"}.xnote-icon-align-bottom:before{content:"\e914"}.xnote-icon-align-top:before{content:"\e915"}.xnote-icon-palette:before{content:"\e916"}.xnote-icon-split-cells:before{content:"\e917"}.xnote-icon-merge-cells:before{content:"\e918"}.xnote-icon-image:before{content:"\e919"}.xnote-icon-music:before{content:"\e91b"}.xnote-icon-video:before{content:"\e91c"}.xnote-icon-unlink:before{content:"\e91d"}.xnote-icon-select:before{content:"\e91e"}.xnote-icon-tree:before{content:"\e91f"}.xnote-icon-more:before{content:"\e921"}.xnote-icon-checkmark:before{content:"\e922"}.xnote-icon-text-wrap:before{content:"\e924"}.xnote-icon-heading-h1:before{content:"\e925"}.xnote-icon-heading-h2:before{content:"\e926"}.xnote-icon-heading-h3:before{content:"\e927"}.xnote-icon-heading-h4:before{content:"\e928"}.xnote-icon-heading-h5:before{content:"\e929"}.xnote-icon-heading-h6:before{content:"\e92a"}.xnote-icon-heading:before{content:"\e92b"}.xnote-icon-copy:before{content:"\e92c"}.xnote-icon-paste:before{content:"\e92d"}.xnote-icon-history-back:before{content:"\e967"}.xnote-icon-history-forward:before{content:"\e968"}.xnote-icon-quotes-right:before{content:"\e978"}.xnote-icon-bin:before{content:"\e9ac"}.xnote-icon-list-numbered:before{content:"\e9b9"}.xnote-icon-list:before{content:"\e9bb"}.xnote-icon-link:before{content:"\e9cb"}.xnote-icon-command:before{content:"\ea4e"}.xnote-icon-shift:before{content:"\ea4f"}.xnote-icon-ctrl:before{content:"\ea50"}.xnote-icon-opt:before{content:"\ea51"}.xnote-icon-checkbox-checked:before{content:"\ea52"}.xnote-icon-checkbox-unchecked:before{content:"\ea53"}.xnote-icon-cut:before{content:"\ea5a"}.xnote-icon-line-height:before{content:"\ea5f"}.xnote-icon-letter-spacing:before{content:"\ea60"}.xnote-icon-font-size:before{content:"\ea61"}.xnote-icon-bold:before{content:"\ea62"}.xnote-icon-underline:before{content:"\ea63"}.xnote-icon-italic:before{content:"\ea64"}.xnote-icon-strikethrough:before{content:"\ea65"}.xnote-icon-superscript:before{content:"\ea69"}.xnote-icon-subscript:before{content:"\ea6a"}.xnote-icon-table:before{content:"\ea71"}.xnote-icon-pilcrow:before{content:"\ea73"}.xnote-icon-ltr:before{content:"\ea74"}.xnote-icon-rtl:before{content:"\ea75"}.xnote-icon-paragraph-left:before{content:"\ea77"}.xnote-icon-paragraph-center:before{content:"\ea78"}.xnote-icon-paragraph-right:before{content:"\ea79"}.xnote-icon-paragraph-justify:before{content:"\ea7a"}.xnote-icon-indent-increase:before{content:"\ea7b"}.xnote-icon-indent-decrease:before{content:"\ea7c"}.xnote-icon-code:before{content:"\ea80"}.xnote-icon-clear-formatting:before{content:"\ea6f"}.xnote-h1{font-size:2.2em;font-weight:600}.xnote-h2{font-size:1.8em;font-weight:600}.xnote-h3{font-size:1.4em;font-weight:600}.xnote-h4{font-size:1em;font-weight:600}.xnote-h5{font-size:.9em;font-weight:600}.xnote-h6{font-size:.8em;font-weight:600}.xnote-code{border:1px solid rgba(0,0,0,.2);border-radius:4px;font-family:Microsoft YaHei Mono,Menlo,Monaco,Consolas,Courier New,monospace;margin:0 3px;padding:2px 3px}.xnote-timeline{display:block;padding-left:5px;padding-top:1em}.xnote-timeline-item{display:block;opacity:.76;padding-bottom:.5em;padding-left:1.5em;position:relative}.xnote-timeline-item:first-of-type>.xnote-timeline-line{top:1em}.xnote-timeline-item:last-of-type>.xnote-timeline-line{bottom:calc(100% - 1em)}.xnote-timeline-line{border-left:1px solid #dddee1;bottom:0;left:0;position:absolute;top:0;width:0}.xnote-timeline-icon{background-color:#fff;border:1px solid #bbbec4;border-radius:50%;box-sizing:border-box;height:9px;left:-4px;position:absolute;top:.5em;width:9px}.xnote-timeline-tools{display:none;position:absolute;right:0;top:0}.xnote-timeline-item-content>:first-child{margin-top:0}.xnote-timeline-item:hover .xnote-timeline-tools{display:block}.xnote-step{display:flex}.xnote-step-item{flex:1;position:relative}.xnote-step-item:last-child .xnote-step-item-line{display:none}.xnote-step-item.xnote-complete .xnote-step-item-line{border-top-color:#15bd9a}.xnote-step-item.xnote-complete .xnote-step-item-icon{background-color:#15bd9a}.xnote-step-item.xnote-current .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-current .xnote-step-item-icon{background-color:#1296db}.xnote-step-item.xnote-waiting .xnote-step-item-line{border-top-style:dashed}.xnote-step-item.xnote-waiting .xnote-step-item-icon{background-color:#bbbec4}.xnote-step-item.xnote-waiting .xnote-step-item-content{opacity:.8}.xnote-step-item-header{cursor:pointer;margin-bottom:1em;position:relative}.xnote-step-item-icon{border-radius:50%;color:#fff;font-weight:500;height:1.6em;line-height:1.6em;position:relative;text-align:center;user-select:none;width:1.6em}.xnote-step-item-line{border-top:1px solid #dddee1;left:0;position:absolute;right:0;top:50%}.xnote-step-item-content{padding-right:15px}.xnote-step-title{font-size:1.2em;font-weight:500;margin:0}.xnote-step-title>small{font-weight:400;opacity:.8}.xnote-step-content{font-weight:400;margin:0}.xnote-step-tools{display:none;position:absolute;right:0;top:0}.xnote-step-item-content>:first-child{margin-top:0}.xnote-step-item:hover .xnote-step-tools{display:block}
@@ -823,7 +823,7 @@ const Dropdown = withAnnotation({
823
823
  $render: withScopedCSS(scopedId$l, () => {
824
824
  return (jsxs("div", { class: ['dropdown', props.class], style: props.style, ref: dropdownRef, children: [jsxs("div", { class: "dropdown-btn", ref: triggerRef, children: [jsx("div", { class: ['dropdown-btn-inner', {
825
825
  'has-arrow': props.arrow
826
- }], children: props.children }), props.arrow && jsx("div", { ref: arrowRef, class: "dropdown-btn-arrow", children: jsx(Button, { arrow: true }) })] }), isShow() &&
826
+ }], children: props.children }), props.arrow && jsx("div", { ref: arrowRef, class: "dropdown-btn-arrow", children: jsx(Button, { disabled: props.disabled, arrow: true }) })] }), isShow() &&
827
827
  jsx(DropdownMenuPortal, { toLeft: props.toLeft, padding: props.padding, noTrigger: props.trigger === 'none', width: props.width, abreast: props.abreast, triggerRef: triggerRef, children: Array.isArray(props.menu) ?
828
828
  props.menu.map(menu => {
829
829
  return (jsx("div", { class: "dropdown-menu-item", onClick: () => {
@@ -4099,7 +4099,7 @@ function BoldTool() {
4099
4099
  });
4100
4100
  return () => {
4101
4101
  const vm = viewModel();
4102
- return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsx("span", { class: "xnote-icon-bold" }) });
4102
+ return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsx("span", { class: "xnote-icon-bold" }) });
4103
4103
  };
4104
4104
  }
4105
4105
 
@@ -4112,7 +4112,7 @@ function CleanFormatsTool() {
4112
4112
  ]);
4113
4113
  }
4114
4114
  return () => {
4115
- return (jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly, onClick: clean, children: jsx("span", { class: "xnote-icon-clear-formatting" }) }));
4115
+ return (jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: clean, children: jsx("span", { class: "xnote-icon-clear-formatting" }) }));
4116
4116
  };
4117
4117
  }
4118
4118
 
@@ -4138,7 +4138,7 @@ function CodeTool() {
4138
4138
  });
4139
4139
  return () => {
4140
4140
  const vm = viewModel();
4141
- return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsx("span", { class: "xnote-icon-code" }) });
4141
+ return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsx("span", { class: "xnote-icon-code" }) });
4142
4142
  };
4143
4143
  }
4144
4144
 
@@ -4238,7 +4238,7 @@ function FontFamilyTool() {
4238
4238
  const commonState = useCommonState();
4239
4239
  return () => {
4240
4240
  var _a;
4241
- const b = commonState().inSourceCode || commonState().readonly;
4241
+ const b = commonState().inSourceCode || commonState().readonly || commonState().selectEmbed;
4242
4242
  return (jsx(Dropdown, { disabled: b, onCheck: check, menu: fontFamilyOptions.map(i => {
4243
4243
  const disabled = i.value ? !i.value.split(',').map(i => isSupportFont(i.trim())).some(v => v) : false;
4244
4244
  return {
@@ -4293,7 +4293,7 @@ function FontSizeTool() {
4293
4293
  });
4294
4294
  const commonState = useCommonState();
4295
4295
  return () => {
4296
- const b = commonState().inSourceCode || commonState().readonly;
4296
+ const b = commonState().inSourceCode || commonState().readonly || commonState().selectEmbed;
4297
4297
  return (jsx(Dropdown, { disabled: b, onCheck: check, menu: fontSizeOptions.map(i => {
4298
4298
  return {
4299
4299
  label: jsx(MenuItem, { checked: currentFontSize() === i, children: i || '默认' }),
@@ -4639,7 +4639,7 @@ function InsertTool() {
4639
4639
  const commonState = useCommonState();
4640
4640
  return () => {
4641
4641
  const b = commonState().readonly;
4642
- return (jsx(Dropdown, { disabled: b, menu: jsx(InsertMenu, { replace: false, hideTitle: true, slot: selection.focusSlot }), children: jsx(Button, { disabled: b, arrow: true, children: "\u63D2\u5165" }) }));
4642
+ return (jsx(Dropdown, { disabled: b, menu: jsx(InsertMenu, { replace: false, hideTitle: false, slot: selection.focusSlot }), children: jsx(Button, { disabled: b, arrow: true, children: "\u63D2\u5165" }) }));
4643
4643
  };
4644
4644
  }
4645
4645
 
@@ -4665,7 +4665,7 @@ function ItalicTool() {
4665
4665
  const commonState = useCommonState();
4666
4666
  return () => {
4667
4667
  const vm = viewModel();
4668
- return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsx("span", { class: "xnote-icon-italic" }) });
4668
+ return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsx("span", { class: "xnote-icon-italic" }) });
4669
4669
  };
4670
4670
  }
4671
4671
 
@@ -4777,7 +4777,7 @@ function StrikeThroughTool() {
4777
4777
  const commonState = useCommonState();
4778
4778
  return () => {
4779
4779
  const vm = viewModel();
4780
- return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsx("span", { class: "xnote-icon-strikethrough" }) });
4780
+ return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsx("span", { class: "xnote-icon-strikethrough" }) });
4781
4781
  };
4782
4782
  }
4783
4783
 
@@ -4812,7 +4812,7 @@ function SubscriptTool() {
4812
4812
  }
4813
4813
  const commonState = useCommonState();
4814
4814
  return () => {
4815
- return (jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly, highlight: state().highlight, onClick: apply, children: jsx("span", { class: "xnote-icon-subscript" }) }));
4815
+ return (jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, highlight: state().highlight, onClick: apply, children: jsx("span", { class: "xnote-icon-subscript" }) }));
4816
4816
  };
4817
4817
  }
4818
4818
 
@@ -4847,7 +4847,7 @@ function SuperscriptTool() {
4847
4847
  }
4848
4848
  const commonState = useCommonState();
4849
4849
  return () => {
4850
- return (jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly, highlight: state().highlight, onClick: apply, children: jsx("span", { class: "xnote-icon-superscript" }) }));
4850
+ return (jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, highlight: state().highlight, onClick: apply, children: jsx("span", { class: "xnote-icon-superscript" }) }));
4851
4851
  };
4852
4852
  }
4853
4853
 
@@ -4967,7 +4967,7 @@ function UnderlineTool() {
4967
4967
  const commonState = useCommonState();
4968
4968
  return () => {
4969
4969
  const vm = viewModel();
4970
- return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsx("span", { class: "xnote-icon-underline" }) });
4970
+ return jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsx("span", { class: "xnote-icon-underline" }) });
4971
4971
  };
4972
4972
  }
4973
4973
 
@@ -5541,7 +5541,7 @@ const LeftToolbar = withAnnotation({
5541
5541
  }, menu: isEmptyBlock() ?
5542
5542
  jsx(InsertMenu, { replace: !needInsert, slot: activeSlot() })
5543
5543
  :
5544
- jsxs(Fragment, { children: [jsxs("div", { class: "btn-group", children: [jsx(Button, { ordinary: true, highlight: states.paragraph, onClick: () => transform('paragraph'), children: jsx("span", { class: "xnote-icon-pilcrow" }) }), jsx(Button, { ordinary: true, highlight: states.h1, onClick: () => transform('h1'), children: jsx("span", { class: "xnote-icon-heading-h1" }) }), jsx(Button, { ordinary: true, highlight: states.h2, onClick: () => transform('h2'), children: jsx("span", { class: "xnote-icon-heading-h2" }) }), jsx(Button, { ordinary: true, highlight: states.h3, onClick: () => transform('h3'), children: jsx("span", { class: "xnote-icon-heading-h3" }) }), jsx(Button, { ordinary: true, highlight: states.h4, onClick: () => transform('h4'), children: jsx("span", { class: "xnote-icon-heading-h4" }) }), jsx(Button, { ordinary: true, highlight: states.todolist, onClick: () => transform('todolist'), children: jsx("span", { class: "xnote-icon-checkbox-checked" }) }), jsx(Button, { ordinary: true, highlight: states.orderedList, onClick: () => transform('ol'), children: jsx("span", { class: "xnote-icon-list-numbered" }) }), jsx(Button, { ordinary: true, highlight: states.unorderedList, onClick: () => transform('ul'), children: jsx("span", { class: "xnote-icon-list" }) }), jsx(Button, { ordinary: true, highlight: states.blockquote, onClick: () => transform('blockquote'), children: jsx("span", { class: "xnote-icon-quotes-right" }) }), jsx(Button, { ordinary: true, highlight: states.sourceCode, onClick: () => transform('sourceCode'), children: jsx("span", { class: "xnote-icon-source-code" }) })] }), jsx(Divider, {}), jsx(AttrTool, { style: { display: 'block' }, abreast: true, slot: slot, applyBefore: applyBefore, children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-indent-decrease" }), children: "\u7F29\u8FDB\u548C\u5BF9\u9F50" }) }), jsx(TextColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-color" }), children: "\u6587\u672C\u989C\u8272" }) }), jsx(TextBackgroundColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-background-color" }), children: "\u6587\u672C\u80CC\u666F\u989C\u8272" }) }), jsx(Divider, {}), jsx(MenuItem, { onClick: copy, icon: jsx("span", { class: "xnote-icon-copy" }), children: "\u590D\u5236" }), jsx(MenuItem, { onClick: remove, icon: jsx("span", { class: "xnote-icon-bin" }), children: "\u5220\u9664" }), jsx(MenuItem, { onClick: cut, icon: jsx("span", { class: "xnote-icon-cut" }), children: "\u526A\u5207" }), jsx(Divider, {}), jsx(Dropdown, { style: { display: 'block' }, abreast: true, menu: jsx(InsertMenu, { hideTitle: true, slot: activeSlot() }), children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-plus" }), children: "\u5728\u4E0B\u9762\u6DFB\u52A0" }) })] }), children: jsx("button", { type: "button", class: "left-toolbar-btn", children: isEmptyBlock() ?
5544
+ jsxs(Fragment, { children: [jsxs("div", { class: "btn-group", children: [jsx(Button, { ordinary: true, highlight: states.paragraph, onClick: () => transform('paragraph'), children: jsx("span", { class: "xnote-icon-pilcrow" }) }), jsx(Button, { ordinary: true, highlight: states.h1, onClick: () => transform('h1'), children: jsx("span", { class: "xnote-icon-heading-h1" }) }), jsx(Button, { ordinary: true, highlight: states.h2, onClick: () => transform('h2'), children: jsx("span", { class: "xnote-icon-heading-h2" }) }), jsx(Button, { ordinary: true, highlight: states.h3, onClick: () => transform('h3'), children: jsx("span", { class: "xnote-icon-heading-h3" }) }), jsx(Button, { ordinary: true, highlight: states.h4, onClick: () => transform('h4'), children: jsx("span", { class: "xnote-icon-heading-h4" }) }), jsx(Button, { ordinary: true, highlight: states.todolist, onClick: () => transform('todolist'), children: jsx("span", { class: "xnote-icon-checkbox-checked" }) }), jsx(Button, { ordinary: true, highlight: states.orderedList, onClick: () => transform('ol'), children: jsx("span", { class: "xnote-icon-list-numbered" }) }), jsx(Button, { ordinary: true, highlight: states.unorderedList, onClick: () => transform('ul'), children: jsx("span", { class: "xnote-icon-list" }) }), jsx(Button, { ordinary: true, highlight: states.blockquote, onClick: () => transform('blockquote'), children: jsx("span", { class: "xnote-icon-quotes-right" }) }), jsx(Button, { ordinary: true, highlight: states.sourceCode, onClick: () => transform('sourceCode'), children: jsx("span", { class: "xnote-icon-source-code" }) })] }), jsx(Divider, {}), jsx(AttrTool, { style: { display: 'block' }, abreast: true, slot: slot, applyBefore: applyBefore, children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-indent-decrease" }), children: "\u7F29\u8FDB\u548C\u5BF9\u9F50" }) }), jsx(TextColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-color" }), children: "\u6587\u5B57\u989C\u8272" }) }), jsx(TextBackgroundColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-background-color" }), children: "\u6587\u5B57\u80CC\u666F\u989C\u8272" }) }), jsx(Divider, {}), jsx(MenuItem, { onClick: copy, icon: jsx("span", { class: "xnote-icon-copy" }), children: "\u590D\u5236" }), jsx(MenuItem, { onClick: remove, icon: jsx("span", { class: "xnote-icon-bin" }), children: "\u5220\u9664" }), jsx(MenuItem, { onClick: cut, icon: jsx("span", { class: "xnote-icon-cut" }), children: "\u526A\u5207" }), jsx(Divider, {}), jsx(Dropdown, { style: { display: 'block' }, abreast: true, menu: jsx(InsertMenu, { hideTitle: true, slot: activeSlot() }), children: jsx(MenuItem, { arrow: true, icon: jsx("span", { class: "xnote-icon-plus" }), children: "\u5728\u4E0B\u9762\u6DFB\u52A0" }) })] }), children: jsx("button", { type: "button", class: "left-toolbar-btn", children: isEmptyBlock() ?
5545
5545
  jsx("span", { children: jsx("i", { class: "xnote-icon-plus" }) })
5546
5546
  :
5547
5547
  jsxs("span", { children: [activeNode, jsx("i", { style: "font-size: 12px", class: "xnote-icon-more" })] }) }) }) }) }));
@@ -5672,7 +5672,9 @@ const InlineToolbar = withAnnotation({
5672
5672
  });
5673
5673
  let mouseupSubscription = new Subscription();
5674
5674
  const toolbarRef = createRef();
5675
+ const commonState = useCommonState();
5675
5676
  function getTop() {
5677
+ var _a;
5676
5678
  const docRect = viewDocument.getBoundingClientRect();
5677
5679
  // const toolbarRect = toolbarRef.current!.getBoundingClientRect()
5678
5680
  const toolbarHeight = 36;
@@ -5710,6 +5712,21 @@ const InlineToolbar = withAnnotation({
5710
5712
  });
5711
5713
  }
5712
5714
  }
5715
+ else if (commonState().selectEmbed) {
5716
+ const component = (_a = selection.startSlot) === null || _a === void 0 ? void 0 : _a.getContentAtIndex(selection.startOffset);
5717
+ if (component instanceof ImageComponent || component instanceof VideoComponent) {
5718
+ const nativeNode = adapter.getNativeNodeByComponent(component);
5719
+ if (nativeNode) {
5720
+ const rect = nativeNode.getBoundingClientRect();
5721
+ selectionFocusRect = {
5722
+ left: rect.left + rect.width / 2,
5723
+ top: rect.top,
5724
+ height: rect.height,
5725
+ width: rect.width
5726
+ };
5727
+ }
5728
+ }
5729
+ }
5713
5730
  else {
5714
5731
  selectionFocusRect = bridge.getRect({
5715
5732
  slot: selection.focusSlot,
@@ -6331,7 +6348,6 @@ class RootComponent extends Component {
6331
6348
  RootComponent.componentName = 'RootComponent';
6332
6349
  RootComponent.type = ContentType.BlockComponent;
6333
6350
  function RootView(props) {
6334
- const { content } = props.component.state;
6335
6351
  const ref = createDynamicRef(node => {
6336
6352
  const sub = props.component.onCompositionStart.subscribe(() => {
6337
6353
  node.children[0].dataset.placeholder = '';
@@ -6353,6 +6369,7 @@ function RootView(props) {
6353
6369
  }
6354
6370
  return () => {
6355
6371
  const { rootRef } = props;
6372
+ const { content } = props.component.state;
6356
6373
  return (jsx("div", { class: "xnote-root", onClick: checkContent, style: !readonly() ? {
6357
6374
  paddingBottom: '40px'
6358
6375
  } : {}, dir: "auto", ref: [rootRef, containerRef, ref], "data-component": props.component.name, children: jsx(SlotRender, { slot: content, tag: "div", class: "xnote-content", "data-placeholder": content.isEmpty ? '请输入内容' : '', renderEnv: readonly() || output() }) }));
@@ -7539,24 +7556,7 @@ class Editor extends Textbus {
7539
7556
  let rootComp;
7540
7557
  const config = this.editorConfig;
7541
7558
  if (config.content) {
7542
- const parser = this.get(Parser);
7543
- const doc = parser.parseDoc(config.content, rootComponentLoader);
7544
- if (doc instanceof Component) {
7545
- rootComp = doc;
7546
- }
7547
- else {
7548
- const content = new Slot([
7549
- ContentType.BlockComponent
7550
- ]);
7551
- if (doc instanceof Slot) {
7552
- deltaToBlock(doc.toDelta(), this).forEach(i => {
7553
- content.insert(i);
7554
- });
7555
- }
7556
- rootComp = new RootComponent(this, {
7557
- content
7558
- });
7559
- }
7559
+ rootComp = this.createModel(config.content);
7560
7560
  }
7561
7561
  else {
7562
7562
  rootComp = new RootComponent(this, {
@@ -7565,9 +7565,42 @@ class Editor extends Textbus {
7565
7565
  }
7566
7566
  return this.render(rootComp);
7567
7567
  }
7568
+ setContent(content) {
7569
+ this.guardReady();
7570
+ const newModel = this.createModel(content);
7571
+ const rootComponent = this.get(RootComponentRef).component;
7572
+ Object.assign(rootComponent.state, newModel.state);
7573
+ }
7568
7574
  getHTML() {
7569
7575
  return this.translator.transform(this.vDomAdapter.host);
7570
7576
  }
7577
+ createModel(content) {
7578
+ if (typeof content === 'string') {
7579
+ return this.createModelFromHTML(content);
7580
+ }
7581
+ return this.createModelFromState(content);
7582
+ }
7583
+ createModelFromState(state) {
7584
+ return RootComponent.fromJSON(this, state);
7585
+ }
7586
+ createModelFromHTML(html) {
7587
+ const parser = this.get(Parser);
7588
+ const doc = parser.parseDoc(html, rootComponentLoader);
7589
+ if (doc instanceof Component) {
7590
+ return doc;
7591
+ }
7592
+ const content = new Slot([
7593
+ ContentType.BlockComponent
7594
+ ]);
7595
+ if (doc instanceof Slot) {
7596
+ deltaToBlock(doc.toDelta(), this).forEach(i => {
7597
+ content.insert(i);
7598
+ });
7599
+ }
7600
+ return new RootComponent(this, {
7601
+ content
7602
+ });
7603
+ }
7571
7604
  }
7572
7605
 
7573
7606
  export { AtComponent, AtComponentView, AttrTool, BlockTool, BlockquoteComponent, BlockquoteView, BoldTool, Button, CellAlignTool, CellBackgroundTool, CleanFormatsTool, CodeTool, ColorPicker, ComponentToolbar, Divider, DragResize, Dropdown, DropdownContextService, DropdownMenuContainer, DropdownMenuPortal, DropdownService, Editor, EditorService, FileUploader, FontFamilyTool, FontSizeTool, HighlightBoxComponent, HighlightBoxView, ImageComponent, ImageView, InlineToolbar, InlineToolbarPlugin, InsertMenu, InsertTool, ItalicTool, KatexComponent, KatexComponentView, Keymap, LeftToolbar, LeftToolbarPlugin, LinkJump, LinkTool, ListComponent, ListComponentView, Matcher, MenuHeading, MenuItem, MergeCellsTool, Organization, OutputInjectionToken, ParagraphComponent, ParagraphView, Picker, Popup, RedoTool, RefreshService, RootComponent, RootView, SourceCodeComponent, SourceCodeView, SplitCellsTool, SplitLine, StaticToolbar, StaticToolbarPlugin, StrikeThroughTool, SubscriptTool, SuperscriptTool, SuspensionToolbar, SuspensionToolbarPlugin, TableComponent, TableComponentView, TextBackgroundColorTool, TextColorTool, TodolistComponent, TodolistView, ToolbarItem, UnderlineTool, UndoTool, VideoComponent, VideoView, XNoteMessageBus, atComponentLoader, backgroundColorFormatLoader, backgroundColorFormatter, blockquoteComponentLoader, boldFormatLoader, boldFormatter, cellAlignAttr, cellAlignAttrLoader, cellBackgroundAttr, cellBackgroundAttrLoader, codeFormatLoader, codeFormatter, colorFormatLoader, colorFormatter, deltaToBlock, fontFamilyFormatLoader, fontFamilyFormatter, fontSizeFormatLoader, fontSizeFormatter, headingAttr, headingAttrLoader, highlightBoxComponentLoader, imageComponentLoader, isSupportFont, italicFormatLoader, italicFormatter, katexComponentLoader, languageList, linkFormatLoader, linkFormatter, listComponentLoader, paragraphComponentLoader, registerAtShortcut, registerBlockquoteShortcut, registerBoldShortcut, registerCodeShortcut, registerHeadingShortcut, registerItalicShortcut, registerListShortcut, registerStrikeThroughShortcut, registerTextAlignShortcut, registerTextIndentShortcut, registerUnderlineShortcut, rootComponentLoader, sourceCodeComponentLoader, sourceCodeThemes, strikeThroughFormatLoader, strikeThroughFormatter, subscriptFormatLoader, subscriptFormatter, superscriptFormatLoader, superscriptFormatter, tableComponentLoader, textAlignAttr, textAlignAttrLoader, textIndentAttr, textIndentAttrLoader, toBlockquote, toList, todolistComponentLoader, toggleBold, toggleCode, toggleItalic, toggleStrikeThrough, toggleUnderline, underlineFormatLoader, underlineFormatter, useActiveBlock, useBlockContent, useBlockTransform, useOutput, useReadonly, videoComponentLoader };
package/bundles/index.js CHANGED
@@ -825,7 +825,7 @@ const Dropdown = core.withAnnotation({
825
825
  $render: scopedCss.withScopedCSS(scopedId$l, () => {
826
826
  return (jsxRuntime.jsxs("div", { class: ['dropdown', props.class], style: props.style, ref: dropdownRef, children: [jsxRuntime.jsxs("div", { class: "dropdown-btn", ref: triggerRef, children: [jsxRuntime.jsx("div", { class: ['dropdown-btn-inner', {
827
827
  'has-arrow': props.arrow
828
- }], children: props.children }), props.arrow && jsxRuntime.jsx("div", { ref: arrowRef, class: "dropdown-btn-arrow", children: jsxRuntime.jsx(Button, { arrow: true }) })] }), isShow() &&
828
+ }], children: props.children }), props.arrow && jsxRuntime.jsx("div", { ref: arrowRef, class: "dropdown-btn-arrow", children: jsxRuntime.jsx(Button, { disabled: props.disabled, arrow: true }) })] }), isShow() &&
829
829
  jsxRuntime.jsx(DropdownMenuPortal, { toLeft: props.toLeft, padding: props.padding, noTrigger: props.trigger === 'none', width: props.width, abreast: props.abreast, triggerRef: triggerRef, children: Array.isArray(props.menu) ?
830
830
  props.menu.map(menu => {
831
831
  return (jsxRuntime.jsx("div", { class: "dropdown-menu-item", onClick: () => {
@@ -4101,7 +4101,7 @@ function BoldTool() {
4101
4101
  });
4102
4102
  return () => {
4103
4103
  const vm = viewModel();
4104
- return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-bold" }) });
4104
+ return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-bold" }) });
4105
4105
  };
4106
4106
  }
4107
4107
 
@@ -4114,7 +4114,7 @@ function CleanFormatsTool() {
4114
4114
  ]);
4115
4115
  }
4116
4116
  return () => {
4117
- return (jsxRuntime.jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly, onClick: clean, children: jsxRuntime.jsx("span", { class: "xnote-icon-clear-formatting" }) }));
4117
+ return (jsxRuntime.jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: clean, children: jsxRuntime.jsx("span", { class: "xnote-icon-clear-formatting" }) }));
4118
4118
  };
4119
4119
  }
4120
4120
 
@@ -4140,7 +4140,7 @@ function CodeTool() {
4140
4140
  });
4141
4141
  return () => {
4142
4142
  const vm = viewModel();
4143
- return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-code" }) });
4143
+ return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-code" }) });
4144
4144
  };
4145
4145
  }
4146
4146
 
@@ -4240,7 +4240,7 @@ function FontFamilyTool() {
4240
4240
  const commonState = useCommonState();
4241
4241
  return () => {
4242
4242
  var _a;
4243
- const b = commonState().inSourceCode || commonState().readonly;
4243
+ const b = commonState().inSourceCode || commonState().readonly || commonState().selectEmbed;
4244
4244
  return (jsxRuntime.jsx(Dropdown, { disabled: b, onCheck: check, menu: fontFamilyOptions.map(i => {
4245
4245
  const disabled = i.value ? !i.value.split(',').map(i => isSupportFont(i.trim())).some(v => v) : false;
4246
4246
  return {
@@ -4295,7 +4295,7 @@ function FontSizeTool() {
4295
4295
  });
4296
4296
  const commonState = useCommonState();
4297
4297
  return () => {
4298
- const b = commonState().inSourceCode || commonState().readonly;
4298
+ const b = commonState().inSourceCode || commonState().readonly || commonState().selectEmbed;
4299
4299
  return (jsxRuntime.jsx(Dropdown, { disabled: b, onCheck: check, menu: fontSizeOptions.map(i => {
4300
4300
  return {
4301
4301
  label: jsxRuntime.jsx(MenuItem, { checked: currentFontSize() === i, children: i || '默认' }),
@@ -4641,7 +4641,7 @@ function InsertTool() {
4641
4641
  const commonState = useCommonState();
4642
4642
  return () => {
4643
4643
  const b = commonState().readonly;
4644
- return (jsxRuntime.jsx(Dropdown, { disabled: b, menu: jsxRuntime.jsx(InsertMenu, { replace: false, hideTitle: true, slot: selection.focusSlot }), children: jsxRuntime.jsx(Button, { disabled: b, arrow: true, children: "\u63D2\u5165" }) }));
4644
+ return (jsxRuntime.jsx(Dropdown, { disabled: b, menu: jsxRuntime.jsx(InsertMenu, { replace: false, hideTitle: false, slot: selection.focusSlot }), children: jsxRuntime.jsx(Button, { disabled: b, arrow: true, children: "\u63D2\u5165" }) }));
4645
4645
  };
4646
4646
  }
4647
4647
 
@@ -4667,7 +4667,7 @@ function ItalicTool() {
4667
4667
  const commonState = useCommonState();
4668
4668
  return () => {
4669
4669
  const vm = viewModel();
4670
- return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-italic" }) });
4670
+ return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-italic" }) });
4671
4671
  };
4672
4672
  }
4673
4673
 
@@ -4779,7 +4779,7 @@ function StrikeThroughTool() {
4779
4779
  const commonState = useCommonState();
4780
4780
  return () => {
4781
4781
  const vm = viewModel();
4782
- return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-strikethrough" }) });
4782
+ return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-strikethrough" }) });
4783
4783
  };
4784
4784
  }
4785
4785
 
@@ -4814,7 +4814,7 @@ function SubscriptTool() {
4814
4814
  }
4815
4815
  const commonState = useCommonState();
4816
4816
  return () => {
4817
- return (jsxRuntime.jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly, highlight: state().highlight, onClick: apply, children: jsxRuntime.jsx("span", { class: "xnote-icon-subscript" }) }));
4817
+ return (jsxRuntime.jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, highlight: state().highlight, onClick: apply, children: jsxRuntime.jsx("span", { class: "xnote-icon-subscript" }) }));
4818
4818
  };
4819
4819
  }
4820
4820
 
@@ -4849,7 +4849,7 @@ function SuperscriptTool() {
4849
4849
  }
4850
4850
  const commonState = useCommonState();
4851
4851
  return () => {
4852
- return (jsxRuntime.jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly, highlight: state().highlight, onClick: apply, children: jsxRuntime.jsx("span", { class: "xnote-icon-superscript" }) }));
4852
+ return (jsxRuntime.jsx(Button, { disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, highlight: state().highlight, onClick: apply, children: jsxRuntime.jsx("span", { class: "xnote-icon-superscript" }) }));
4853
4853
  };
4854
4854
  }
4855
4855
 
@@ -4969,7 +4969,7 @@ function UnderlineTool() {
4969
4969
  const commonState = useCommonState();
4970
4970
  return () => {
4971
4971
  const vm = viewModel();
4972
- return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-underline" }) });
4972
+ return jsxRuntime.jsx(Button, { highlight: vm.highlight, disabled: commonState().inSourceCode || commonState().readonly || commonState().selectEmbed, onClick: toggle, children: jsxRuntime.jsx("span", { class: "xnote-icon-underline" }) });
4973
4973
  };
4974
4974
  }
4975
4975
 
@@ -5543,7 +5543,7 @@ const LeftToolbar = core.withAnnotation({
5543
5543
  }, menu: isEmptyBlock() ?
5544
5544
  jsxRuntime.jsx(InsertMenu, { replace: !needInsert, slot: activeSlot() })
5545
5545
  :
5546
- jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { class: "btn-group", children: [jsxRuntime.jsx(Button, { ordinary: true, highlight: states.paragraph, onClick: () => transform('paragraph'), children: jsxRuntime.jsx("span", { class: "xnote-icon-pilcrow" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h1, onClick: () => transform('h1'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h1" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h2, onClick: () => transform('h2'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h2" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h3, onClick: () => transform('h3'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h3" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h4, onClick: () => transform('h4'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h4" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.todolist, onClick: () => transform('todolist'), children: jsxRuntime.jsx("span", { class: "xnote-icon-checkbox-checked" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.orderedList, onClick: () => transform('ol'), children: jsxRuntime.jsx("span", { class: "xnote-icon-list-numbered" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.unorderedList, onClick: () => transform('ul'), children: jsxRuntime.jsx("span", { class: "xnote-icon-list" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.blockquote, onClick: () => transform('blockquote'), children: jsxRuntime.jsx("span", { class: "xnote-icon-quotes-right" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.sourceCode, onClick: () => transform('sourceCode'), children: jsxRuntime.jsx("span", { class: "xnote-icon-source-code" }) })] }), jsxRuntime.jsx(Divider, {}), jsxRuntime.jsx(AttrTool, { style: { display: 'block' }, abreast: true, slot: slot, applyBefore: applyBefore, children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-indent-decrease" }), children: "\u7F29\u8FDB\u548C\u5BF9\u9F50" }) }), jsxRuntime.jsx(TextColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-color" }), children: "\u6587\u672C\u989C\u8272" }) }), jsxRuntime.jsx(TextBackgroundColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-background-color" }), children: "\u6587\u672C\u80CC\u666F\u989C\u8272" }) }), jsxRuntime.jsx(Divider, {}), jsxRuntime.jsx(MenuItem, { onClick: copy, icon: jsxRuntime.jsx("span", { class: "xnote-icon-copy" }), children: "\u590D\u5236" }), jsxRuntime.jsx(MenuItem, { onClick: remove, icon: jsxRuntime.jsx("span", { class: "xnote-icon-bin" }), children: "\u5220\u9664" }), jsxRuntime.jsx(MenuItem, { onClick: cut, icon: jsxRuntime.jsx("span", { class: "xnote-icon-cut" }), children: "\u526A\u5207" }), jsxRuntime.jsx(Divider, {}), jsxRuntime.jsx(Dropdown, { style: { display: 'block' }, abreast: true, menu: jsxRuntime.jsx(InsertMenu, { hideTitle: true, slot: activeSlot() }), children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-plus" }), children: "\u5728\u4E0B\u9762\u6DFB\u52A0" }) })] }), children: jsxRuntime.jsx("button", { type: "button", class: "left-toolbar-btn", children: isEmptyBlock() ?
5546
+ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { class: "btn-group", children: [jsxRuntime.jsx(Button, { ordinary: true, highlight: states.paragraph, onClick: () => transform('paragraph'), children: jsxRuntime.jsx("span", { class: "xnote-icon-pilcrow" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h1, onClick: () => transform('h1'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h1" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h2, onClick: () => transform('h2'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h2" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h3, onClick: () => transform('h3'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h3" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.h4, onClick: () => transform('h4'), children: jsxRuntime.jsx("span", { class: "xnote-icon-heading-h4" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.todolist, onClick: () => transform('todolist'), children: jsxRuntime.jsx("span", { class: "xnote-icon-checkbox-checked" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.orderedList, onClick: () => transform('ol'), children: jsxRuntime.jsx("span", { class: "xnote-icon-list-numbered" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.unorderedList, onClick: () => transform('ul'), children: jsxRuntime.jsx("span", { class: "xnote-icon-list" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.blockquote, onClick: () => transform('blockquote'), children: jsxRuntime.jsx("span", { class: "xnote-icon-quotes-right" }) }), jsxRuntime.jsx(Button, { ordinary: true, highlight: states.sourceCode, onClick: () => transform('sourceCode'), children: jsxRuntime.jsx("span", { class: "xnote-icon-source-code" }) })] }), jsxRuntime.jsx(Divider, {}), jsxRuntime.jsx(AttrTool, { style: { display: 'block' }, abreast: true, slot: slot, applyBefore: applyBefore, children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-indent-decrease" }), children: "\u7F29\u8FDB\u548C\u5BF9\u9F50" }) }), jsxRuntime.jsx(TextColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-color" }), children: "\u6587\u5B57\u989C\u8272" }) }), jsxRuntime.jsx(TextBackgroundColorTool, { style: { display: 'block' }, abreast: true, applyBefore: applyBefore, children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-background-color" }), children: "\u6587\u5B57\u80CC\u666F\u989C\u8272" }) }), jsxRuntime.jsx(Divider, {}), jsxRuntime.jsx(MenuItem, { onClick: copy, icon: jsxRuntime.jsx("span", { class: "xnote-icon-copy" }), children: "\u590D\u5236" }), jsxRuntime.jsx(MenuItem, { onClick: remove, icon: jsxRuntime.jsx("span", { class: "xnote-icon-bin" }), children: "\u5220\u9664" }), jsxRuntime.jsx(MenuItem, { onClick: cut, icon: jsxRuntime.jsx("span", { class: "xnote-icon-cut" }), children: "\u526A\u5207" }), jsxRuntime.jsx(Divider, {}), jsxRuntime.jsx(Dropdown, { style: { display: 'block' }, abreast: true, menu: jsxRuntime.jsx(InsertMenu, { hideTitle: true, slot: activeSlot() }), children: jsxRuntime.jsx(MenuItem, { arrow: true, icon: jsxRuntime.jsx("span", { class: "xnote-icon-plus" }), children: "\u5728\u4E0B\u9762\u6DFB\u52A0" }) })] }), children: jsxRuntime.jsx("button", { type: "button", class: "left-toolbar-btn", children: isEmptyBlock() ?
5547
5547
  jsxRuntime.jsx("span", { children: jsxRuntime.jsx("i", { class: "xnote-icon-plus" }) })
5548
5548
  :
5549
5549
  jsxRuntime.jsxs("span", { children: [activeNode, jsxRuntime.jsx("i", { style: "font-size: 12px", class: "xnote-icon-more" })] }) }) }) }) }));
@@ -5674,7 +5674,9 @@ const InlineToolbar = core.withAnnotation({
5674
5674
  });
5675
5675
  let mouseupSubscription = new core$1.Subscription();
5676
5676
  const toolbarRef = core.createRef();
5677
+ const commonState = useCommonState();
5677
5678
  function getTop() {
5679
+ var _a;
5678
5680
  const docRect = viewDocument.getBoundingClientRect();
5679
5681
  // const toolbarRect = toolbarRef.current!.getBoundingClientRect()
5680
5682
  const toolbarHeight = 36;
@@ -5712,6 +5714,21 @@ const InlineToolbar = core.withAnnotation({
5712
5714
  });
5713
5715
  }
5714
5716
  }
5717
+ else if (commonState().selectEmbed) {
5718
+ const component = (_a = selection.startSlot) === null || _a === void 0 ? void 0 : _a.getContentAtIndex(selection.startOffset);
5719
+ if (component instanceof ImageComponent || component instanceof VideoComponent) {
5720
+ const nativeNode = adapter.getNativeNodeByComponent(component);
5721
+ if (nativeNode) {
5722
+ const rect = nativeNode.getBoundingClientRect();
5723
+ selectionFocusRect = {
5724
+ left: rect.left + rect.width / 2,
5725
+ top: rect.top,
5726
+ height: rect.height,
5727
+ width: rect.width
5728
+ };
5729
+ }
5730
+ }
5731
+ }
5715
5732
  else {
5716
5733
  selectionFocusRect = bridge.getRect({
5717
5734
  slot: selection.focusSlot,
@@ -6333,7 +6350,6 @@ class RootComponent extends core$1.Component {
6333
6350
  RootComponent.componentName = 'RootComponent';
6334
6351
  RootComponent.type = core$1.ContentType.BlockComponent;
6335
6352
  function RootView(props) {
6336
- const { content } = props.component.state;
6337
6353
  const ref = core.createDynamicRef(node => {
6338
6354
  const sub = props.component.onCompositionStart.subscribe(() => {
6339
6355
  node.children[0].dataset.placeholder = '';
@@ -6355,6 +6371,7 @@ function RootView(props) {
6355
6371
  }
6356
6372
  return () => {
6357
6373
  const { rootRef } = props;
6374
+ const { content } = props.component.state;
6358
6375
  return (jsxRuntime.jsx("div", { class: "xnote-root", onClick: checkContent, style: !readonly() ? {
6359
6376
  paddingBottom: '40px'
6360
6377
  } : {}, dir: "auto", ref: [rootRef, containerRef, ref], "data-component": props.component.name, children: jsxRuntime.jsx(SlotRender, { slot: content, tag: "div", class: "xnote-content", "data-placeholder": content.isEmpty ? '请输入内容' : '', renderEnv: readonly() || output() }) }));
@@ -7541,24 +7558,7 @@ class Editor extends core$1.Textbus {
7541
7558
  let rootComp;
7542
7559
  const config = this.editorConfig;
7543
7560
  if (config.content) {
7544
- const parser = this.get(platformBrowser.Parser);
7545
- const doc = parser.parseDoc(config.content, rootComponentLoader);
7546
- if (doc instanceof core$1.Component) {
7547
- rootComp = doc;
7548
- }
7549
- else {
7550
- const content = new core$1.Slot([
7551
- core$1.ContentType.BlockComponent
7552
- ]);
7553
- if (doc instanceof core$1.Slot) {
7554
- deltaToBlock(doc.toDelta(), this).forEach(i => {
7555
- content.insert(i);
7556
- });
7557
- }
7558
- rootComp = new RootComponent(this, {
7559
- content
7560
- });
7561
- }
7561
+ rootComp = this.createModel(config.content);
7562
7562
  }
7563
7563
  else {
7564
7564
  rootComp = new RootComponent(this, {
@@ -7567,9 +7567,42 @@ class Editor extends core$1.Textbus {
7567
7567
  }
7568
7568
  return this.render(rootComp);
7569
7569
  }
7570
+ setContent(content) {
7571
+ this.guardReady();
7572
+ const newModel = this.createModel(content);
7573
+ const rootComponent = this.get(core$1.RootComponentRef).component;
7574
+ Object.assign(rootComponent.state, newModel.state);
7575
+ }
7570
7576
  getHTML() {
7571
7577
  return this.translator.transform(this.vDomAdapter.host);
7572
7578
  }
7579
+ createModel(content) {
7580
+ if (typeof content === 'string') {
7581
+ return this.createModelFromHTML(content);
7582
+ }
7583
+ return this.createModelFromState(content);
7584
+ }
7585
+ createModelFromState(state) {
7586
+ return RootComponent.fromJSON(this, state);
7587
+ }
7588
+ createModelFromHTML(html) {
7589
+ const parser = this.get(platformBrowser.Parser);
7590
+ const doc = parser.parseDoc(html, rootComponentLoader);
7591
+ if (doc instanceof core$1.Component) {
7592
+ return doc;
7593
+ }
7594
+ const content = new core$1.Slot([
7595
+ core$1.ContentType.BlockComponent
7596
+ ]);
7597
+ if (doc instanceof core$1.Slot) {
7598
+ deltaToBlock(doc.toDelta(), this).forEach(i => {
7599
+ content.insert(i);
7600
+ });
7601
+ }
7602
+ return new RootComponent(this, {
7603
+ content
7604
+ });
7605
+ }
7573
7606
  }
7574
7607
 
7575
7608
  exports.AtComponent = AtComponent;
package/index.tsx ADDED
@@ -0,0 +1,151 @@
1
+ /* eslint-disable */
2
+ import 'reflect-metadata'
3
+ import { Editor, Member, Organization } from './src/public-api'
4
+ import { SyncConnector, YWebsocketConnector } from '@textbus/collaborate'
5
+ import { FileUploader } from './src/interfaces'
6
+ import { UserInfo } from './src/xnote-message-bus'
7
+ import { StaticToolbarPlugin, SuspensionToolbarPlugin } from '@textbus/xnote'
8
+ import { VIEW_CONTAINER } from '@textbus/platform-browser'
9
+ import { createRef, onMounted } from '@viewfly/core'
10
+ import { createApp } from '@viewfly/platform-browser'
11
+ import { RootComponentRef } from '@textbus/core'
12
+
13
+ const firstNameText = '王、李、张、刘、陈、杨、黄、赵、周、吴、徐、孙、马、胡、朱、郭、何、罗、高、林'.replace(/、/g, '')
14
+ const lastNameText = '本义既为女子所生子嗣则同一女子所生子嗣组成的亲族也可以称为姓以表示其同出于一个女性始祖的这种特殊的亲属关系这是姓的另一引申义此种亲族组织强调女性始祖则当如许多学者所推拟的其最初必形成于母系氏族社会中即夫从妻居子女属于母族世系以母方计对于这种具有血缘关系的亲属组织的名称杨希枚先生主张称为姓族典籍所记姬姓姜姓嬴姓最初应皆属母系姓族姬姜则是此种母系姓族之名号进入父系氏族社会后妻从夫居子女不再属母族而归于父族世系以父方计所以母系姓族遂转为父系姓族此后父系姓族仍然使用着母系姓族的名号其四姓在东周文献中有时是指姓族之名号如国语周语下言赐姓曰姜之姓即应理解为所赐姓族之名号即姜又如左传哀公五月昭夫人孟子卒昭公娶于吴故不书姓很明显姓在这里是指吴女所属姓族之名号即姬所谓姓族之姓与作姓族名号讲的姓是一实一名属于两种概念范畴所以会发生此种混同当如杨希枚先生所言是由于名代表实积久而以实为名于是产生姬姜之类姓之名号就是姓的概念司马迁在史记中常言姓某氏没能区别古代姓与氏之不同但他所说的姓意思即是指姓族之名号妘黄帝住姬水之滨以姬为姓司马迁在史记五帝本纪中说黄帝二十五子其得姓者十四人三语中胥臣解释说黄帝之子二十五宗其得姓者十四人为十二姓姬酉祁己滕箴任荀僖姞儇衣是也惟青阳与夷鼓同己姓后来的五帝少昊颛顼喾尧舜以及夏禹商族的祖先契周族的祖先农神后稷秦族的祖先伯益等都是黄帝的后代后稷承继姬姓他的后代建立了周朝周初周天子姬发大封诸侯时其中姬姓国个姬姓位于百家姓第位由姬姓演支出个姓占百家姓总姓姓的再演化出来的姓氏更是数不胜数了炎帝居姜水之旁以姜为姓姜姓还是今天中国的许多姓氏如吕姓谢姓齐姓高姓卢姓崔姓等的重要起源之一姜姓在当今以人口排名的中国百家姓氏中居于第位妘起源于帝喾高辛氏嬴起源于少昊金天氏;姚妫同源都是起源于帝舜;姒起源于大禹此外部落首领之子亦可得姓黄帝有二十五子得姓者十四人为姬酉祁己滕任荀葴僖姞儇依十二姓其中有四人分属二姓祝融之后为己董彭秃妘曹斟芈等八姓史称祝融八姓'
15
+
16
+ function createUserName() {
17
+ const firstName = firstNameText.substr(Math.floor(Math.random() * firstNameText.length), 1)
18
+ const lastName = lastNameText.substr(Math.floor(Math.random() * lastNameText.length), 1 + Math.floor(Math.random() * 2))
19
+
20
+ return firstName + lastName
21
+ }
22
+
23
+ const username = createUserName()
24
+
25
+ function createColor() {
26
+ const fn = function () {
27
+ const s = Math.floor(Math.random() * 255).toString(16)
28
+ if (s.length === 2) {
29
+ return s
30
+ }
31
+ return '0' + s
32
+ }
33
+
34
+ return `#${fn()}${fn()}${fn()}`
35
+ }
36
+
37
+ const user: UserInfo = {
38
+ username: username,
39
+ color: createColor(),
40
+ id: Math.random().toString()
41
+ }
42
+
43
+ function sleep(delay: number) {
44
+ return new Promise<void>(resolve => {
45
+ setTimeout(() => {
46
+ resolve()
47
+ }, delay)
48
+ })
49
+ }
50
+
51
+ class Http extends Organization {
52
+ async getMembers(name: string): Promise<Member[]> {
53
+ await sleep(100)
54
+ let len = Math.floor(20 / name.length + 1)
55
+
56
+ const arr = Array.from<Member>({ length: len }).map(() => {
57
+ return {
58
+ id: 'xxx',
59
+ name: name + createUserName(),
60
+ groupName: '部门-' + createUserName(),
61
+ groupId: 'xxx',
62
+ avatar: '',
63
+ color: createColor()
64
+ }
65
+ })
66
+
67
+ if (name.length) {
68
+ arr.unshift({
69
+ id: 'xxx',
70
+ name: name,
71
+ groupName: '部门-' + createUserName(),
72
+ groupId: 'xxx',
73
+ avatar: '',
74
+ color: createColor()
75
+ })
76
+ }
77
+
78
+ return Promise.resolve(arr)
79
+ }
80
+
81
+ atMember(member: Member) {
82
+ //
83
+ }
84
+ }
85
+
86
+ const editor = new Editor({
87
+ readonly: false,
88
+ // content: document.getElementById('article')!.innerHTML,
89
+ collaborateConfig: {
90
+ userinfo: user,
91
+ createConnector(yDoc): SyncConnector {
92
+ return new YWebsocketConnector('ws://localhost:1234', 'xnote', yDoc)
93
+ // return new YWebsocketConnector('wss://textbus.io/api', 'xnote', yDoc)
94
+ }
95
+ },
96
+ // plugins: [
97
+ // new SuspensionToolbarPlugin()
98
+ // ],
99
+ providers: [
100
+ {
101
+ provide: Organization,
102
+ useValue: new Http()
103
+ },
104
+ {
105
+ provide: FileUploader,
106
+ useValue: {
107
+ uploadFile(type: string) {
108
+ console.log(type)
109
+ }
110
+ }
111
+ }
112
+ ]
113
+ })
114
+
115
+ function App() {
116
+ const editorRef = createRef<HTMLElement>()
117
+ const htmlRef = createRef<HTMLTextAreaElement>()
118
+
119
+ onMounted(() => {
120
+ editor.mount(editorRef.current!).then(() => {
121
+ const root = editor.get(RootComponentRef).component
122
+ root.changeMarker.onChange.subscribe(op => {
123
+ console.log(op)
124
+ })
125
+ })
126
+ })
127
+ return () => {
128
+ return (
129
+ <div>
130
+ <div style={{
131
+ display: 'flex',
132
+ height: '60px',
133
+ }}>
134
+ <button type="button" onClick={() => {
135
+ const html = editor.getHTML()
136
+ htmlRef.current!.value = html
137
+ }}>获取 HTML</button>
138
+ <textarea name="" id="" ref={htmlRef} cols="30" rows="10"></textarea>
139
+ <button type="button" onClick={() => {
140
+ const html = htmlRef.current!.value
141
+ editor.setContent(html)
142
+ }}>设置 HTML</button>
143
+ </div>
144
+ <div ref={editorRef}></div>
145
+ </div>
146
+ )
147
+ }
148
+ }
149
+
150
+ createApp(<App/>).mount(document.getElementById('app')!)
151
+
package/lerna.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "packages": [
3
+ "./"
4
+ ],
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "version": "0.2.6"
9
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@textbus/xnote",
3
- "version": "0.2.6",
3
+ "version": "0.3.0",
4
4
  "description": "A high-performance rich text editor that supports multiplayer online collaboration.",
5
5
  "main": "./bundles/index.js",
6
6
  "module": "./bundles/index.esm.js",
@@ -27,14 +27,14 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@tanbo/color": "^0.1.1",
30
- "@textbus/adapter-viewfly": "^4.3.0",
31
- "@textbus/collaborate": "^4.3.0",
32
- "@textbus/core": "^4.3.0",
33
- "@textbus/platform-browser": "^4.3.0",
34
- "@viewfly/core": "^1.1.1",
35
- "@viewfly/hooks": "^1.1.1",
36
- "@viewfly/platform-browser": "^1.1.1",
37
- "@viewfly/scoped-css": "^1.1.1",
30
+ "@textbus/adapter-viewfly": "^4.3.1",
31
+ "@textbus/collaborate": "^4.3.1",
32
+ "@textbus/core": "^4.3.1",
33
+ "@textbus/platform-browser": "^4.3.1",
34
+ "@viewfly/core": "^1.1.2",
35
+ "@viewfly/hooks": "^1.1.2",
36
+ "@viewfly/platform-browser": "^1.1.5",
37
+ "@viewfly/scoped-css": "^1.1.2",
38
38
  "highlight.js": "^11.9.0",
39
39
  "katex": "^0.16.10",
40
40
  "uuid": "^10.0.0"
@@ -47,7 +47,7 @@
47
47
  "@types/uuid": "^10.0.0",
48
48
  "@typescript-eslint/eslint-plugin": "^5.8.0",
49
49
  "@typescript-eslint/parser": "^5.8.0",
50
- "@viewfly/devtools": "^1.1.1",
50
+ "@viewfly/devtools": "^1.1.4",
51
51
  "autoprefixer": "^10.4.0",
52
52
  "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
53
53
  "core-js": "^3.20.1",
@@ -60,9 +60,9 @@
60
60
  "file-loader": "^6.2.0",
61
61
  "html-webpack-plugin": "^5.5.0",
62
62
  "ip": "^2.0.1",
63
+ "lerna": "^8.1.9",
63
64
  "less": "^4.1.3",
64
65
  "less-loader": "^11.1.3",
65
- "lerna": "^8.1.8",
66
66
  "mini-css-extract-plugin": "^2.4.5",
67
67
  "postcss": "^8.4.38",
68
68
  "postcss-loader": "^7.3.3",