mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	Merge remote-tracking branch 'origin/develop' into feature/note_tab_icons
This commit is contained in:
		
						commit
						55e78f25ef
					
				
							
								
								
									
										
											BIN
										
									
								
								db/demo.zip
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								db/demo.zip
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										9
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -18,7 +18,7 @@
 | 
				
			|||||||
        "async-mutex": "0.5.0",
 | 
					        "async-mutex": "0.5.0",
 | 
				
			||||||
        "autocomplete.js": "0.38.1",
 | 
					        "autocomplete.js": "0.38.1",
 | 
				
			||||||
        "axios": "1.7.7",
 | 
					        "axios": "1.7.7",
 | 
				
			||||||
        "better-sqlite3": "11.3.0",
 | 
					        "better-sqlite3": "11.6.0",
 | 
				
			||||||
        "bootstrap": "5.3.3",
 | 
					        "bootstrap": "5.3.3",
 | 
				
			||||||
        "boxicons": "2.1.4",
 | 
					        "boxicons": "2.1.4",
 | 
				
			||||||
        "chokidar": "3.6.0",
 | 
					        "chokidar": "3.6.0",
 | 
				
			||||||
@ -5076,10 +5076,11 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/better-sqlite3": {
 | 
					    "node_modules/better-sqlite3": {
 | 
				
			||||||
      "version": "11.3.0",
 | 
					      "version": "11.6.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.3.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.6.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-iHt9j8NPYF3oKCNOO5ZI4JwThjt3Z6J6XrcwG85VNMVzv1ByqrHWv5VILEbCMFWDsoHhXvQ7oC8vgRXFAKgl9w==",
 | 
					      "integrity": "sha512-2J6k/eVxcFYY2SsTxsXrj6XylzHWPxveCn4fKPKZFv/Vqn/Cd7lOuX4d7rGQXT5zL+97MkNL3nSbCrIoe3LkgA==",
 | 
				
			||||||
      "hasInstallScript": true,
 | 
					      "hasInstallScript": true,
 | 
				
			||||||
 | 
					      "license": "MIT",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "bindings": "^1.5.0",
 | 
					        "bindings": "^1.5.0",
 | 
				
			||||||
        "prebuild-install": "^7.1.1"
 | 
					        "prebuild-install": "^7.1.1"
 | 
				
			||||||
 | 
				
			|||||||
@ -60,7 +60,7 @@
 | 
				
			|||||||
    "async-mutex": "0.5.0",
 | 
					    "async-mutex": "0.5.0",
 | 
				
			||||||
    "autocomplete.js": "0.38.1",
 | 
					    "autocomplete.js": "0.38.1",
 | 
				
			||||||
    "axios": "1.7.7",
 | 
					    "axios": "1.7.7",
 | 
				
			||||||
    "better-sqlite3": "11.3.0",
 | 
					    "better-sqlite3": "11.6.0",
 | 
				
			||||||
    "bootstrap": "5.3.3",
 | 
					    "bootstrap": "5.3.3",
 | 
				
			||||||
    "boxicons": "2.1.4",
 | 
					    "boxicons": "2.1.4",
 | 
				
			||||||
    "chokidar": "3.6.0",
 | 
					    "chokidar": "3.6.0",
 | 
				
			||||||
 | 
				
			|||||||
@ -49,7 +49,7 @@ const TPL = `
 | 
				
			|||||||
                        <div class="form-check">
 | 
					                        <div class="form-check">
 | 
				
			||||||
                            <label class="form-check-label">
 | 
					                            <label class="form-check-label">
 | 
				
			||||||
                                <input class="form-check-input" type="radio" name="export-subtree-format" value="html">
 | 
					                                <input class="form-check-input" type="radio" name="export-subtree-format" value="html">
 | 
				
			||||||
                                ${t('export.format_html')}
 | 
					                                ${t('export.format_html_zip')}
 | 
				
			||||||
                            </label>
 | 
					                            </label>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -43,7 +43,7 @@ export default class NoteWrapperWidget extends FlexContainer {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.$widget.toggleClass("full-content-width",
 | 
					        this.$widget.toggleClass("full-content-width",
 | 
				
			||||||
            ['image', 'mermaid', 'book', 'render', 'canvas', 'webView'].includes(note.type)
 | 
					            ['image', 'mermaid', 'book', 'render', 'canvas', 'webView', 'mindMap'].includes(note.type)
 | 
				
			||||||
            || !!note?.isLabelTruthy('fullContentWidth')
 | 
					            || !!note?.isLabelTruthy('fullContentWidth')
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -146,7 +146,7 @@ export default class PromotedAttributesWidget extends NoteContextAwareWidget {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    async createPromotedAttributeCell(definitionAttr, valueAttr, valueName) {
 | 
					    async createPromotedAttributeCell(definitionAttr, valueAttr, valueName) {
 | 
				
			||||||
        const definition = definitionAttr.getDefinition();
 | 
					        const definition = definitionAttr.getDefinition();
 | 
				
			||||||
        const id = `value-${this.noteId}-${definitionAttr.position}`;
 | 
					        const id = `value-${valueAttr.attributeId}`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const $input = $("<input>")
 | 
					        const $input = $("<input>")
 | 
				
			||||||
            .prop("tabindex", 200 + definitionAttr.position)
 | 
					            .prop("tabindex", 200 + definitionAttr.position)
 | 
				
			||||||
 | 
				
			|||||||
@ -54,7 +54,7 @@ const TPL = `
 | 
				
			|||||||
        cursor: text !important;
 | 
					        cursor: text !important;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    .note-detail-editable-text *:not(figure,.include-note):first-child {
 | 
					    .note-detail-editable-text *:not(figure, .include-note, hr):first-child {
 | 
				
			||||||
        margin-top: 0 !important;
 | 
					        margin-top: 0 !important;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
         
 | 
					         
 | 
				
			||||||
 | 
				
			|||||||
@ -62,14 +62,14 @@ export default class CodeMimeTypesOptions extends OptionsWidget {
 | 
				
			|||||||
        const groupedMimeTypes = groupMimeTypesAlphabetically(ungroupedMimeTypes);
 | 
					        const groupedMimeTypes = groupMimeTypesAlphabetically(ungroupedMimeTypes);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Plain text is displayed at the top intentionally.
 | 
					        // Plain text is displayed at the top intentionally.
 | 
				
			||||||
        this.$mimeTypes.append(buildSelectionForMimeType(plainTextMimeType));
 | 
					        this.$mimeTypes.append(buildSelectionForMimeType.call(this, plainTextMimeType));
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        for (const [ initial, mimeTypes ] of Object.entries(groupedMimeTypes)) {
 | 
					        for (const [ initial, mimeTypes ] of Object.entries(groupedMimeTypes)) {
 | 
				
			||||||
            const $section = $("<section>");
 | 
					            const $section = $("<section>");
 | 
				
			||||||
            $section.append($("<h5>").text(initial));            
 | 
					            $section.append($("<h5>").text(initial));            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (const mimeType of mimeTypes) {
 | 
					            for (const mimeType of mimeTypes) {
 | 
				
			||||||
                $section.append(buildSelectionForMimeType(mimeType));
 | 
					                $section.append(buildSelectionForMimeType.call(this, mimeType));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            this.$mimeTypes.append($section);
 | 
					            this.$mimeTypes.append($section);
 | 
				
			||||||
 | 
				
			|||||||
@ -135,6 +135,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   --launcher-pane-background-color: #e8e8e8;
 | 
					   --launcher-pane-background-color: #e8e8e8;
 | 
				
			||||||
   --launcher-pane-horizontal-background-color: #fafafa;
 | 
					   --launcher-pane-horizontal-background-color: #fafafa;
 | 
				
			||||||
 | 
					   --launcher-pane-horizontal-border-color: rgba(0, 0, 0, 0.1);
 | 
				
			||||||
   --launcher-pane-text-color: #000000bd;
 | 
					   --launcher-pane-text-color: #000000bd;
 | 
				
			||||||
   --launcher-pane-button-hover-color: black;
 | 
					   --launcher-pane-button-hover-color: black;
 | 
				
			||||||
   --launcher-pane-button-hover-background: white;
 | 
					   --launcher-pane-button-hover-background: white;
 | 
				
			||||||
@ -169,7 +170,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
   --scrollbar-border-color: #ddd;
 | 
					   --scrollbar-border-color: #ddd;
 | 
				
			||||||
   --scrollbar-background-color: #ddd;
 | 
					   --scrollbar-background-color: #ddd;
 | 
				
			||||||
   --tooltip-background-color: #f8f8f8;
 | 
					 | 
				
			||||||
   --link-color: blue;
 | 
					   --link-color: blue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   --mermaid-theme: default;
 | 
					   --mermaid-theme: default;
 | 
				
			||||||
@ -182,6 +182,16 @@
 | 
				
			|||||||
   --card-border-color: #eaeaea;
 | 
					   --card-border-color: #eaeaea;
 | 
				
			||||||
   --card-shadow-color: rgba(0, 0, 0, 0.1);
 | 
					   --card-shadow-color: rgba(0, 0, 0, 0.1);
 | 
				
			||||||
   --card-box-shadow: 0 0 12px var(--card-shadow-color);
 | 
					   --card-box-shadow: 0 0 12px var(--card-shadow-color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   --calendar-color: var(--menu-text-color);
 | 
				
			||||||
 | 
					   --calendar-weekday-labels-color: var(--muted-text-color);
 | 
				
			||||||
 | 
					   --calendar-day-hover-color: var(--hover-item-text-color);
 | 
				
			||||||
 | 
					   --calendar-day-hover-background: var(--active-item-background-color);
 | 
				
			||||||
 | 
					   --calendar-day-highlight-background: #80808024;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   --tooltip-border-color: transparent;
 | 
				
			||||||
 | 
					   --tooltip-background-color: rgba(0, 0, 0, 0.8);
 | 
				
			||||||
 | 
					   --tooltip-foreground-color: #fff;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 
 | 
					/* 
 | 
				
			||||||
@ -195,7 +205,8 @@
 | 
				
			|||||||
        --main-background-color: #333;
 | 
					        --main-background-color: #333;
 | 
				
			||||||
        --main-text-color: #ccc;        
 | 
					        --main-text-color: #ccc;        
 | 
				
			||||||
        --main-border-color: #454545;
 | 
					        --main-border-color: #454545;
 | 
				
			||||||
        --dropdown-border-color: #555;
 | 
					        --subtle-border-color: #313131;
 | 
				
			||||||
 | 
					        --dropdown-border-color: #292929;
 | 
				
			||||||
        --dropdown-shadow-opacity: .6;
 | 
					        --dropdown-shadow-opacity: .6;
 | 
				
			||||||
        --dropdown-item-icon-destructive-color: #de6e5b;
 | 
					        --dropdown-item-icon-destructive-color: #de6e5b;
 | 
				
			||||||
        --disabled-tooltip-icon-color: #7fd2ef;
 | 
					        --disabled-tooltip-icon-color: #7fd2ef;
 | 
				
			||||||
@ -266,6 +277,8 @@
 | 
				
			|||||||
        --left-pane-item-selected-action-button-hover-shadow: 2px 2px 10px rgba(0, 0, 0, .25);
 | 
					        --left-pane-item-selected-action-button-hover-shadow: 2px 2px 10px rgba(0, 0, 0, .25);
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
        --launcher-pane-background-color: #1a1a1a;
 | 
					        --launcher-pane-background-color: #1a1a1a;
 | 
				
			||||||
 | 
					        --launcher-pane-horizontal-background-color: #282828;
 | 
				
			||||||
 | 
					        --launcher-pane-horizontal-border-color: rgb(22, 22, 22);
 | 
				
			||||||
        --launcher-pane-text-color: #909090;
 | 
					        --launcher-pane-text-color: #909090;
 | 
				
			||||||
        --launcher-pane-button-hover-color: #ffffff;
 | 
					        --launcher-pane-button-hover-color: #ffffff;
 | 
				
			||||||
        --launcher-pane-button-hover-background: #ffffff1c;
 | 
					        --launcher-pane-button-hover-background: #ffffff1c;
 | 
				
			||||||
@ -294,7 +307,6 @@
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
        --scrollbar-border-color: #666;
 | 
					        --scrollbar-border-color: #666;
 | 
				
			||||||
        --scrollbar-background-color: #333;
 | 
					        --scrollbar-background-color: #333;
 | 
				
			||||||
        --tooltip-background-color: #333;
 | 
					 | 
				
			||||||
        --link-color: lightskyblue;
 | 
					        --link-color: lightskyblue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        --mermaid-theme: dark;
 | 
					        --mermaid-theme: dark;
 | 
				
			||||||
@ -306,6 +318,15 @@
 | 
				
			|||||||
        --card-background-press-color: #464646;
 | 
					        --card-background-press-color: #464646;
 | 
				
			||||||
        --card-border-color: #222222;
 | 
					        --card-border-color: #222222;
 | 
				
			||||||
        --card-box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
 | 
					        --card-box-shadow: 0 0 12px rgba(0, 0, 0, 0.15);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        --calendar-color: var(--menu-text-color);
 | 
				
			||||||
 | 
					        --calendar-weekday-labels-color: var(--muted-text-color);
 | 
				
			||||||
 | 
					        --calendar-day-hover-color: var(--hover-item-text-color);
 | 
				
			||||||
 | 
					        --calendar-day-hover-background: var(--active-item-background-color);
 | 
				
			||||||
 | 
					        --calendar-day-highlight-background: #8080805a;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        --tooltip-background: rgba(0, 0, 0, 0.9);
 | 
				
			||||||
 | 
					        --tooltip-foreground: #fff;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    body ::-webkit-calendar-picker-indicator {
 | 
					    body ::-webkit-calendar-picker-indicator {
 | 
				
			||||||
@ -378,7 +399,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#launcher-pane.horizontal {
 | 
					#launcher-pane.horizontal {
 | 
				
			||||||
    height: var(--launcher-pane-size) !important;
 | 
					    height: var(--launcher-pane-size) !important;
 | 
				
			||||||
    border-bottom: 1px solid var(--subtle-border-color);
 | 
					    border-bottom: 1px solid var(--launcher-pane-horizontal-border-color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#launcher-pane .launcher-button,
 | 
					#launcher-pane .launcher-button,
 | 
				
			||||||
@ -425,13 +446,24 @@
 | 
				
			|||||||
    --hover-item-background-color: transparent;
 | 
					    --hover-item-background-color: transparent;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					.tooltip .tooltip-arrow {
 | 
				
			||||||
 * Left pane
 | 
					    display: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tooltip-inner {
 | 
				
			||||||
 | 
					    padding: 5px 10px !important;
 | 
				
			||||||
 | 
					    border-radius: 8px;
 | 
				
			||||||
 | 
					    border: 1px solid var(--tooltip-border-color) !important;
 | 
				
			||||||
 | 
					    color: var(--tooltip-foreground-color) !important;
 | 
				
			||||||
 | 
					    line-height: 1.25;
 | 
				
			||||||
 | 
					    box-shadow: none !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /* 
 | 
				
			||||||
 | 
					  * Search Box
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 /* Search Box */
 | 
					div.quick-search {
 | 
				
			||||||
 | 
					 | 
				
			||||||
#left-pane .quick-search {
 | 
					 | 
				
			||||||
    --padding-top: 8px;
 | 
					    --padding-top: 8px;
 | 
				
			||||||
    --padding-left: 8px;
 | 
					    --padding-left: 8px;
 | 
				
			||||||
    --padding-right: 8px;
 | 
					    --padding-right: 8px;
 | 
				
			||||||
@ -445,7 +477,7 @@
 | 
				
			|||||||
    padding: var(--padding-top) var(--padding-right) var(--padding-bottom) var(--padding-left);
 | 
					    padding: var(--padding-top) var(--padding-right) var(--padding-bottom) var(--padding-left);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search::before {
 | 
					div.quick-search::before {
 | 
				
			||||||
    /* The background rectangle of the search box */
 | 
					    /* The background rectangle of the search box */
 | 
				
			||||||
    position: absolute;
 | 
					    position: absolute;
 | 
				
			||||||
    content: "";
 | 
					    content: "";
 | 
				
			||||||
@ -460,34 +492,34 @@
 | 
				
			|||||||
    transition: background-color 200ms ease-in;
 | 
					    transition: background-color 200ms ease-in;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search:hover:before {
 | 
					div.quick-search:hover:before {
 | 
				
			||||||
    /* Hovered search box background rectangle */
 | 
					    /* Hovered search box background rectangle */
 | 
				
			||||||
    background: var(--quick-search-hover-background);
 | 
					    background: var(--quick-search-hover-background);
 | 
				
			||||||
    transition: background-color 75ms ease-out;
 | 
					    transition: background-color 75ms ease-out;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search:focus-within:before {
 | 
					div.quick-search:focus-within:before {
 | 
				
			||||||
    /* Focused search box background rectangle */
 | 
					    /* Focused search box background rectangle */
 | 
				
			||||||
    border-color: var(--quick-search-focus-border);
 | 
					    border-color: var(--quick-search-focus-border);
 | 
				
			||||||
    background: var(--quick-search-focus-background);
 | 
					    background: var(--quick-search-focus-background);
 | 
				
			||||||
    transition: background-color 100ms ease-out;
 | 
					    transition: background-color 100ms ease-out;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search input {
 | 
					div.quick-search input {
 | 
				
			||||||
    padding-left: 15px;
 | 
					    padding-left: 15px !important;
 | 
				
			||||||
    box-shadow: unset;
 | 
					    box-shadow: unset !important;
 | 
				
			||||||
    background: transparent;
 | 
					    background: transparent !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search input::placeholder {
 | 
					div.quick-search input::placeholder {
 | 
				
			||||||
    color: var(--quick-search-color);
 | 
					    color: var(--quick-search-color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search:focus-within input {
 | 
					div.quick-search:focus-within input {
 | 
				
			||||||
    color: var(--quick-search-focus-color) !important;
 | 
					    color: var(--quick-search-focus-color) !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search .search-button {
 | 
					div.quick-search .search-button {
 | 
				
			||||||
    display: flex;
 | 
					    display: flex;
 | 
				
			||||||
    align-items: center;
 | 
					    align-items: center;
 | 
				
			||||||
    justify-content: center;
 | 
					    justify-content: center;
 | 
				
			||||||
@ -500,27 +532,30 @@
 | 
				
			|||||||
    transition: background-color 200ms ease-in !important;
 | 
					    transition: background-color 200ms ease-in !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search .search-button:active {
 | 
					div.quick-search .search-button:active {
 | 
				
			||||||
    transform: scale(.85);
 | 
					    transform: scale(.85);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .quick-search:focus-within:has(input:not(:placeholder-shown)) .search-button {
 | 
					div.quick-search:focus-within:has(input:not(:placeholder-shown)) .search-button {
 | 
				
			||||||
    /* Matches when the input has a value and the focus is inside the search box */
 | 
					    /* Matches when the input has a value and the focus is inside the search box */
 | 
				
			||||||
    background: var(--left-pane-item-action-button-background) !important;
 | 
					    background: var(--left-pane-item-action-button-background) !important;
 | 
				
			||||||
    color: var(--left-pane-item-action-button-color) !important;
 | 
					    color: var(--left-pane-item-action-button-color) !important;
 | 
				
			||||||
    transition: background-color 500ms ease-out !important;
 | 
					    transition: background-color 500ms ease-out !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
html body #left-pane .quick-search:focus-within .search-button:hover,
 | 
					html body .quick-search:focus-within .search-button:hover,
 | 
				
			||||||
#left-pane .quick-search .search-button.show  {
 | 
					div.quick-search .search-button.show  {
 | 
				
			||||||
    /* Hover state */
 | 
					    /* Hover state */
 | 
				
			||||||
    background: var(--left-pane-item-action-button-hover-background) !important;
 | 
					    background: var(--left-pane-item-action-button-hover-background) !important;
 | 
				
			||||||
    color: var(--left-pane-item-action-button-color) !important;
 | 
					    color: var(--left-pane-item-action-button-color) !important;
 | 
				
			||||||
    transition: background-color 100ms ease-out !important;
 | 
					    transition: background-color 100ms ease-out !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Tree */
 | 
					/*
 | 
				
			||||||
 | 
					 * Left pane
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Tree */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .tree-actions {
 | 
					#left-pane .tree-actions {
 | 
				
			||||||
    /* TODO: relocate instead of hiding */
 | 
					    /* TODO: relocate instead of hiding */
 | 
				
			||||||
@ -539,14 +574,12 @@ html body #left-pane .quick-search:focus-within .search-button:hover,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane .ui-fancytree ul {
 | 
					#left-pane .ui-fancytree ul {
 | 
				
			||||||
    padding-left: 1px;
 | 
					    padding-left: 10px;
 | 
				
			||||||
    margin-left: 14px;
 | 
					 | 
				
			||||||
    border-left: 1px solid var(--subtle-border-color);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The root element of the tree */
 | 
					/* The root element of the tree */
 | 
				
			||||||
#left-pane .fancytree-container > li:first-child > span {
 | 
					#left-pane .fancytree-container > li:first-child > span {
 | 
				
			||||||
    padding-left: 6px;
 | 
					    padding-left: 12px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#left-pane span.fancytree-node.fancytree-active {
 | 
					#left-pane span.fancytree-node.fancytree-active {
 | 
				
			||||||
@ -694,7 +727,7 @@ html body #left-pane .quick-search:focus-within .search-button:hover,
 | 
				
			|||||||
    left: 0;
 | 
					    left: 0;
 | 
				
			||||||
    right: 0;
 | 
					    right: 0;
 | 
				
			||||||
    height: 1px;
 | 
					    height: 1px;
 | 
				
			||||||
    background: var(--subtle-border-color);
 | 
					    border-bottom: 1px solid var(--launcher-pane-horizontal-border-color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tab-row-widget-container {
 | 
					.tab-row-widget-container {
 | 
				
			||||||
@ -712,6 +745,17 @@ html body #left-pane .quick-search:focus-within .search-button:hover,
 | 
				
			|||||||
    overflow: hidden;
 | 
					    overflow: hidden;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#root-widget.horizontal-layout .tab-row-widget .note-tab[active] .note-tab-wrapper {
 | 
				
			||||||
 | 
					    border: 1px solid transparent;
 | 
				
			||||||
 | 
					    border-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#root-widget.horizontal-layout .tab-row-widget .note-tab[active] .note-tab-wrapper {
 | 
				
			||||||
 | 
					    box-shadow: unset;
 | 
				
			||||||
 | 
					    border: 1px solid var(--launcher-pane-horizontal-border-color);
 | 
				
			||||||
 | 
					    border-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tab-row-widget .note-tab .note-tab-wrapper {
 | 
					.tab-row-widget .note-tab .note-tab-wrapper {
 | 
				
			||||||
    height: var(--tab-height) !important;
 | 
					    height: var(--tab-height) !important;
 | 
				
			||||||
    transition: background 75ms ease-in,
 | 
					    transition: background 75ms ease-in,
 | 
				
			||||||
@ -834,11 +878,14 @@ html body #left-pane .quick-search:focus-within .search-button:hover,
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#center-pane {
 | 
					#center-pane {
 | 
				
			||||||
   border-radius: var(--center-pane-border-radius) 0 0 0;
 | 
					 | 
				
			||||||
   padding-top: 2px;
 | 
					   padding-top: 2px;
 | 
				
			||||||
   background: var(--main-background-color);
 | 
					   background: var(--main-background-color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.vertical-layout #center-pane {
 | 
				
			||||||
 | 
					    border-radius: var(--center-pane-border-radius) 0 0 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Ribbon & note header
 | 
					 * Ribbon & note header
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -963,6 +1010,78 @@ html body .dropdown-item.disabled {
 | 
				
			|||||||
    color: var(--menu-item-arrow-color) !important;
 | 
					    color: var(--menu-item-arrow-color) !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Calendar
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget {
 | 
				
			||||||
 | 
					    padding: 12px;
 | 
				
			||||||
 | 
					    color: var(--calendar-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-header {
 | 
				
			||||||
 | 
					    padding: 8px 0 20px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-header input[type="number"] {
 | 
				
			||||||
 | 
					    appearance: textfield !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-header input[type="number"]::-webkit-outer-spin-button,
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-header input[type="number"]::-webkit-inner-spin-button {
 | 
				
			||||||
 | 
					  -webkit-appearance: none;
 | 
				
			||||||
 | 
					  margin: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-header input,
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-header select {
 | 
				
			||||||
 | 
					    /* TODO: Provide styling for background and states */
 | 
				
			||||||
 | 
					    border: unset;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    font-size: 1.4em;
 | 
				
			||||||
 | 
					    font-weight: 300;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-week span {
 | 
				
			||||||
 | 
					    font-size: .85em;
 | 
				
			||||||
 | 
					    font-weight: 500;
 | 
				
			||||||
 | 
					    color: var(--calendar-weekday-labels-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-body {
 | 
				
			||||||
 | 
					    font-size: .9em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-body a {
 | 
				
			||||||
 | 
					    background: transparent;
 | 
				
			||||||
 | 
					    color: var(--calendar-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-body a.calendar-date-exists {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    text-decoration: none !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.calendar-dropdown-widget .calendar-body a.calendar-date-exists:not(:hover)::before {
 | 
				
			||||||
 | 
					    --vertical-margin: 13%;
 | 
				
			||||||
 | 
					    --horiz-margin: 18%;
 | 
				
			||||||
 | 
					    content: "";
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: var(--vertical-margin);
 | 
				
			||||||
 | 
					    right: var(--horiz-margin);
 | 
				
			||||||
 | 
					    bottom: var(--vertical-margin);
 | 
				
			||||||
 | 
					    left: var(--horiz-margin);
 | 
				
			||||||
 | 
					    border-radius: 6px;
 | 
				
			||||||
 | 
					    background: var(--calendar-day-highlight-background);
 | 
				
			||||||
 | 
					    z-index: -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body .calendar-dropdown-widget .calendar-body a:hover {
 | 
				
			||||||
 | 
					    border-radius: 6px;
 | 
				
			||||||
 | 
					    background: var(--calendar-day-hover-background);
 | 
				
			||||||
 | 
					    color: var(--calendar-day-hover-color) !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * TEXT NOTES
 | 
					 * TEXT NOTES
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -980,7 +1099,7 @@ html body .dropdown-item.disabled {
 | 
				
			|||||||
    overflow: unset;
 | 
					    overflow: unset;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
html .note-detail-editable-text :not(figure, .include-note):first-child {
 | 
					html .note-detail-editable-text :not(figure, .include-note, hr):first-child {
 | 
				
			||||||
    /* Create some space for the top-side shadow */
 | 
					    /* Create some space for the top-side shadow */
 | 
				
			||||||
    margin-top: 1px !important;
 | 
					    margin-top: 1px !important;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1013,6 +1132,52 @@ html .note-detail-editable-text :not(figure, .include-note):first-child {
 | 
				
			|||||||
    cursor: default;
 | 
					    cursor: default;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ck-content blockquote {
 | 
				
			||||||
 | 
					    background: var(--card-background-color);
 | 
				
			||||||
 | 
					    border: 1px solid var(--card-border-color) !important;
 | 
				
			||||||
 | 
					    box-shadow: var(--card-box-shadow);
 | 
				
			||||||
 | 
					    border-radius: 10px;
 | 
				
			||||||
 | 
					    padding: 1em 2.5em;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    font-style: unset !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ck-content blockquote p:last-of-type {
 | 
				
			||||||
 | 
					    margin-bottom: 0 !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ck-content blockquote:before,
 | 
				
			||||||
 | 
					.ck-content blockquote:after {
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    font-size: 48px;
 | 
				
			||||||
 | 
					    opacity: 0.1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ck-content blockquote:before {
 | 
				
			||||||
 | 
					    content: "“";
 | 
				
			||||||
 | 
					    left: 0.2em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ck-content blockquote:after {
 | 
				
			||||||
 | 
					    content: "”";
 | 
				
			||||||
 | 
					    right: 0.35em;            
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ck-content hr {
 | 
				
			||||||
 | 
					    margin: 5px 0;
 | 
				
			||||||
 | 
					    height: 1px;
 | 
				
			||||||
 | 
					    background-color: var(--main-border-color);
 | 
				
			||||||
 | 
					    opacity: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.ck-content p code {
 | 
				
			||||||
 | 
					    border: 1px solid var(--card-border-color);
 | 
				
			||||||
 | 
					    box-shadow: var(--card-box-shadow);
 | 
				
			||||||
 | 
					    border-radius: 6px;
 | 
				
			||||||
 | 
					    background-color: var(--card-background-color);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.note-detail-printable:not(.word-wrap) pre code {
 | 
					.note-detail-printable:not(.word-wrap) pre code {
 | 
				
			||||||
    white-space: pre;
 | 
					    white-space: pre;
 | 
				
			||||||
    margin-right: 1em;
 | 
					    margin-right: 1em;
 | 
				
			||||||
@ -1086,12 +1251,14 @@ html .note-detail-editable-text :not(figure, .include-note):first-child {
 | 
				
			|||||||
 * Note list
 | 
					 * Note list
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
.note-list .note-book-card {
 | 
					.note-list .note-book-card {
 | 
				
			||||||
 | 
					    --note-list-horizontal-padding: 22px;
 | 
				
			||||||
 | 
					    --note-list-vertical-padding: 15px;
 | 
				
			||||||
    background-color: var(--card-background-color);
 | 
					    background-color: var(--card-background-color);
 | 
				
			||||||
    border: 1px solid var(--card-border-color) !important;
 | 
					    border: 1px solid var(--card-border-color) !important;
 | 
				
			||||||
    box-shadow: 2px 3px 4px var(--card-shadow-color);
 | 
					    box-shadow: 2px 3px 4px var(--card-shadow-color);
 | 
				
			||||||
    border-radius: 12px;
 | 
					    border-radius: 12px;
 | 
				
			||||||
    user-select: none;
 | 
					    user-select: none;
 | 
				
			||||||
    padding: 15px 22px;
 | 
					    padding: 0;
 | 
				
			||||||
    margin: 5px 10px 5px 0;
 | 
					    margin: 5px 10px 5px 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1112,9 +1279,10 @@ html .note-detail-editable-text :not(figure, .include-note):first-child {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header {
 | 
					.note-list-wrapper .note-book-card .note-book-header {
 | 
				
			||||||
    font-size: 1.1em;
 | 
					    font-size: 1em;
 | 
				
			||||||
    font-weight: bold;
 | 
					    font-weight: bold;
 | 
				
			||||||
    margin-bottom: 0.25em;
 | 
					    padding: 0.5em 1rem;
 | 
				
			||||||
 | 
					    border-bottom-color: var(--card-border-color);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-icon {
 | 
					.note-list-wrapper .note-book-card .note-book-header .note-icon {
 | 
				
			||||||
@ -1128,28 +1296,76 @@ html .note-detail-editable-text :not(figure, .include-note):first-child {
 | 
				
			|||||||
    vertical-align: middle;
 | 
					    vertical-align: middle;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header:last-child {
 | 
					.note-list-wrapper .note-book-card .note-book-header .rendered-note-attributes {
 | 
				
			||||||
    border-bottom: 0;
 | 
					    font-size: 0.7em;
 | 
				
			||||||
 | 
					    font-weight: normal;
 | 
				
			||||||
    margin-bottom: 0;
 | 
					    margin-bottom: 0;
 | 
				
			||||||
    padding-bottom: 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-book-content {
 | 
					.note-list-wrapper .note-book-card .note-book-header:last-child {
 | 
				
			||||||
 | 
					    border-bottom: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content {
 | 
				
			||||||
    padding: 0 !important;
 | 
					    padding: 0 !important;
 | 
				
			||||||
    font-size: 0.8rem;
 | 
					    font-size: 0.8rem;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-book-content h1,
 | 
					.note-list-wrapper .note-book-card .note-book-content .rendered-content {
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-book-content h2,
 | 
					    padding: 1rem;
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-book-content h3,
 | 
					}
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-book-content h4,
 | 
					
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-book-content h5,
 | 
					.note-list-wrapper .note-book-card .note-book-content .rendered-content.text-with-ellipsis {
 | 
				
			||||||
.note-list-wrapper .note-book-card .note-book-header .note-book-content h6 {
 | 
					    padding: 1rem !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content h1,
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content h2,
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content h3,
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content h4,
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content h5,
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content h6 {
 | 
				
			||||||
    font-size: 1rem;
 | 
					    font-size: 1rem;
 | 
				
			||||||
    color: var(--active-item-text-color);   
 | 
					    color: var(--active-item-text-color);   
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.note-list-wrapper .note-book-card .bx {
 | 
					.note-list-wrapper .note-book-card .note-book-content p:last-child {
 | 
				
			||||||
    color: var(--left-pane-icon-color);
 | 
					    margin-bottom: 0;
 | 
				
			||||||
    font-weight: bold;  
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content.type-canvas .rendered-content,
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content.type-mindMap .rendered-content,
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content.type-code .rendered-content {
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .note-book-content.type-code pre {
 | 
				
			||||||
 | 
					    height: 100%;
 | 
				
			||||||
 | 
					    padding: 1em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list-wrapper .note-book-card .bx {
 | 
				
			||||||
 | 
					    color: var(--left-pane-icon-color) !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list.grid-view .note-book-card:hover {
 | 
				
			||||||
 | 
					    background: var(--card-background-color) !important;
 | 
				
			||||||
 | 
					    filter: contrast(105%);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list.grid-view .note-book-card img {
 | 
				
			||||||
 | 
					    object-fit: cover !important;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list.grid-view .ck-content {
 | 
				
			||||||
 | 
					    line-height: 1.3;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list.grid-view .ck-content p {
 | 
				
			||||||
 | 
					    margin-bottom: 0.5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.note-list.grid-view .ck-content figure.image {
 | 
				
			||||||
 | 
					    width: 25%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -138,7 +138,7 @@ span.fancytree-node.protected > span.fancytree-custom-icon {
 | 
				
			|||||||
span.fancytree-node.multiple-parents.shared .fancytree-title::after {
 | 
					span.fancytree-node.multiple-parents.shared .fancytree-title::after {
 | 
				
			||||||
    font-family: 'boxicons' !important;
 | 
					    font-family: 'boxicons' !important;
 | 
				
			||||||
    font-size: smaller;
 | 
					    font-size: smaller;
 | 
				
			||||||
    content: " \eb3d  \ec03";
 | 
					    content: " \eb3d \ec03";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
span.fancytree-node.multiple-parents .fancytree-title::after {
 | 
					span.fancytree-node.multiple-parents .fancytree-title::after {
 | 
				
			||||||
 | 
				
			|||||||
@ -93,7 +93,7 @@
 | 
				
			|||||||
    "export_note_title": "导出笔记",
 | 
					    "export_note_title": "导出笔记",
 | 
				
			||||||
    "close": "关闭",
 | 
					    "close": "关闭",
 | 
				
			||||||
    "export_type_subtree": "此笔记及其所有子笔记",
 | 
					    "export_type_subtree": "此笔记及其所有子笔记",
 | 
				
			||||||
    "format_html": "HTML ZIP 归档 - 建议使用此选项,因为它保留了所有格式。",
 | 
					    "format_html_zip": "HTML ZIP 归档 - 建议使用此选项,因为它保留了所有格式。",
 | 
				
			||||||
    "format_markdown": "Markdown - 保留大部分格式。",
 | 
					    "format_markdown": "Markdown - 保留大部分格式。",
 | 
				
			||||||
    "format_opml": "OPML - 大纲交换格式,仅限文本。不包括格式、图像和文件。",
 | 
					    "format_opml": "OPML - 大纲交换格式,仅限文本。不包括格式、图像和文件。",
 | 
				
			||||||
    "opml_version_1": "OPML v1.0 - 仅限纯文本",
 | 
					    "opml_version_1": "OPML v1.0 - 仅限纯文本",
 | 
				
			||||||
 | 
				
			|||||||
@ -88,7 +88,7 @@
 | 
				
			|||||||
    "export_note_title": "Notiz exportieren",
 | 
					    "export_note_title": "Notiz exportieren",
 | 
				
			||||||
    "close": "Schließen",
 | 
					    "close": "Schließen",
 | 
				
			||||||
    "export_type_subtree": "diese Notiz und alle ihre Unternotizen",
 | 
					    "export_type_subtree": "diese Notiz und alle ihre Unternotizen",
 | 
				
			||||||
    "format_html": "HTML im ZIP-Archiv – dies wird empfohlen, da dadurch die gesamte Formatierung erhalten bleibt.",
 | 
					    "format_html_zip": "HTML im ZIP-Archiv – dies wird empfohlen, da dadurch die gesamte Formatierung erhalten bleibt.",
 | 
				
			||||||
    "format_markdown": "Markdown – dadurch bleiben die meisten Formatierungen erhalten.",
 | 
					    "format_markdown": "Markdown – dadurch bleiben die meisten Formatierungen erhalten.",
 | 
				
			||||||
    "format_opml": "OPML – Outliner-Austauschformat nur für Text. Formatierungen, Bilder und Dateien sind nicht enthalten.",
 | 
					    "format_opml": "OPML – Outliner-Austauschformat nur für Text. Formatierungen, Bilder und Dateien sind nicht enthalten.",
 | 
				
			||||||
    "opml_version_1": "OPML v1.0 – nur Klartext",
 | 
					    "opml_version_1": "OPML v1.0 – nur Klartext",
 | 
				
			||||||
 | 
				
			|||||||
@ -93,7 +93,8 @@
 | 
				
			|||||||
    "export_note_title": "Export note",
 | 
					    "export_note_title": "Export note",
 | 
				
			||||||
    "close": "Close",
 | 
					    "close": "Close",
 | 
				
			||||||
    "export_type_subtree": "this note and all of its descendants",
 | 
					    "export_type_subtree": "this note and all of its descendants",
 | 
				
			||||||
    "format_html": "HTML in ZIP archive - this is recommended since this preserves all the formatting.",
 | 
					    "format_html": "HTML - recomandat deoarece păstrează toată formatarea",
 | 
				
			||||||
 | 
					    "format_html_zip": "HTML in ZIP archive - this is recommended since this preserves all the formatting.",
 | 
				
			||||||
    "format_markdown": "Markdown - this preserves most of the formatting.",
 | 
					    "format_markdown": "Markdown - this preserves most of the formatting.",
 | 
				
			||||||
    "format_opml": "OPML - outliner interchange format for text only. Formatting, images and files are not included.",
 | 
					    "format_opml": "OPML - outliner interchange format for text only. Formatting, images and files are not included.",
 | 
				
			||||||
    "opml_version_1": "OPML v1.0 - plain text only",
 | 
					    "opml_version_1": "OPML v1.0 - plain text only",
 | 
				
			||||||
 | 
				
			|||||||
@ -93,7 +93,7 @@
 | 
				
			|||||||
    "export_note_title": "Exportar nota",
 | 
					    "export_note_title": "Exportar nota",
 | 
				
			||||||
    "close": "Cerrar",
 | 
					    "close": "Cerrar",
 | 
				
			||||||
    "export_type_subtree": "esta nota y todos sus descendientes",
 | 
					    "export_type_subtree": "esta nota y todos sus descendientes",
 | 
				
			||||||
    "format_html": "HTML en un archivo ZIP: se recomienda ya que conserva todo el formato.",
 | 
					    "format_html_zip": "HTML en un archivo ZIP: se recomienda ya que conserva todo el formato.",
 | 
				
			||||||
    "format_markdown": "Markdown: esto conserva la mayor parte del formato.",
 | 
					    "format_markdown": "Markdown: esto conserva la mayor parte del formato.",
 | 
				
			||||||
    "format_opml": "OPML: formato de intercambio de esquemas solo para texto. El formato, las imágenes y los archivos no están incluidos.",
 | 
					    "format_opml": "OPML: formato de intercambio de esquemas solo para texto. El formato, las imágenes y los archivos no están incluidos.",
 | 
				
			||||||
    "opml_version_1": "OPML v1.0: solo texto sin formato",
 | 
					    "opml_version_1": "OPML v1.0: solo texto sin formato",
 | 
				
			||||||
 | 
				
			|||||||
@ -89,7 +89,7 @@
 | 
				
			|||||||
    "export_note_title": "Exporter la note",
 | 
					    "export_note_title": "Exporter la note",
 | 
				
			||||||
    "close": "Fermer",
 | 
					    "close": "Fermer",
 | 
				
			||||||
    "export_type_subtree": "cette note et tous ses descendants",
 | 
					    "export_type_subtree": "cette note et tous ses descendants",
 | 
				
			||||||
    "format_html": "HTML dans l'archive ZIP - recommandé car cela préserve tout le formatage.",
 | 
					    "format_html_zip": "HTML dans l'archive ZIP - recommandé car cela préserve tout le formatage.",
 | 
				
			||||||
    "format_markdown": "Markdown - préserve la majeure partie du formatage.",
 | 
					    "format_markdown": "Markdown - préserve la majeure partie du formatage.",
 | 
				
			||||||
    "format_opml": "OPML - format d'échange pour les outlineurs, uniquement pour le texte. Les mises en forme, images et fichiers ne sont pas inclus.",
 | 
					    "format_opml": "OPML - format d'échange pour les outlineurs, uniquement pour le texte. Les mises en forme, images et fichiers ne sont pas inclus.",
 | 
				
			||||||
    "opml_version_1": "OPML v1.0 - texte brut uniquement",
 | 
					    "opml_version_1": "OPML v1.0 - texte brut uniquement",
 | 
				
			||||||
 | 
				
			|||||||
@ -509,7 +509,7 @@
 | 
				
			|||||||
    "export_status": "Starea exportului",
 | 
					    "export_status": "Starea exportului",
 | 
				
			||||||
    "export_type_single": "doar această notiță fără descendenții ei",
 | 
					    "export_type_single": "doar această notiță fără descendenții ei",
 | 
				
			||||||
    "export_type_subtree": "această notiță și toți descendenții ei",
 | 
					    "export_type_subtree": "această notiță și toți descendenții ei",
 | 
				
			||||||
    "format_html": "HTML în arhivă ZIP - recomandat deoarece păstrează toată formatarea",
 | 
					    "format_html_zip": "HTML în arhivă ZIP - recomandat deoarece păstrează toată formatarea",
 | 
				
			||||||
    "format_markdown": "Markdown - păstrează majoritatea formatării",
 | 
					    "format_markdown": "Markdown - păstrează majoritatea formatării",
 | 
				
			||||||
    "format_opml": "OPML - format de interschimbare pentru editoare cu structură ierarhică (outline). Formatarea, imaginile și fișierele nu vor fi incluse.",
 | 
					    "format_opml": "OPML - format de interschimbare pentru editoare cu structură ierarhică (outline). Formatarea, imaginile și fișierele nu vor fi incluse.",
 | 
				
			||||||
    "opml_version_1": "OPML v1.0 - text simplu",
 | 
					    "opml_version_1": "OPML v1.0 - text simplu",
 | 
				
			||||||
 | 
				
			|||||||
@ -93,7 +93,7 @@
 | 
				
			|||||||
    "export_note_title": "匯出筆記",
 | 
					    "export_note_title": "匯出筆記",
 | 
				
			||||||
    "close": "關閉",
 | 
					    "close": "關閉",
 | 
				
			||||||
    "export_type_subtree": "此筆記及其所有子筆記",
 | 
					    "export_type_subtree": "此筆記及其所有子筆記",
 | 
				
			||||||
    "format_html": "HTML ZIP 歸檔 - 建議使用此選項,因為它保留了所有格式。",
 | 
					    "format_html_zip": "HTML ZIP 歸檔 - 建議使用此選項,因為它保留了所有格式。",
 | 
				
			||||||
    "format_markdown": "Markdown - 保留大部分格式。",
 | 
					    "format_markdown": "Markdown - 保留大部分格式。",
 | 
				
			||||||
    "format_opml": "OPML - 大綱交換格式,僅限文字。不包括格式、圖片和文件。",
 | 
					    "format_opml": "OPML - 大綱交換格式,僅限文字。不包括格式、圖片和文件。",
 | 
				
			||||||
    "opml_version_1": "OPML v1.0 - 僅限純文字",
 | 
					    "opml_version_1": "OPML v1.0 - 僅限純文字",
 | 
				
			||||||
 | 
				
			|||||||
@ -54,7 +54,7 @@ enum Command {
 | 
				
			|||||||
 * duplicate subtrees. This way, all instances will generate the same structure with the same IDs.
 | 
					 * duplicate subtrees. This way, all instances will generate the same structure with the same IDs.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let HIDDEN_SUBTREE_DEFINITION = buildHiddenSubtreeDefinition();
 | 
					let hiddenSubtreeDefinition: Item;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function buildHiddenSubtreeDefinition(): Item {
 | 
					function buildHiddenSubtreeDefinition(): Item {
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
@ -288,11 +288,11 @@ function checkHiddenSubtree(force = false, extraOpts: CheckHiddenExtraOpts = {})
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (force) {
 | 
					    if (!hiddenSubtreeDefinition || force) {
 | 
				
			||||||
        HIDDEN_SUBTREE_DEFINITION = buildHiddenSubtreeDefinition();
 | 
					        hiddenSubtreeDefinition = buildHiddenSubtreeDefinition();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    checkHiddenSubtreeRecursively('root', HIDDEN_SUBTREE_DEFINITION, extraOpts);
 | 
					    checkHiddenSubtreeRecursively('root', hiddenSubtreeDefinition, extraOpts);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function checkHiddenSubtreeRecursively(parentNoteId: string, item: Item, extraOpts: CheckHiddenExtraOpts = {}) {
 | 
					function checkHiddenSubtreeRecursively(parentNoteId: string, item: Item, extraOpts: CheckHiddenExtraOpts = {}) {
 | 
				
			||||||
 | 
				
			|||||||
@ -52,7 +52,8 @@ function sanitize(dirtyHtml: string) {
 | 
				
			|||||||
    return sanitizeHtml(dirtyHtml, {
 | 
					    return sanitizeHtml(dirtyHtml, {
 | 
				
			||||||
        allowedTags,
 | 
					        allowedTags,
 | 
				
			||||||
        allowedAttributes: {
 | 
					        allowedAttributes: {
 | 
				
			||||||
            '*': [ 'class', 'style', 'title', 'src', 'href', 'hash', 'disabled', 'align', 'alt', 'center', 'data-*' ]
 | 
					            "*": [ 'class', 'style', 'title', 'src', 'href', 'hash', 'disabled', 'align', 'alt', 'center', 'data-*' ],
 | 
				
			||||||
 | 
					            "input": [ "type", "checked" ]
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        allowedSchemes: [
 | 
					        allowedSchemes: [
 | 
				
			||||||
            'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'irc', 'gemini', 'git',
 | 
					            'http', 'https', 'ftp', 'ftps', 'mailto', 'data', 'evernote', 'file', 'facetime', 'irc', 'gemini', 'git',
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user