diff --git a/db/demo.zip b/db/demo.zip index 15c0f9141..c040aacff 100644 Binary files a/db/demo.zip and b/db/demo.zip differ diff --git a/demo/!!!meta.json b/demo/!!!meta.json index 51b764d7e..f79b8da4a 100644 --- a/demo/!!!meta.json +++ b/demo/!!!meta.json @@ -21,10 +21,10 @@ "children": [ { "isClone": false, - "noteId": "Z1YA9A8DeguI", + "noteId": "pjMQDyoxNDKY", "notePath": [ "root", - "Z1YA9A8DeguI" + "pjMQDyoxNDKY" ], "title": "Journal", "notePosition": 10, @@ -67,10 +67,10 @@ }, { "isClone": false, - "noteId": "XJEFVt5M6qYD", + "noteId": "FtiygOkEmMDS", "notePath": [ "root", - "XJEFVt5M6qYD" + "FtiygOkEmMDS" ], "title": "Trilium Demo", "notePosition": 20, @@ -82,42 +82,42 @@ { "type": "relation", "name": "internalLink", - "value": "uyCnPwFBP0Ex", + "value": "2k9SM739n8Lp", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "BiYcKBCGgGSJ", + "value": "qPmeA8rljKjV", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "iJFBylrtwtSK", + "value": "9ltxhfZK5sg9", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "4SZhZpIl7zeT", + "value": "E9wIXDWRdT8q", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "xo66SvDueIPP", + "value": "IrEbPBX9L0s5", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "includeNoteLink", - "value": "6eIB85IPXShx", + "value": "xNgX9Cfpn6WV", "isInheritable": false, "position": 60 }, @@ -133,7 +133,7 @@ "dataFileName": "Trilium Demo.html", "attachments": [ { - "attachmentId": "M5wrjFuz4DvK", + "attachmentId": "mLcEEPk97eiU", "title": "trilium-icon.png", "role": "image", "mime": "image/png", @@ -145,11 +145,11 @@ "children": [ { "isClone": false, - "noteId": "9UFZmVwRSh9s", + "noteId": "0jMfB2e4isbi", "notePath": [ "root", - "XJEFVt5M6qYD", - "9UFZmVwRSh9s" + "FtiygOkEmMDS", + "0jMfB2e4isbi" ], "title": "Inbox", "notePosition": 10, @@ -173,12 +173,12 @@ "children": [ { "isClone": false, - "noteId": "lf36iA1HcmCE", + "noteId": "9ynfDCB227tD", "notePath": [ "root", - "XJEFVt5M6qYD", - "9UFZmVwRSh9s", - "lf36iA1HcmCE" + "FtiygOkEmMDS", + "0jMfB2e4isbi", + "9ynfDCB227tD" ], "title": "Grocery list for today", "notePosition": 0, @@ -193,12 +193,12 @@ }, { "isClone": false, - "noteId": "RO6luucBe4xP", + "noteId": "EHyfHHBo5ljm", "notePath": [ "root", - "XJEFVt5M6qYD", - "9UFZmVwRSh9s", - "RO6luucBe4xP" + "FtiygOkEmMDS", + "0jMfB2e4isbi", + "EHyfHHBo5ljm" ], "title": "Book to read", "notePosition": 10, @@ -213,12 +213,12 @@ }, { "isClone": false, - "noteId": "e8CbyHlK1xrm", + "noteId": "WEnoni0boFLC", "notePath": [ "root", - "XJEFVt5M6qYD", - "9UFZmVwRSh9s", - "e8CbyHlK1xrm" + "FtiygOkEmMDS", + "0jMfB2e4isbi", + "WEnoni0boFLC" ], "title": "The Last Question", "notePosition": 20, @@ -234,13 +234,13 @@ "children": [ { "isClone": false, - "noteId": "AYcH328aYHCh", + "noteId": "RGowXLUiLWZ4", "notePath": [ "root", - "XJEFVt5M6qYD", - "9UFZmVwRSh9s", - "e8CbyHlK1xrm", - "AYcH328aYHCh" + "FtiygOkEmMDS", + "0jMfB2e4isbi", + "WEnoni0boFLC", + "RGowXLUiLWZ4" ], "title": "The Last Question by Issac Asimov.pdf", "notePosition": 0, @@ -266,11 +266,11 @@ }, { "isClone": false, - "noteId": "NvGLi3T6JbDk", + "noteId": "GU3xIhrm6b4Z", "notePath": [ "root", - "XJEFVt5M6qYD", - "NvGLi3T6JbDk" + "FtiygOkEmMDS", + "GU3xIhrm6b4Z" ], "title": "Formatting examples", "notePosition": 20, @@ -284,12 +284,12 @@ "children": [ { "isClone": false, - "noteId": "uyCnPwFBP0Ex", + "noteId": "2k9SM739n8Lp", "notePath": [ "root", - "XJEFVt5M6qYD", - "NvGLi3T6JbDk", - "uyCnPwFBP0Ex" + "FtiygOkEmMDS", + "GU3xIhrm6b4Z", + "2k9SM739n8Lp" ], "title": "School schedule", "notePosition": 0, @@ -312,12 +312,12 @@ }, { "isClone": false, - "noteId": "BiYcKBCGgGSJ", + "noteId": "qPmeA8rljKjV", "notePath": [ "root", - "XJEFVt5M6qYD", - "NvGLi3T6JbDk", - "BiYcKBCGgGSJ" + "FtiygOkEmMDS", + "GU3xIhrm6b4Z", + "qPmeA8rljKjV" ], "title": "Checkbox lists", "notePosition": 10, @@ -340,12 +340,12 @@ }, { "isClone": false, - "noteId": "iJFBylrtwtSK", + "noteId": "9ltxhfZK5sg9", "notePath": [ "root", - "XJEFVt5M6qYD", - "NvGLi3T6JbDk", - "iJFBylrtwtSK" + "FtiygOkEmMDS", + "GU3xIhrm6b4Z", + "9ltxhfZK5sg9" ], "title": "Highlighting", "notePosition": 20, @@ -368,12 +368,12 @@ }, { "isClone": false, - "noteId": "4SZhZpIl7zeT", + "noteId": "E9wIXDWRdT8q", "notePath": [ "root", - "XJEFVt5M6qYD", - "NvGLi3T6JbDk", - "4SZhZpIl7zeT" + "FtiygOkEmMDS", + "GU3xIhrm6b4Z", + "E9wIXDWRdT8q" ], "title": "Code blocks", "notePosition": 30, @@ -385,7 +385,7 @@ { "type": "relation", "name": "internalLink", - "value": "HX1Ljdj8gjLj", + "value": "XEqJYehFycu0", "isInheritable": false, "position": 10 }, @@ -403,12 +403,12 @@ }, { "isClone": false, - "noteId": "xo66SvDueIPP", + "noteId": "IrEbPBX9L0s5", "notePath": [ "root", - "XJEFVt5M6qYD", - "NvGLi3T6JbDk", - "xo66SvDueIPP" + "FtiygOkEmMDS", + "GU3xIhrm6b4Z", + "IrEbPBX9L0s5" ], "title": "Math", "notePosition": 40, @@ -433,11 +433,11 @@ }, { "isClone": false, - "noteId": "CrL7kOfiH3gi", + "noteId": "d3v6rbml5pNb", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi" + "FtiygOkEmMDS", + "d3v6rbml5pNb" ], "title": "Journal", "notePosition": 30, @@ -456,7 +456,7 @@ { "type": "relation", "name": "child:child:child:template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 20 }, @@ -475,12 +475,12 @@ "children": [ { "isClone": false, - "noteId": "MMS34OGztguj", + "noteId": "D48ohFps8c9X", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X" ], "title": "2021", "notePosition": 10, @@ -506,7 +506,7 @@ { "type": "relation", "name": "child:child:template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 30 } @@ -517,13 +517,13 @@ "children": [ { "isClone": false, - "noteId": "A5tePuAvsBl5", + "noteId": "jXjGvPuFUxAd", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "A5tePuAvsBl5" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "jXjGvPuFUxAd" ], "title": "11 - November", "notePosition": 10, @@ -549,7 +549,7 @@ { "type": "relation", "name": "child:template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 30 } @@ -560,14 +560,14 @@ "children": [ { "isClone": false, - "noteId": "nVvHsij49Hyn", + "noteId": "sjs5puxEa2a7", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "A5tePuAvsBl5", - "nVvHsij49Hyn" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "jXjGvPuFUxAd", + "sjs5puxEa2a7" ], "title": "28 - Tuesday", "notePosition": 10, @@ -586,7 +586,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 20 } @@ -598,15 +598,15 @@ "children": [ { "isClone": false, - "noteId": "AY9u6wnuAe6b", + "noteId": "9r3G0ndJmi9I", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "A5tePuAvsBl5", - "nVvHsij49Hyn", - "AY9u6wnuAe6b" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "jXjGvPuFUxAd", + "sjs5puxEa2a7", + "9r3G0ndJmi9I" ], "title": "Phone call about work project", "notePosition": 0, @@ -621,15 +621,15 @@ }, { "isClone": false, - "noteId": "4bnfiFCUZZEz", + "noteId": "7rSaRc0HyfNg", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "A5tePuAvsBl5", - "nVvHsij49Hyn", - "4bnfiFCUZZEz" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "jXjGvPuFUxAd", + "sjs5puxEa2a7", + "7rSaRc0HyfNg" ], "title": "Christmas gift ideas", "notePosition": 10, @@ -644,15 +644,15 @@ }, { "isClone": false, - "noteId": "SEUXtxTLPcjC", + "noteId": "P9MH8H8ctFpL", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "A5tePuAvsBl5", - "nVvHsij49Hyn", - "SEUXtxTLPcjC" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "jXjGvPuFUxAd", + "sjs5puxEa2a7", + "P9MH8H8ctFpL" ], "title": "Trusted timestamping", "notePosition": 20, @@ -671,13 +671,13 @@ }, { "isClone": false, - "noteId": "ZjJwnwmtGjXv", + "noteId": "121GAYH8t9sG", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG" ], "title": "12 - December", "notePosition": 20, @@ -703,7 +703,7 @@ { "type": "relation", "name": "child:template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 30 } @@ -714,14 +714,14 @@ "children": [ { "isClone": false, - "noteId": "hFi4dcFDtBEQ", + "noteId": "MqCcPROuMbJy", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy" ], "title": "18 - Monday", "notePosition": 10, @@ -733,7 +733,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 10 }, @@ -759,15 +759,15 @@ "children": [ { "isClone": false, - "noteId": "lfuoFoabw8J3", + "noteId": "9W6r7jze567a", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "lfuoFoabw8J3" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "9W6r7jze567a" ], "title": "Meeting minutes", "notePosition": 0, @@ -782,15 +782,15 @@ }, { "isClone": false, - "noteId": "njBk8sSDwoVi", + "noteId": "UCyn8zIO5sfv", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv" ], "title": "Photos from the trip", "notePosition": 10, @@ -812,16 +812,16 @@ "children": [ { "isClone": false, - "noteId": "zspIdyEF4Ivo", + "noteId": "LmYE62OtiRwa", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "zspIdyEF4Ivo" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "LmYE62OtiRwa" ], "title": "01.jpeg", "notePosition": 0, @@ -850,16 +850,16 @@ }, { "isClone": false, - "noteId": "jNq1DpZlJmku", + "noteId": "FRRK98ajYLe8", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "jNq1DpZlJmku" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "FRRK98ajYLe8" ], "title": "02.jpeg", "notePosition": 10, @@ -888,16 +888,16 @@ }, { "isClone": false, - "noteId": "ZJiUzyBZDk19", + "noteId": "Jzi2FDmPiFFT", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "ZJiUzyBZDk19" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "Jzi2FDmPiFFT" ], "title": "03.jpeg", "notePosition": 20, @@ -926,16 +926,16 @@ }, { "isClone": false, - "noteId": "997wucCwiScU", + "noteId": "thH5WY8lmObr", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "997wucCwiScU" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "thH5WY8lmObr" ], "title": "04.jpeg", "notePosition": 30, @@ -964,16 +964,16 @@ }, { "isClone": false, - "noteId": "AAqYy9f62FEN", + "noteId": "az5tRZuhK4Wk", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "AAqYy9f62FEN" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "az5tRZuhK4Wk" ], "title": "05.jpeg", "notePosition": 40, @@ -1002,16 +1002,16 @@ }, { "isClone": false, - "noteId": "CGmZLyolKWMr", + "noteId": "NJJcdU9PWD7D", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "CGmZLyolKWMr" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "NJJcdU9PWD7D" ], "title": "06.jpeg", "notePosition": 50, @@ -1040,16 +1040,16 @@ }, { "isClone": false, - "noteId": "pCm5AMR1sSM4", + "noteId": "UqIMTynT6X0p", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "pCm5AMR1sSM4" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "UqIMTynT6X0p" ], "title": "07.jpeg", "notePosition": 60, @@ -1078,16 +1078,16 @@ }, { "isClone": false, - "noteId": "Ox3Cqw1nS7hC", + "noteId": "FdU514pb4hTG", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "Ox3Cqw1nS7hC" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "FdU514pb4hTG" ], "title": "08.jpeg", "notePosition": 70, @@ -1116,16 +1116,16 @@ }, { "isClone": false, - "noteId": "Prum9jlGSJG8", + "noteId": "yG6lXipTG0za", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "Prum9jlGSJG8" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "yG6lXipTG0za" ], "title": "09.jpeg", "notePosition": 80, @@ -1154,16 +1154,16 @@ }, { "isClone": false, - "noteId": "5Hd83XklOCic", + "noteId": "wmAwTlpBwcP9", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "5Hd83XklOCic" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "wmAwTlpBwcP9" ], "title": "10.jpeg", "notePosition": 90, @@ -1192,16 +1192,16 @@ }, { "isClone": false, - "noteId": "gTPfi9uBmXn8", + "noteId": "ahW5ztIQUmjD", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "gTPfi9uBmXn8" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "ahW5ztIQUmjD" ], "title": "11.jpeg", "notePosition": 100, @@ -1230,16 +1230,16 @@ }, { "isClone": false, - "noteId": "FMetTM8FO4xM", + "noteId": "nWiea7ucbaoS", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "njBk8sSDwoVi", - "FMetTM8FO4xM" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "UCyn8zIO5sfv", + "nWiea7ucbaoS" ], "title": "12.jpeg", "notePosition": 110, @@ -1270,15 +1270,15 @@ }, { "isClone": false, - "noteId": "26OSwKs6f8gR", + "noteId": "xEOU9GxpQbBe", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "hFi4dcFDtBEQ", - "26OSwKs6f8gR" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "MqCcPROuMbJy", + "xEOU9GxpQbBe" ], "title": "Send invites for christmas party", "notePosition": 20, @@ -1331,14 +1331,14 @@ }, { "isClone": false, - "noteId": "kz54CWUZmXAR", + "noteId": "61hKBI0g8JA6", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "kz54CWUZmXAR" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "61hKBI0g8JA6" ], "title": "19 - Tuesday", "notePosition": 20, @@ -1350,7 +1350,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 10 }, @@ -1376,15 +1376,15 @@ "children": [ { "isClone": false, - "noteId": "FnYBIfOsPK4A", + "noteId": "HvDC9Ly6MpwF", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "kz54CWUZmXAR", - "FnYBIfOsPK4A" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "61hKBI0g8JA6", + "HvDC9Ly6MpwF" ], "title": "Dentist appointment", "notePosition": 0, @@ -1437,14 +1437,14 @@ }, { "isClone": false, - "noteId": "c9bqChEk2KNy", + "noteId": "pcHkNGUu6GMi", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "c9bqChEk2KNy" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "pcHkNGUu6GMi" ], "title": "20 - Wednesday", "notePosition": 30, @@ -1456,7 +1456,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 10 }, @@ -1481,14 +1481,14 @@ }, { "isClone": false, - "noteId": "Fu1KFdgHwzNc", + "noteId": "iyIGRYr24lyA", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "Fu1KFdgHwzNc" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "iyIGRYr24lyA" ], "title": "21 - Thursday", "notePosition": 40, @@ -1507,7 +1507,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 20 }, @@ -1526,15 +1526,15 @@ "children": [ { "isClone": false, - "noteId": "Bm4ynW3AtMve", + "noteId": "WGZNFSizBmgv", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "Fu1KFdgHwzNc", - "Bm4ynW3AtMve" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "iyIGRYr24lyA", + "WGZNFSizBmgv" ], "title": "Christmas shopping", "notePosition": 0, @@ -1549,15 +1549,15 @@ }, { "isClone": false, - "noteId": "VmXFsvlmQP42", + "noteId": "V4ee6FFefBp5", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "Fu1KFdgHwzNc", - "VmXFsvlmQP42" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "iyIGRYr24lyA", + "V4ee6FFefBp5" ], "title": "Office party", "notePosition": 10, @@ -1574,14 +1574,14 @@ }, { "isClone": false, - "noteId": "TsOOmwud3ffz", + "noteId": "2vaZTm8y9K8X", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "TsOOmwud3ffz" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "2vaZTm8y9K8X" ], "title": "22 - Friday", "notePosition": 50, @@ -1600,7 +1600,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 20 }, @@ -1619,15 +1619,15 @@ "children": [ { "isClone": false, - "noteId": "9h0BD5cLevvC", + "noteId": "HtZVdEkBCcux", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "TsOOmwud3ffz", - "9h0BD5cLevvC" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "2vaZTm8y9K8X", + "HtZVdEkBCcux" ], "title": "Christmas shopping", "notePosition": 0, @@ -1642,15 +1642,15 @@ }, { "isClone": false, - "noteId": "zjpJcrlXbZIu", + "noteId": "2H2LKhcNT0vM", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "TsOOmwud3ffz", - "zjpJcrlXbZIu" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "2vaZTm8y9K8X", + "2H2LKhcNT0vM" ], "title": "The Mechanical", "notePosition": 10, @@ -1662,7 +1662,7 @@ { "type": "relation", "name": "template", - "value": "WjbOZguv7xwV", + "value": "CghlcBI9GjFT", "isInheritable": false, "position": 10 }, @@ -1702,16 +1702,16 @@ "children": [ { "isClone": false, - "noteId": "lUVZfPtuBdmJ", + "noteId": "lq8XJge1qZUg", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "TsOOmwud3ffz", - "zjpJcrlXbZIu", - "lUVZfPtuBdmJ" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "2vaZTm8y9K8X", + "2H2LKhcNT0vM", + "lq8XJge1qZUg" ], "title": "Highlights", "notePosition": 0, @@ -1730,14 +1730,14 @@ }, { "isClone": false, - "noteId": "QlSEADOK9i1S", + "noteId": "jiYm8WWDfFDU", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "QlSEADOK9i1S" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "jiYm8WWDfFDU" ], "title": "23 - Saturday", "notePosition": 60, @@ -1749,7 +1749,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 10 }, @@ -1774,14 +1774,14 @@ }, { "isClone": false, - "noteId": "pVm1TjOjZVtZ", + "noteId": "IIMDBlCODDdo", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "pVm1TjOjZVtZ" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "IIMDBlCODDdo" ], "title": "24 - Sunday - Christmas Eve!", "notePosition": 70, @@ -1793,7 +1793,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 10 }, @@ -1819,15 +1819,15 @@ "children": [ { "isClone": false, - "noteId": "edU8PIFnYHGc", + "noteId": "RVQ3ATcHZKLN", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "pVm1TjOjZVtZ", - "edU8PIFnYHGc" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "IIMDBlCODDdo", + "RVQ3ATcHZKLN" ], "title": "Buy a board game for Alice", "notePosition": 0, @@ -1890,7 +1890,7 @@ "dataFileName": "DONE - Buy a board game for Al.html", "attachments": [ { - "attachmentId": "X6W3EexVpHIV", + "attachmentId": "4wVhVEx86H9d", "title": "codenames.jpg", "role": "image", "mime": "image/jpg", @@ -1901,15 +1901,15 @@ }, { "isClone": false, - "noteId": "CbCEOqvYo84Q", + "noteId": "B0Wlpm5ZNtoc", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "pVm1TjOjZVtZ", - "CbCEOqvYo84Q" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "IIMDBlCODDdo", + "B0Wlpm5ZNtoc" ], "title": "Buy milk", "notePosition": 10, @@ -1976,14 +1976,14 @@ }, { "isClone": false, - "noteId": "qCcGdMAmZAk1", + "noteId": "mhRg72cnOUoT", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "ZjJwnwmtGjXv", - "qCcGdMAmZAk1" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "121GAYH8t9sG", + "mhRg72cnOUoT" ], "title": "30 - Thursday", "notePosition": 80, @@ -1995,7 +1995,7 @@ { "type": "relation", "name": "template", - "value": "wnUv1czOT6PN", + "value": "I2ou3HTZAzs7", "isInheritable": false, "position": 30 }, @@ -2015,13 +2015,13 @@ }, { "isClone": false, - "noteId": "RnVpgvVN6O4q", + "noteId": "92nZ9BvGRlSV", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "RnVpgvVN6O4q" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "92nZ9BvGRlSV" ], "title": "Epics", "notePosition": 30, @@ -2037,14 +2037,14 @@ "children": [ { "isClone": false, - "noteId": "CvBwxIznqvey", + "noteId": "KJV9dGg9gFUO", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "RnVpgvVN6O4q", - "CvBwxIznqvey" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "92nZ9BvGRlSV", + "KJV9dGg9gFUO" ], "title": "Christmas", "notePosition": 0, @@ -2060,15 +2060,15 @@ "children": [ { "isClone": false, - "noteId": "p7xnGwjGe93e", + "noteId": "7TONko7y7sO8", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "RnVpgvVN6O4q", - "CvBwxIznqvey", - "p7xnGwjGe93e" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "92nZ9BvGRlSV", + "KJV9dGg9gFUO", + "7TONko7y7sO8" ], "title": "Vacation days", "notePosition": 0, @@ -2083,15 +2083,15 @@ }, { "isClone": false, - "noteId": "Xtc9A7xg6cKq", + "noteId": "8eUh5BElAyoA", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "RnVpgvVN6O4q", - "CvBwxIznqvey", - "Xtc9A7xg6cKq" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "92nZ9BvGRlSV", + "KJV9dGg9gFUO", + "8eUh5BElAyoA" ], "title": "Christmas dinner", "notePosition": 10, @@ -2106,15 +2106,15 @@ }, { "isClone": false, - "noteId": "C3RGIJ2tevH3", + "noteId": "UYkyaTQZIPQs", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "RnVpgvVN6O4q", - "CvBwxIznqvey", - "C3RGIJ2tevH3" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "92nZ9BvGRlSV", + "KJV9dGg9gFUO", + "UYkyaTQZIPQs" ], "title": "Shopping", "notePosition": 20, @@ -2129,16 +2129,16 @@ "children": [ { "isClone": true, - "noteId": "4bnfiFCUZZEz", + "noteId": "7rSaRc0HyfNg", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "RnVpgvVN6O4q", - "CvBwxIznqvey", - "C3RGIJ2tevH3", - "4bnfiFCUZZEz" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "92nZ9BvGRlSV", + "KJV9dGg9gFUO", + "UYkyaTQZIPQs", + "7rSaRc0HyfNg" ], "title": "Christmas gift ideas", "prefix": "28. 11. 2017", @@ -2152,14 +2152,14 @@ }, { "isClone": false, - "noteId": "N1JdIfjjplsk", + "noteId": "JMBQ4a0ExSUt", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "MMS34OGztguj", - "RnVpgvVN6O4q", - "N1JdIfjjplsk" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "D48ohFps8c9X", + "92nZ9BvGRlSV", + "JMBQ4a0ExSUt" ], "title": "Vacation", "notePosition": 10, @@ -2178,12 +2178,12 @@ }, { "isClone": false, - "noteId": "wnUv1czOT6PN", + "noteId": "I2ou3HTZAzs7", "notePath": [ "root", - "XJEFVt5M6qYD", - "CrL7kOfiH3gi", - "wnUv1czOT6PN" + "FtiygOkEmMDS", + "d3v6rbml5pNb", + "I2ou3HTZAzs7" ], "title": "Day template", "notePosition": 20, @@ -2222,11 +2222,11 @@ }, { "isClone": false, - "noteId": "NNIqWMB0ji7L", + "noteId": "hOzqw9kNAlft", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L" + "FtiygOkEmMDS", + "hOzqw9kNAlft" ], "title": "Tech", "notePosition": 40, @@ -2242,12 +2242,12 @@ "children": [ { "isClone": false, - "noteId": "jJ3Bl59rmY8Z", + "noteId": "OkSoay0Do1Nt", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "jJ3Bl59rmY8Z" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "OkSoay0Do1Nt" ], "title": "Security", "notePosition": 10, @@ -2262,13 +2262,13 @@ "children": [ { "isClone": true, - "noteId": "SEUXtxTLPcjC", + "noteId": "P9MH8H8ctFpL", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "jJ3Bl59rmY8Z", - "SEUXtxTLPcjC" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "OkSoay0Do1Nt", + "P9MH8H8ctFpL" ], "title": "Trusted timestamping", "prefix": null, @@ -2280,12 +2280,12 @@ }, { "isClone": false, - "noteId": "8RUTKYtHJRFI", + "noteId": "duUMTFS6dpXO", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "8RUTKYtHJRFI" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "duUMTFS6dpXO" ], "title": "Linux", "notePosition": 20, @@ -2300,13 +2300,13 @@ "children": [ { "isClone": false, - "noteId": "BWu10M3QFwmI", + "noteId": "vqVUbLWJwaKd", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "8RUTKYtHJRFI", - "BWu10M3QFwmI" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "duUMTFS6dpXO", + "vqVUbLWJwaKd" ], "title": "History", "notePosition": 0, @@ -2321,13 +2321,13 @@ }, { "isClone": false, - "noteId": "7XkmvjHTKNcx", + "noteId": "ALuhWZrvrzdI", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "8RUTKYtHJRFI", - "7XkmvjHTKNcx" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "duUMTFS6dpXO", + "ALuhWZrvrzdI" ], "title": "Bash scripting", "notePosition": 10, @@ -2343,14 +2343,14 @@ "children": [ { "isClone": false, - "noteId": "D8R8tIIuvAP7", + "noteId": "lQe89w4csPgR", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "8RUTKYtHJRFI", - "7XkmvjHTKNcx", - "D8R8tIIuvAP7" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "duUMTFS6dpXO", + "ALuhWZrvrzdI", + "lQe89w4csPgR" ], "title": "While loop", "notePosition": 0, @@ -2365,14 +2365,14 @@ }, { "isClone": false, - "noteId": "ynCjICCcBpSu", + "noteId": "QW07m5sFHgEQ", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "8RUTKYtHJRFI", - "7XkmvjHTKNcx", - "ynCjICCcBpSu" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "duUMTFS6dpXO", + "ALuhWZrvrzdI", + "QW07m5sFHgEQ" ], "title": "Bash startup modes", "notePosition": 10, @@ -2389,13 +2389,13 @@ }, { "isClone": false, - "noteId": "2Jo1eK1jovYN", + "noteId": "gr1p9y586t6M", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "8RUTKYtHJRFI", - "2Jo1eK1jovYN" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "duUMTFS6dpXO", + "gr1p9y586t6M" ], "title": "Ubuntu", "notePosition": 20, @@ -2411,14 +2411,14 @@ "children": [ { "isClone": false, - "noteId": "XXExVJNvq3Jr", + "noteId": "Z8z0lGDQTFQD", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "8RUTKYtHJRFI", - "2Jo1eK1jovYN", - "XXExVJNvq3Jr" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "duUMTFS6dpXO", + "gr1p9y586t6M", + "Z8z0lGDQTFQD" ], "title": "Unity shortcuts", "notePosition": 0, @@ -2437,12 +2437,12 @@ }, { "isClone": false, - "noteId": "YjIUiStiLhGU", + "noteId": "u8m3XiJ7bYxl", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "YjIUiStiLhGU" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "u8m3XiJ7bYxl" ], "title": "Programming", "notePosition": 30, @@ -2457,13 +2457,13 @@ "children": [ { "isClone": false, - "noteId": "vZ3bX2kZF9Jl", + "noteId": "VVcRaT0WiIa8", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "YjIUiStiLhGU", - "vZ3bX2kZF9Jl" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "u8m3XiJ7bYxl", + "VVcRaT0WiIa8" ], "title": "Java", "notePosition": 0, @@ -2478,13 +2478,13 @@ }, { "isClone": true, - "noteId": "7XkmvjHTKNcx", + "noteId": "ALuhWZrvrzdI", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "YjIUiStiLhGU", - "7XkmvjHTKNcx" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "u8m3XiJ7bYxl", + "ALuhWZrvrzdI" ], "title": "Bash scripting", "prefix": null, @@ -2496,12 +2496,12 @@ }, { "isClone": false, - "noteId": "G1S4GZWkKKzQ", + "noteId": "iHsDXMcUoBUR", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "G1S4GZWkKKzQ" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "iHsDXMcUoBUR" ], "title": "node.js", "notePosition": 40, @@ -2515,13 +2515,13 @@ "children": [ { "isClone": false, - "noteId": "KvEIrMLs8ftX", + "noteId": "1sTyfgKlFJY7", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "G1S4GZWkKKzQ", - "KvEIrMLs8ftX" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "iHsDXMcUoBUR", + "1sTyfgKlFJY7" ], "title": "Intro", "notePosition": 0, @@ -2536,13 +2536,13 @@ }, { "isClone": false, - "noteId": "MsUi0EPAXxql", + "noteId": "N1J2l8RDEGA1", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "G1S4GZWkKKzQ", - "MsUi0EPAXxql" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "iHsDXMcUoBUR", + "N1J2l8RDEGA1" ], "title": "Overview", "notePosition": 10, @@ -2558,14 +2558,14 @@ "children": [ { "isClone": false, - "noteId": "erCU4xq3fXXn", + "noteId": "tm6EzNPQBSjN", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "G1S4GZWkKKzQ", - "MsUi0EPAXxql", - "erCU4xq3fXXn" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "iHsDXMcUoBUR", + "N1J2l8RDEGA1", + "tm6EzNPQBSjN" ], "title": "History", "notePosition": 0, @@ -2580,14 +2580,14 @@ }, { "isClone": false, - "noteId": "bJHFZ8QXlIeN", + "noteId": "4Pf0Qc7IX1Ei", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "G1S4GZWkKKzQ", - "MsUi0EPAXxql", - "bJHFZ8QXlIeN" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "iHsDXMcUoBUR", + "N1J2l8RDEGA1", + "4Pf0Qc7IX1Ei" ], "title": "Platform architecture", "notePosition": 10, @@ -2602,14 +2602,14 @@ }, { "isClone": false, - "noteId": "PHZwup9u3bC7", + "noteId": "GMymOZrjBAiP", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "G1S4GZWkKKzQ", - "MsUi0EPAXxql", - "PHZwup9u3bC7" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "iHsDXMcUoBUR", + "N1J2l8RDEGA1", + "GMymOZrjBAiP" ], "title": "Industry support", "notePosition": 20, @@ -2626,13 +2626,13 @@ }, { "isClone": false, - "noteId": "HawvFHdfJDZH", + "noteId": "sVFnFQqXetM3", "notePath": [ "root", - "XJEFVt5M6qYD", - "NNIqWMB0ji7L", - "G1S4GZWkKKzQ", - "HawvFHdfJDZH" + "FtiygOkEmMDS", + "hOzqw9kNAlft", + "iHsDXMcUoBUR", + "sVFnFQqXetM3" ], "title": "Releases", "notePosition": 20, @@ -2651,11 +2651,11 @@ }, { "isClone": false, - "noteId": "W9DrntrDdeov", + "noteId": "DqtRSpsqtO1J", "notePath": [ "root", - "XJEFVt5M6qYD", - "W9DrntrDdeov" + "FtiygOkEmMDS", + "DqtRSpsqtO1J" ], "title": "Canvas note", "notePosition": 60, @@ -2667,7 +2667,7 @@ "dataFileName": "Canvas note.json", "attachments": [ { - "attachmentId": "6LvXsiy0ox9s", + "attachmentId": "PvXKdojMMGPO", "title": "canvas-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2678,11 +2678,11 @@ }, { "isClone": false, - "noteId": "6eIB85IPXShx", + "noteId": "xNgX9Cfpn6WV", "notePath": [ "root", - "XJEFVt5M6qYD", - "6eIB85IPXShx" + "FtiygOkEmMDS", + "xNgX9Cfpn6WV" ], "title": "Mind map", "notePosition": 70, @@ -2694,7 +2694,7 @@ "dataFileName": "Mind map.json", "attachments": [ { - "attachmentId": "KmaypjKyUVFu", + "attachmentId": "AkBBpHsWU3al", "title": "mindmap-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2706,12 +2706,12 @@ "children": [ { "isClone": false, - "noteId": "yLiBvJl9WV1Q", + "noteId": "fEVjKqQ7GH8c", "notePath": [ "root", - "XJEFVt5M6qYD", - "6eIB85IPXShx", - "yLiBvJl9WV1Q" + "FtiygOkEmMDS", + "xNgX9Cfpn6WV", + "fEVjKqQ7GH8c" ], "title": "new note", "notePosition": 10, @@ -2726,13 +2726,13 @@ "children": [ { "isClone": false, - "noteId": "SqyjgWkzGAZZ", + "noteId": "5HiOzgaB0f0K", "notePath": [ "root", - "XJEFVt5M6qYD", - "6eIB85IPXShx", - "yLiBvJl9WV1Q", - "SqyjgWkzGAZZ" + "FtiygOkEmMDS", + "xNgX9Cfpn6WV", + "fEVjKqQ7GH8c", + "5HiOzgaB0f0K" ], "title": "new note", "notePosition": 10, @@ -2748,12 +2748,12 @@ }, { "isClone": false, - "noteId": "oT8CNgIp8EO8", + "noteId": "0Koo5INsjStF", "notePath": [ "root", - "XJEFVt5M6qYD", - "6eIB85IPXShx", - "oT8CNgIp8EO8" + "FtiygOkEmMDS", + "xNgX9Cfpn6WV", + "0Koo5INsjStF" ], "title": "new note", "notePosition": 20, @@ -2769,11 +2769,11 @@ }, { "isClone": false, - "noteId": "cGgu8Goni5Gq", + "noteId": "phOCwtqe5BEl", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq" + "FtiygOkEmMDS", + "phOCwtqe5BEl" ], "title": "Mermaid Diagrams", "notePosition": 90, @@ -2787,12 +2787,12 @@ "children": [ { "isClone": false, - "noteId": "9dWwwuYMshZY", + "noteId": "f3BBvRL6bSS9", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "9dWwwuYMshZY" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "f3BBvRL6bSS9" ], "title": "Flow", "notePosition": 10, @@ -2804,7 +2804,7 @@ "dataFileName": "Flow.txt", "attachments": [ { - "attachmentId": "iUHJAzgqRuMo", + "attachmentId": "Rqv2dzfqNAS1", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2815,12 +2815,12 @@ }, { "isClone": false, - "noteId": "2rdsCrl1iFO7", + "noteId": "xtkLqtxvx34U", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "2rdsCrl1iFO7" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "xtkLqtxvx34U" ], "title": "Flow (ELK)", "notePosition": 11, @@ -2832,7 +2832,7 @@ "dataFileName": "Flow (ELK).txt", "attachments": [ { - "attachmentId": "mLf3sbf69p1D", + "attachmentId": "WIMIbmvsYe6X", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2843,12 +2843,12 @@ }, { "isClone": false, - "noteId": "wdHE4szZrcD0", + "noteId": "OzjB6oBq4keh", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "wdHE4szZrcD0" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "OzjB6oBq4keh" ], "title": "Sequence", "notePosition": 20, @@ -2860,7 +2860,7 @@ "dataFileName": "Sequence.txt", "attachments": [ { - "attachmentId": "vQKkw46z2NMl", + "attachmentId": "5nuEMI7uRl6k", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2871,12 +2871,12 @@ }, { "isClone": false, - "noteId": "sjMVBpYYNWbp", + "noteId": "occLBTEPCP5B", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "sjMVBpYYNWbp" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "occLBTEPCP5B" ], "title": "Gantt", "notePosition": 30, @@ -2888,7 +2888,7 @@ "dataFileName": "Gantt.txt", "attachments": [ { - "attachmentId": "78DIoTjN8iaE", + "attachmentId": "Lm8Fuvggln5A", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2899,12 +2899,12 @@ }, { "isClone": false, - "noteId": "rHzETQFSfe9j", + "noteId": "IofzKNj6tycJ", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "rHzETQFSfe9j" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "IofzKNj6tycJ" ], "title": "Class", "notePosition": 40, @@ -2916,7 +2916,7 @@ "dataFileName": "Class.txt", "attachments": [ { - "attachmentId": "pcT8QyZukO7P", + "attachmentId": "bIMT0iXIyHot", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2927,12 +2927,12 @@ }, { "isClone": false, - "noteId": "h62Pt4Vd2qBS", + "noteId": "jijpsu3vKSgT", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "h62Pt4Vd2qBS" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "jijpsu3vKSgT" ], "title": "State", "notePosition": 50, @@ -2944,7 +2944,7 @@ "dataFileName": "State.txt", "attachments": [ { - "attachmentId": "RxZ8Ks6ybMth", + "attachmentId": "Axg6JqsMBlVI", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2955,12 +2955,12 @@ }, { "isClone": false, - "noteId": "zzHPxghAOOew", + "noteId": "Ch9fsvni3lyV", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "zzHPxghAOOew" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "Ch9fsvni3lyV" ], "title": "Mind Map", "notePosition": 60, @@ -2972,7 +2972,7 @@ "dataFileName": "Mind Map.txt", "attachments": [ { - "attachmentId": "LId1L3pDrNA4", + "attachmentId": "8bCQJb86VydA", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -2983,12 +2983,12 @@ }, { "isClone": false, - "noteId": "xa3tgvVqNNIQ", + "noteId": "ai6YHwnwrIsS", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "xa3tgvVqNNIQ" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "ai6YHwnwrIsS" ], "title": "Pie", "notePosition": 70, @@ -3000,7 +3000,7 @@ "dataFileName": "Pie.txt", "attachments": [ { - "attachmentId": "jwhP8SPyeBJp", + "attachmentId": "lueKBI8TtbAB", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -3011,12 +3011,12 @@ }, { "isClone": false, - "noteId": "buth0CI4RFDj", + "noteId": "1Njm7IzExrHV", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "buth0CI4RFDj" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "1Njm7IzExrHV" ], "title": "Journey", "notePosition": 80, @@ -3028,7 +3028,7 @@ "dataFileName": "Journey.txt", "attachments": [ { - "attachmentId": "BKKMS4RgidOJ", + "attachmentId": "3bpCtsOpiCQu", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -3039,12 +3039,12 @@ }, { "isClone": false, - "noteId": "kHOumEzW7zn5", + "noteId": "iM6CYtTYuBis", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "kHOumEzW7zn5" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "iM6CYtTYuBis" ], "title": "Git", "notePosition": 90, @@ -3056,7 +3056,7 @@ "dataFileName": "Git.txt", "attachments": [ { - "attachmentId": "sOSg9pdiWkNz", + "attachmentId": "I97Nx1YALgfN", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -3067,12 +3067,12 @@ }, { "isClone": false, - "noteId": "qi2JJjg7ls01", + "noteId": "nSmdgGwbeu3G", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "qi2JJjg7ls01" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "nSmdgGwbeu3G" ], "title": "Entity Relationship", "notePosition": 100, @@ -3084,7 +3084,7 @@ "dataFileName": "Entity Relationship.txt", "attachments": [ { - "attachmentId": "l1XIY9U0Yo59", + "attachmentId": "vf9P7OLEyzr7", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -3095,12 +3095,12 @@ }, { "isClone": false, - "noteId": "YsuIUVggQjLJ", + "noteId": "Etvk2pukg6Bm", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "YsuIUVggQjLJ" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "Etvk2pukg6Bm" ], "title": "Bar chart", "notePosition": 110, @@ -3112,7 +3112,7 @@ "dataFileName": "Bar chart.txt", "attachments": [ { - "attachmentId": "klvUVAkSjKzZ", + "attachmentId": "tJpHNpxgFQvW", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -3123,12 +3123,12 @@ }, { "isClone": false, - "noteId": "Vl8dABppO5S2", + "noteId": "iKRcojCa5w93", "notePath": [ "root", - "XJEFVt5M6qYD", - "cGgu8Goni5Gq", - "Vl8dABppO5S2" + "FtiygOkEmMDS", + "phOCwtqe5BEl", + "iKRcojCa5w93" ], "title": "C4", "notePosition": 120, @@ -3140,7 +3140,7 @@ "dataFileName": "C4.txt", "attachments": [ { - "attachmentId": "JsXd3scbPcig", + "attachmentId": "nEkkrAtmCsxR", "title": "mermaid-export.svg", "role": "image", "mime": "image/svg+xml", @@ -3153,11 +3153,11 @@ }, { "isClone": false, - "noteId": "ouXGJgjstZAo", + "noteId": "hUfBLOTiqZlK", "notePath": [ "root", - "XJEFVt5M6qYD", - "ouXGJgjstZAo" + "FtiygOkEmMDS", + "hUfBLOTiqZlK" ], "title": "Books", "notePosition": 120, @@ -3169,7 +3169,7 @@ { "type": "relation", "name": "child:template", - "value": "WjbOZguv7xwV", + "value": "CghlcBI9GjFT", "isInheritable": false, "position": 10 }, @@ -3194,12 +3194,12 @@ "children": [ { "isClone": false, - "noteId": "VhDY45EtG4e4", + "noteId": "XkZkZzUJwE7v", "notePath": [ "root", - "XJEFVt5M6qYD", - "ouXGJgjstZAo", - "VhDY45EtG4e4" + "FtiygOkEmMDS", + "hUfBLOTiqZlK", + "XkZkZzUJwE7v" ], "title": "To read", "notePosition": 0, @@ -3214,12 +3214,12 @@ }, { "isClone": false, - "noteId": "WjbOZguv7xwV", + "noteId": "CghlcBI9GjFT", "notePath": [ "root", - "XJEFVt5M6qYD", - "ouXGJgjstZAo", - "WjbOZguv7xwV" + "FtiygOkEmMDS", + "hUfBLOTiqZlK", + "CghlcBI9GjFT" ], "title": "Book template", "notePosition": 10, @@ -3278,13 +3278,13 @@ "children": [ { "isClone": false, - "noteId": "BF74PaTQC3Zf", + "noteId": "M9nmn7OfIGAn", "notePath": [ "root", - "XJEFVt5M6qYD", - "ouXGJgjstZAo", - "WjbOZguv7xwV", - "BF74PaTQC3Zf" + "FtiygOkEmMDS", + "hUfBLOTiqZlK", + "CghlcBI9GjFT", + "M9nmn7OfIGAn" ], "title": "Highlights", "notePosition": 10, @@ -3301,12 +3301,12 @@ }, { "isClone": false, - "noteId": "5zX2YfnOd7vz", + "noteId": "0xC1qUuW4s7i", "notePath": [ "root", - "XJEFVt5M6qYD", - "ouXGJgjstZAo", - "5zX2YfnOd7vz" + "FtiygOkEmMDS", + "hUfBLOTiqZlK", + "0xC1qUuW4s7i" ], "title": "Reviews", "notePosition": 20, @@ -3318,7 +3318,7 @@ { "type": "relation", "name": "child:template", - "value": "WjbOZguv7xwV", + "value": "CghlcBI9GjFT", "isInheritable": false, "position": 10 } @@ -3329,13 +3329,13 @@ "children": [ { "isClone": true, - "noteId": "zjpJcrlXbZIu", + "noteId": "2H2LKhcNT0vM", "notePath": [ "root", - "XJEFVt5M6qYD", - "ouXGJgjstZAo", - "5zX2YfnOd7vz", - "zjpJcrlXbZIu" + "FtiygOkEmMDS", + "hUfBLOTiqZlK", + "0xC1qUuW4s7i", + "2H2LKhcNT0vM" ], "title": "The Mechanical", "prefix": null, @@ -3349,11 +3349,11 @@ }, { "isClone": false, - "noteId": "xNGCRpVgEPgt", + "noteId": "dwWJwYhru0Qz", "notePath": [ "root", - "XJEFVt5M6qYD", - "xNGCRpVgEPgt" + "FtiygOkEmMDS", + "dwWJwYhru0Qz" ], "title": "Work", "notePosition": 140, @@ -3368,12 +3368,12 @@ "children": [ { "isClone": false, - "noteId": "6R0QcO4Bmcth", + "noteId": "iFWgBjUbeuc3", "notePath": [ "root", - "XJEFVt5M6qYD", - "xNGCRpVgEPgt", - "6R0QcO4Bmcth" + "FtiygOkEmMDS", + "dwWJwYhru0Qz", + "iFWgBjUbeuc3" ], "title": "HR", "notePosition": 0, @@ -3388,12 +3388,12 @@ }, { "isClone": false, - "noteId": "EjeYbUSLMRN1", + "noteId": "FhOOUuhiosSQ", "notePath": [ "root", - "XJEFVt5M6qYD", - "xNGCRpVgEPgt", - "EjeYbUSLMRN1" + "FtiygOkEmMDS", + "dwWJwYhru0Qz", + "FhOOUuhiosSQ" ], "title": "Processes", "notePosition": 10, @@ -3408,12 +3408,12 @@ }, { "isClone": false, - "noteId": "llRMjY7UbIbF", + "noteId": "kRPYWqjg26d7", "notePath": [ "root", - "XJEFVt5M6qYD", - "xNGCRpVgEPgt", - "llRMjY7UbIbF" + "FtiygOkEmMDS", + "dwWJwYhru0Qz", + "kRPYWqjg26d7" ], "title": "Projects", "notePosition": 20, @@ -3430,11 +3430,11 @@ }, { "isClone": false, - "noteId": "nGOQnzK5W4no", + "noteId": "8IeNKcL6lNrC", "notePath": [ "root", - "XJEFVt5M6qYD", - "nGOQnzK5W4no" + "FtiygOkEmMDS", + "8IeNKcL6lNrC" ], "title": "Steel Blue", "notePosition": 150, @@ -3457,12 +3457,12 @@ "children": [ { "isClone": false, - "noteId": "HU2yazFCvxHf", + "noteId": "nJUwOP45tYau", "notePath": [ "root", - "XJEFVt5M6qYD", - "nGOQnzK5W4no", - "HU2yazFCvxHf" + "FtiygOkEmMDS", + "8IeNKcL6lNrC", + "nJUwOP45tYau" ], "title": "eb-garamond-v9-latin-regular.woff2", "notePosition": 0, @@ -3498,12 +3498,12 @@ }, { "isClone": false, - "noteId": "8C0YAt5316Hs", + "noteId": "y9tR8b2oYDFz", "notePath": [ "root", - "XJEFVt5M6qYD", - "nGOQnzK5W4no", - "8C0YAt5316Hs" + "FtiygOkEmMDS", + "8IeNKcL6lNrC", + "y9tR8b2oYDFz" ], "title": "raleway-v12-latin-regular.woff2", "notePosition": 10, @@ -3541,11 +3541,11 @@ }, { "isClone": false, - "noteId": "e3zXJeViocqt", + "noteId": "ZWpJhuDGCnu1", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1" ], "title": "Scripting examples", "notePosition": 340, @@ -3568,12 +3568,12 @@ "children": [ { "isClone": false, - "noteId": "XM5G5tHpD4Z8", + "noteId": "6Qd9PXaTJwjH", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH" ], "title": "Task manager", "notePosition": 10, @@ -3597,13 +3597,13 @@ "children": [ { "isClone": false, - "noteId": "yVut4Kr6Xj66", + "noteId": "lJRseWsEqchL", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL" ], "title": "Locations", "notePosition": 10, @@ -3633,14 +3633,14 @@ "children": [ { "isClone": false, - "noteId": "YxDcecyapiDR", + "noteId": "kR8iNJu7dxGA", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "YxDcecyapiDR" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "kR8iNJu7dxGA" ], "title": "gym", "notePosition": 0, @@ -3663,14 +3663,14 @@ }, { "isClone": false, - "noteId": "R54TMfhdLmJY", + "noteId": "Muwv9RLnd19s", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "R54TMfhdLmJY" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "Muwv9RLnd19s" ], "title": "work", "notePosition": 10, @@ -3693,15 +3693,15 @@ "children": [ { "isClone": false, - "noteId": "b9kgsOcFA1sX", + "noteId": "U4JlNQ3ohVGL", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "R54TMfhdLmJY", - "b9kgsOcFA1sX" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "Muwv9RLnd19s", + "U4JlNQ3ohVGL" ], "title": "Send invites for christmas party", "notePosition": 10, @@ -3720,7 +3720,7 @@ { "type": "relation", "name": "template", - "value": "XEzcauVZQ2j1", + "value": "bJ9mEBUdAzRs", "isInheritable": false, "position": 20 }, @@ -3761,14 +3761,14 @@ }, { "isClone": false, - "noteId": "NBlcJY0PXFki", + "noteId": "WKM22gilMh23", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "NBlcJY0PXFki" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "WKM22gilMh23" ], "title": "tesco", "notePosition": 20, @@ -3791,15 +3791,15 @@ "children": [ { "isClone": false, - "noteId": "7gbHeSqLTkys", + "noteId": "JHoavgAYkhst", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "NBlcJY0PXFki", - "7gbHeSqLTkys" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "WKM22gilMh23", + "JHoavgAYkhst" ], "title": "Buy milk", "notePosition": 10, @@ -3818,7 +3818,7 @@ { "type": "relation", "name": "template", - "value": "XEzcauVZQ2j1", + "value": "bJ9mEBUdAzRs", "isInheritable": false, "position": 2 }, @@ -3873,14 +3873,14 @@ }, { "isClone": false, - "noteId": "CKmj8x1dFoaA", + "noteId": "Exq2x2BUJtPI", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "CKmj8x1dFoaA" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "Exq2x2BUJtPI" ], "title": "mall", "notePosition": 30, @@ -3903,15 +3903,15 @@ "children": [ { "isClone": false, - "noteId": "jBXKYoX0LDN2", + "noteId": "hOT0E1Wbzm1o", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "CKmj8x1dFoaA", - "jBXKYoX0LDN2" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "Exq2x2BUJtPI", + "hOT0E1Wbzm1o" ], "title": "Buy some book for Bob", "notePosition": 0, @@ -3930,7 +3930,7 @@ { "type": "relation", "name": "template", - "value": "XEzcauVZQ2j1", + "value": "bJ9mEBUdAzRs", "isInheritable": false, "position": 20 }, @@ -3984,16 +3984,16 @@ "children": [ { "isClone": false, - "noteId": "frfW70D8XLVg", + "noteId": "K1zqN7HRgPbI", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "yVut4Kr6Xj66", - "CKmj8x1dFoaA", - "jBXKYoX0LDN2", - "frfW70D8XLVg" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "lJRseWsEqchL", + "Exq2x2BUJtPI", + "hOT0E1Wbzm1o", + "K1zqN7HRgPbI" ], "title": "Maybe Black Swan?", "notePosition": 0, @@ -4014,13 +4014,13 @@ }, { "isClone": false, - "noteId": "ymVNoPCR16Jb", + "noteId": "5GFXBV19FphT", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "ymVNoPCR16Jb" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "5GFXBV19FphT" ], "title": "Done", "notePosition": 20, @@ -4050,14 +4050,14 @@ "children": [ { "isClone": false, - "noteId": "liGRIHxCiSWw", + "noteId": "wqiCrh2p0ovi", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "ymVNoPCR16Jb", - "liGRIHxCiSWw" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "5GFXBV19FphT", + "wqiCrh2p0ovi" ], "title": "Buy a board game for Alice", "notePosition": 10, @@ -4076,7 +4076,7 @@ { "type": "relation", "name": "template", - "value": "XEzcauVZQ2j1", + "value": "bJ9mEBUdAzRs", "isInheritable": false, "position": 20 }, @@ -4127,7 +4127,7 @@ "dataFileName": "Buy a board game for Alice.html", "attachments": [ { - "attachmentId": "gFpjqqGYbAc4", + "attachmentId": "Kw6fgQOwuXiS", "title": "codenames.jpg", "role": "image", "mime": "image/jpg", @@ -4138,14 +4138,14 @@ }, { "isClone": false, - "noteId": "lQBOB507cHSe", + "noteId": "QQak21C6xIJ4", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "ymVNoPCR16Jb", - "lQBOB507cHSe" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "5GFXBV19FphT", + "QQak21C6xIJ4" ], "title": "Dentist appointment", "notePosition": 20, @@ -4164,7 +4164,7 @@ { "type": "relation", "name": "template", - "value": "XEzcauVZQ2j1", + "value": "bJ9mEBUdAzRs", "isInheritable": false, "position": 20 }, @@ -4203,14 +4203,14 @@ }, { "isClone": false, - "noteId": "hgsu02XiwJC6", + "noteId": "g0ziLtR78867", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "ymVNoPCR16Jb", - "hgsu02XiwJC6" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "5GFXBV19FphT", + "g0ziLtR78867" ], "title": "Get a gym membership", "notePosition": 20, @@ -4229,7 +4229,7 @@ { "type": "relation", "name": "template", - "value": "XEzcauVZQ2j1", + "value": "bJ9mEBUdAzRs", "isInheritable": false, "position": 20 }, @@ -4270,13 +4270,13 @@ }, { "isClone": false, - "noteId": "UqWjxjHp1ngA", + "noteId": "VVDuQFGDwjcb", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "UqWjxjHp1ngA" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "VVDuQFGDwjcb" ], "title": "TODO", "notePosition": 30, @@ -4302,7 +4302,7 @@ { "type": "relation", "name": "child:template", - "value": "XEzcauVZQ2j1", + "value": "bJ9mEBUdAzRs", "isInheritable": false, "position": 30 }, @@ -4334,14 +4334,14 @@ "children": [ { "isClone": true, - "noteId": "b9kgsOcFA1sX", + "noteId": "U4JlNQ3ohVGL", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "UqWjxjHp1ngA", - "b9kgsOcFA1sX" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "VVDuQFGDwjcb", + "U4JlNQ3ohVGL" ], "title": "Send invites for christmas party", "prefix": null, @@ -4351,14 +4351,14 @@ }, { "isClone": true, - "noteId": "7gbHeSqLTkys", + "noteId": "JHoavgAYkhst", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "UqWjxjHp1ngA", - "7gbHeSqLTkys" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "VVDuQFGDwjcb", + "JHoavgAYkhst" ], "title": "Buy milk", "prefix": null, @@ -4368,14 +4368,14 @@ }, { "isClone": true, - "noteId": "jBXKYoX0LDN2", + "noteId": "hOT0E1Wbzm1o", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "UqWjxjHp1ngA", - "jBXKYoX0LDN2" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "VVDuQFGDwjcb", + "hOT0E1Wbzm1o" ], "title": "Buy some book for Bob", "prefix": null, @@ -4387,13 +4387,13 @@ }, { "isClone": false, - "noteId": "dtp2dIE4Moa1", + "noteId": "LfmwZfKWGvGJ", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "dtp2dIE4Moa1" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "LfmwZfKWGvGJ" ], "title": "Implementation", "notePosition": 40, @@ -4416,14 +4416,14 @@ "children": [ { "isClone": false, - "noteId": "ccWbvokWu56e", + "noteId": "nPRm9CYxs2e6", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "dtp2dIE4Moa1", - "ccWbvokWu56e" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "LfmwZfKWGvGJ", + "nPRm9CYxs2e6" ], "title": "attribute changed", "notePosition": 0, @@ -4438,15 +4438,15 @@ "children": [ { "isClone": false, - "noteId": "JEp1CUnU3R7h", + "noteId": "NSKwsJxk38tQ", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "dtp2dIE4Moa1", - "ccWbvokWu56e", - "JEp1CUnU3R7h" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "LfmwZfKWGvGJ", + "nPRm9CYxs2e6", + "NSKwsJxk38tQ" ], "title": "reconcileAssignments", "notePosition": 0, @@ -4462,14 +4462,14 @@ }, { "isClone": false, - "noteId": "m4fL3OKkT8Hu", + "noteId": "B6tkn88BAs8W", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "dtp2dIE4Moa1", - "m4fL3OKkT8Hu" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "LfmwZfKWGvGJ", + "B6tkn88BAs8W" ], "title": "CSS", "notePosition": 20, @@ -4491,14 +4491,14 @@ }, { "isClone": false, - "noteId": "XEzcauVZQ2j1", + "noteId": "bJ9mEBUdAzRs", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "dtp2dIE4Moa1", - "XEzcauVZQ2j1" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "LfmwZfKWGvGJ", + "bJ9mEBUdAzRs" ], "title": "task template", "notePosition": 30, @@ -4559,7 +4559,7 @@ { "type": "relation", "name": "runOnAttributeChange", - "value": "ccWbvokWu56e", + "value": "nPRm9CYxs2e6", "isInheritable": false, "position": 10 } @@ -4570,14 +4570,14 @@ }, { "isClone": false, - "noteId": "okxKfQMUHruP", + "noteId": "43Iv9nS3Z9OL", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "dtp2dIE4Moa1", - "okxKfQMUHruP" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "LfmwZfKWGvGJ", + "43Iv9nS3Z9OL" ], "title": "createNewTask", "notePosition": 40, @@ -4593,13 +4593,13 @@ }, { "isClone": false, - "noteId": "6npVHSmV7IaT", + "noteId": "UDFdlHTzgRWs", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs" ], "title": "Tags", "notePosition": 50, @@ -4629,14 +4629,14 @@ "children": [ { "isClone": false, - "noteId": "lpaLpZAGRgQP", + "noteId": "7NxqazsORSzB", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "lpaLpZAGRgQP" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "7NxqazsORSzB" ], "title": "health", "notePosition": 0, @@ -4659,14 +4659,14 @@ }, { "isClone": false, - "noteId": "Uv2MBCPN2BVL", + "noteId": "s434RcryMPLi", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "Uv2MBCPN2BVL" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "s434RcryMPLi" ], "title": "shopping", "notePosition": 10, @@ -4689,15 +4689,15 @@ "children": [ { "isClone": true, - "noteId": "jBXKYoX0LDN2", + "noteId": "hOT0E1Wbzm1o", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "Uv2MBCPN2BVL", - "jBXKYoX0LDN2" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "s434RcryMPLi", + "hOT0E1Wbzm1o" ], "title": "Buy some book for Bob", "prefix": null, @@ -4707,15 +4707,15 @@ }, { "isClone": true, - "noteId": "7gbHeSqLTkys", + "noteId": "JHoavgAYkhst", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "Uv2MBCPN2BVL", - "7gbHeSqLTkys" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "s434RcryMPLi", + "JHoavgAYkhst" ], "title": "Buy milk", "prefix": null, @@ -4727,14 +4727,14 @@ }, { "isClone": false, - "noteId": "QhQi0dLA9YtN", + "noteId": "hloK4i7Uy0pA", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "QhQi0dLA9YtN" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "hloK4i7Uy0pA" ], "title": "groceries", "notePosition": 20, @@ -4757,15 +4757,15 @@ "children": [ { "isClone": true, - "noteId": "7gbHeSqLTkys", + "noteId": "JHoavgAYkhst", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "QhQi0dLA9YtN", - "7gbHeSqLTkys" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "hloK4i7Uy0pA", + "JHoavgAYkhst" ], "title": "Buy milk", "prefix": null, @@ -4777,14 +4777,14 @@ }, { "isClone": false, - "noteId": "J48ZYSjsO9fy", + "noteId": "SxeGwMiza1JG", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "J48ZYSjsO9fy" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "SxeGwMiza1JG" ], "title": "christmas", "notePosition": 30, @@ -4807,15 +4807,15 @@ "children": [ { "isClone": true, - "noteId": "jBXKYoX0LDN2", + "noteId": "hOT0E1Wbzm1o", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "6npVHSmV7IaT", - "J48ZYSjsO9fy", - "jBXKYoX0LDN2" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "UDFdlHTzgRWs", + "SxeGwMiza1JG", + "hOT0E1Wbzm1o" ], "title": "Buy some book for Bob", "prefix": null, @@ -4829,13 +4829,13 @@ }, { "isClone": false, - "noteId": "ydyjlX307h0r", + "noteId": "M4vFbzhmbj0l", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "XM5G5tHpD4Z8", - "ydyjlX307h0r" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "6Qd9PXaTJwjH", + "M4vFbzhmbj0l" ], "title": "Create Launcher", "notePosition": 60, @@ -4854,7 +4854,7 @@ { "type": "relation", "name": "createNewTask", - "value": "okxKfQMUHruP", + "value": "43Iv9nS3Z9OL", "isInheritable": false, "position": 20 }, @@ -4880,12 +4880,12 @@ }, { "isClone": false, - "noteId": "JgKWJS4QVBb3", + "noteId": "57IeEbkEhnEl", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "JgKWJS4QVBb3" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "57IeEbkEhnEl" ], "title": "Word count widget", "notePosition": 20, @@ -4907,12 +4907,12 @@ }, { "isClone": false, - "noteId": "ckYagxG4X1VC", + "noteId": "pMXxM9eg5NqK", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "ckYagxG4X1VC" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "pMXxM9eg5NqK" ], "title": "Weight Tracker", "notePosition": 40, @@ -4945,7 +4945,7 @@ { "type": "relation", "name": "renderNote", - "value": "9q3j6pkXlkJj", + "value": "yfeoRDP52MV6", "isInheritable": false, "position": 20 } @@ -4955,13 +4955,13 @@ "children": [ { "isClone": false, - "noteId": "9q3j6pkXlkJj", + "noteId": "yfeoRDP52MV6", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "ckYagxG4X1VC", - "9q3j6pkXlkJj" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "pMXxM9eg5NqK", + "yfeoRDP52MV6" ], "title": "Implementation", "notePosition": 0, @@ -4976,14 +4976,14 @@ "children": [ { "isClone": false, - "noteId": "IymtFf1AvOmH", + "noteId": "JZUpxei2NNw3", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "ckYagxG4X1VC", - "9q3j6pkXlkJj", - "IymtFf1AvOmH" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "pMXxM9eg5NqK", + "yfeoRDP52MV6", + "JZUpxei2NNw3" ], "title": "JS code", "notePosition": 0, @@ -4998,15 +4998,15 @@ "children": [ { "isClone": false, - "noteId": "LjyPl4eYkt1M", + "noteId": "vL3KOWTzds76", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "ckYagxG4X1VC", - "9q3j6pkXlkJj", - "IymtFf1AvOmH", - "LjyPl4eYkt1M" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "pMXxM9eg5NqK", + "yfeoRDP52MV6", + "JZUpxei2NNw3", + "vL3KOWTzds76" ], "title": "chart.js", "notePosition": 0, @@ -5034,12 +5034,12 @@ }, { "isClone": false, - "noteId": "dpfTnALqwZnE", + "noteId": "E63HWDaaO1Ho", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho" ], "title": "Statistics", "notePosition": 60, @@ -5061,13 +5061,13 @@ "children": [ { "isClone": false, - "noteId": "zEMN3mCaPuh2", + "noteId": "CosZwpD6uErT", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT" ], "title": "Attribute count", "notePosition": 10, @@ -5079,7 +5079,7 @@ { "type": "relation", "name": "renderNote", - "value": "lUPyZo9fbSRE", + "value": "s13a1G7s7cpy", "isInheritable": false, "position": 10 } @@ -5089,14 +5089,14 @@ "children": [ { "isClone": false, - "noteId": "lUPyZo9fbSRE", + "noteId": "s13a1G7s7cpy", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2", - "lUPyZo9fbSRE" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT", + "s13a1G7s7cpy" ], "title": "template", "notePosition": 0, @@ -5111,15 +5111,15 @@ "children": [ { "isClone": false, - "noteId": "zSAxqoORt1yk", + "noteId": "j2EuKfKLDSrY", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2", - "lUPyZo9fbSRE", - "zSAxqoORt1yk" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT", + "s13a1G7s7cpy", + "j2EuKfKLDSrY" ], "title": "js", "notePosition": 0, @@ -5134,16 +5134,16 @@ "children": [ { "isClone": false, - "noteId": "ZIlOFqHuqrVK", + "noteId": "ChYR4DUtEjvh", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2", - "lUPyZo9fbSRE", - "zSAxqoORt1yk", - "ZIlOFqHuqrVK" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT", + "s13a1G7s7cpy", + "j2EuKfKLDSrY", + "ChYR4DUtEjvh" ], "title": "renderPieChart", "notePosition": 0, @@ -5158,17 +5158,17 @@ "children": [ { "isClone": false, - "noteId": "iKX4flDvn9tv", + "noteId": "TZFdKmV32OMF", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2", - "lUPyZo9fbSRE", - "zSAxqoORt1yk", - "ZIlOFqHuqrVK", - "iKX4flDvn9tv" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT", + "s13a1G7s7cpy", + "j2EuKfKLDSrY", + "ChYR4DUtEjvh", + "TZFdKmV32OMF" ], "title": "chartjs-plugin-datalabels.min.js", "notePosition": 0, @@ -5191,18 +5191,18 @@ "children": [ { "isClone": true, - "noteId": "LjyPl4eYkt1M", + "noteId": "vL3KOWTzds76", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2", - "lUPyZo9fbSRE", - "zSAxqoORt1yk", - "ZIlOFqHuqrVK", - "iKX4flDvn9tv", - "LjyPl4eYkt1M" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT", + "s13a1G7s7cpy", + "j2EuKfKLDSrY", + "ChYR4DUtEjvh", + "TZFdKmV32OMF", + "vL3KOWTzds76" ], "title": "chart.js", "prefix": null, @@ -5214,17 +5214,17 @@ }, { "isClone": true, - "noteId": "LjyPl4eYkt1M", + "noteId": "vL3KOWTzds76", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2", - "lUPyZo9fbSRE", - "zSAxqoORt1yk", - "ZIlOFqHuqrVK", - "LjyPl4eYkt1M" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT", + "s13a1G7s7cpy", + "j2EuKfKLDSrY", + "ChYR4DUtEjvh", + "vL3KOWTzds76" ], "title": "chart.js", "prefix": null, @@ -5236,16 +5236,16 @@ }, { "isClone": false, - "noteId": "3xTyCfLx60MP", + "noteId": "oifPABaSZph8", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "zEMN3mCaPuh2", - "lUPyZo9fbSRE", - "zSAxqoORt1yk", - "3xTyCfLx60MP" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "CosZwpD6uErT", + "s13a1G7s7cpy", + "j2EuKfKLDSrY", + "oifPABaSZph8" ], "title": "renderTable", "notePosition": 10, @@ -5265,13 +5265,13 @@ }, { "isClone": false, - "noteId": "wEBWTY28wndM", + "noteId": "gkthgXWffDPN", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "wEBWTY28wndM" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "gkthgXWffDPN" ], "title": "Largest notes", "notePosition": 20, @@ -5283,7 +5283,7 @@ { "type": "relation", "name": "renderNote", - "value": "ccqRltiE84aA", + "value": "uakoupPwcnrA", "isInheritable": false, "position": 10 } @@ -5293,14 +5293,14 @@ "children": [ { "isClone": false, - "noteId": "ccqRltiE84aA", + "noteId": "uakoupPwcnrA", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "wEBWTY28wndM", - "ccqRltiE84aA" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "gkthgXWffDPN", + "uakoupPwcnrA" ], "title": "template", "notePosition": 10, @@ -5315,15 +5315,15 @@ "children": [ { "isClone": false, - "noteId": "7QCP5rb7caQ1", + "noteId": "xvYVLemE2lAW", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "wEBWTY28wndM", - "ccqRltiE84aA", - "7QCP5rb7caQ1" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "gkthgXWffDPN", + "uakoupPwcnrA", + "xvYVLemE2lAW" ], "title": "js", "notePosition": 0, @@ -5341,13 +5341,13 @@ }, { "isClone": false, - "noteId": "HdXZwirMLd7A", + "noteId": "7PsEpu0OzyUE", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "HdXZwirMLd7A" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "7PsEpu0OzyUE" ], "title": "Most edited notes", "notePosition": 30, @@ -5359,7 +5359,7 @@ { "type": "relation", "name": "renderNote", - "value": "F0WBjQwSXD0K", + "value": "k7Np10kbJWQ5", "isInheritable": false, "position": 10 } @@ -5369,14 +5369,14 @@ "children": [ { "isClone": false, - "noteId": "F0WBjQwSXD0K", + "noteId": "k7Np10kbJWQ5", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "HdXZwirMLd7A", - "F0WBjQwSXD0K" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "7PsEpu0OzyUE", + "k7Np10kbJWQ5" ], "title": "template", "notePosition": 0, @@ -5391,15 +5391,15 @@ "children": [ { "isClone": false, - "noteId": "0poHP4or3EiL", + "noteId": "EOlmdzDjuZky", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "HdXZwirMLd7A", - "F0WBjQwSXD0K", - "0poHP4or3EiL" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "7PsEpu0OzyUE", + "k7Np10kbJWQ5", + "EOlmdzDjuZky" ], "title": "js", "notePosition": 0, @@ -5417,13 +5417,13 @@ }, { "isClone": false, - "noteId": "PxMoL6h42671", + "noteId": "WDnT3bTfpkdH", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "PxMoL6h42671" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "WDnT3bTfpkdH" ], "title": "Most linked notes", "notePosition": 40, @@ -5435,7 +5435,7 @@ { "type": "relation", "name": "renderNote", - "value": "EBvJocAlNvco", + "value": "vSlDW8i5IUkk", "isInheritable": false, "position": 10 } @@ -5445,14 +5445,14 @@ "children": [ { "isClone": false, - "noteId": "EBvJocAlNvco", + "noteId": "vSlDW8i5IUkk", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "PxMoL6h42671", - "EBvJocAlNvco" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "WDnT3bTfpkdH", + "vSlDW8i5IUkk" ], "title": "template", "notePosition": 0, @@ -5467,15 +5467,15 @@ "children": [ { "isClone": false, - "noteId": "X5Tt3rVxUTKF", + "noteId": "mlbn7yV7JtY2", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "PxMoL6h42671", - "EBvJocAlNvco", - "X5Tt3rVxUTKF" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "WDnT3bTfpkdH", + "vSlDW8i5IUkk", + "mlbn7yV7JtY2" ], "title": "js", "notePosition": 0, @@ -5493,13 +5493,13 @@ }, { "isClone": false, - "noteId": "OXEDwFbmuuZk", + "noteId": "xfOX9nlSMEq6", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "OXEDwFbmuuZk" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "xfOX9nlSMEq6" ], "title": "Note type count", "notePosition": 50, @@ -5511,7 +5511,7 @@ { "type": "relation", "name": "renderNote", - "value": "uhotbIkiTvOM", + "value": "fLgtSfBHrPSO", "isInheritable": false, "position": 10 } @@ -5521,14 +5521,14 @@ "children": [ { "isClone": false, - "noteId": "uhotbIkiTvOM", + "noteId": "fLgtSfBHrPSO", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "OXEDwFbmuuZk", - "uhotbIkiTvOM" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "xfOX9nlSMEq6", + "fLgtSfBHrPSO" ], "title": "template", "notePosition": 0, @@ -5543,15 +5543,15 @@ "children": [ { "isClone": false, - "noteId": "JtoDSfoJUVGU", + "noteId": "5r8kc8c6kW3r", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "OXEDwFbmuuZk", - "uhotbIkiTvOM", - "JtoDSfoJUVGU" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "xfOX9nlSMEq6", + "fLgtSfBHrPSO", + "5r8kc8c6kW3r" ], "title": "js", "notePosition": 0, @@ -5566,16 +5566,16 @@ "children": [ { "isClone": false, - "noteId": "Cs1W1Sb2AxPo", + "noteId": "nVPQw745rQjA", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "OXEDwFbmuuZk", - "uhotbIkiTvOM", - "JtoDSfoJUVGU", - "Cs1W1Sb2AxPo" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "xfOX9nlSMEq6", + "fLgtSfBHrPSO", + "5r8kc8c6kW3r", + "nVPQw745rQjA" ], "title": "renderTable", "notePosition": 0, @@ -5589,16 +5589,16 @@ }, { "isClone": true, - "noteId": "ZIlOFqHuqrVK", + "noteId": "ChYR4DUtEjvh", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "OXEDwFbmuuZk", - "uhotbIkiTvOM", - "JtoDSfoJUVGU", - "ZIlOFqHuqrVK" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "xfOX9nlSMEq6", + "fLgtSfBHrPSO", + "5r8kc8c6kW3r", + "ChYR4DUtEjvh" ], "title": "renderPieChart", "prefix": null, @@ -5614,13 +5614,13 @@ }, { "isClone": false, - "noteId": "ewxuAhINEKtz", + "noteId": "GoBllHDhXhKe", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "ewxuAhINEKtz" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "GoBllHDhXhKe" ], "title": "Most cloned notes", "notePosition": 60, @@ -5632,7 +5632,7 @@ { "type": "relation", "name": "renderNote", - "value": "ABdh81xQ4O19", + "value": "g0kEbTKDFD72", "isInheritable": false, "position": 10 } @@ -5642,14 +5642,14 @@ "children": [ { "isClone": false, - "noteId": "ABdh81xQ4O19", + "noteId": "g0kEbTKDFD72", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "ewxuAhINEKtz", - "ABdh81xQ4O19" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "GoBllHDhXhKe", + "g0kEbTKDFD72" ], "title": "template", "notePosition": 0, @@ -5664,15 +5664,15 @@ "children": [ { "isClone": false, - "noteId": "Q38fyuVktLI1", + "noteId": "GEiB6mM8LQbF", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "dpfTnALqwZnE", - "ewxuAhINEKtz", - "ABdh81xQ4O19", - "Q38fyuVktLI1" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "E63HWDaaO1Ho", + "GoBllHDhXhKe", + "g0kEbTKDFD72", + "GEiB6mM8LQbF" ], "title": "js", "notePosition": 0, @@ -5692,12 +5692,12 @@ }, { "isClone": false, - "noteId": "HX1Ljdj8gjLj", + "noteId": "XEqJYehFycu0", "notePath": [ "root", - "XJEFVt5M6qYD", - "e3zXJeViocqt", - "HX1Ljdj8gjLj" + "FtiygOkEmMDS", + "ZWpJhuDGCnu1", + "XEqJYehFycu0" ], "title": "Custom request handler", "notePosition": 90, @@ -5709,7 +5709,7 @@ { "type": "relation", "name": "targetNote", - "value": "9UFZmVwRSh9s", + "value": "0jMfB2e4isbi", "isInheritable": false, "position": 10 }, diff --git a/demo/Demo.html b/demo/Demo.html deleted file mode 100644 index 28ec93a05..000000000 --- a/demo/Demo.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - Demo - - - -
-

Demo

- -
-
-
-
-
-
-
The sub-children of this note are automatically synced.
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Journal.dat b/demo/Demo/Journal.dat deleted file mode 100644 index e69de29bb..000000000 diff --git a/demo/Demo/Trilium Demo.html b/demo/Demo/Trilium Demo.html deleted file mode 100644 index fd201a3bd..000000000 --- a/demo/Demo/Trilium Demo.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - Trilium Demo - - - -
-

Trilium Demo

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-

Welcome to TriliumNext Notes! - -

-

This is initial "demo" document provided by TriliumNext by default to - showcase some of its features and also give you some ideas how you might - structure your notes. You can play with it, modify note content and tree - structure as you wish.

-

If you need any help, visit TriliumNext website: https://github.com/TriliumNext - -

-

Cleanup

- -

Once you're finished with experimenting and want to cleanup these pages, - you can simply delete them all.

-
 
-

Formatting

- -

TriliumNext supports classic formatting like italic, bold, bold and italic. - Of course you can add links like this one pointing to google.com - -

-

Lists

-

Ordered: - -

-
    -
  1. First Item
  2. -
  3. Second item -
      -
    1. First sub-item -
        -
      1. sub-sub-item
      2. -
      -
    2. -
    -
  4. -
-

Unordered: - -

-
    -
  • Item
  • -
  • Another item -
      -
    • Sub-item
    • -
    -
  • -
-

Block quotes

-
-

Whereof one cannot speak, thereof one must be silent”

-

– Ludwig Wittgenstein

-
-

Checkout also other examples like tables, - checkbox lists, highlighting, - code blocksand math examples.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Books/Book template.html b/demo/Demo/Trilium Demo/Books/Book template.html deleted file mode 100644 index 9199b06a9..000000000 --- a/demo/Demo/Trilium Demo/Books/Book template.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - Book template - - - -
-

Book template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -

Main characters

- -

… here put main characters …

-

 

-

Plot

- -

… describe main plot lines …

-

 

-

Tone

- -

 

-

Genre

- -

scifi / drama / romance

-

 

-

Similar books

- -
    -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Books/Book template/Highlights.html b/demo/Demo/Trilium Demo/Books/Book template/Highlights.html deleted file mode 100644 index 4b69d3567..000000000 --- a/demo/Demo/Trilium Demo/Books/Book template/Highlights.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - Highlights - - - -
-

Highlights

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

highlght 1

-
-

my comment

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Books/Reviews/The Mechanical.clone.html b/demo/Demo/Trilium Demo/Books/Reviews/The Mechanical.clone.html deleted file mode 100644 index cbaf13765..000000000 --- a/demo/Demo/Trilium Demo/Books/Reviews/The Mechanical.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - The Mechanical - - - -
-

The Mechanical

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Books/To read.html b/demo/Demo/Trilium Demo/Books/To read.html deleted file mode 100644 index a0cdbe43e..000000000 --- a/demo/Demo/Trilium Demo/Books/To read.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - To read - - - -
-

To read

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Checkout Kindle daily deals: https://www.amazon.com/gp/feature.html?docId=1000677541 - -

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Canvas note.json b/demo/Demo/Trilium Demo/Canvas note.json deleted file mode 100644 index 0f334778c..000000000 --- a/demo/Demo/Trilium Demo/Canvas note.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"excalidraw","version":2,"elements":[{"type":"rectangle","version":234,"versionNonce":2115983107,"isDeleted":false,"id":"Nx_6ACJaaueNh0fTsVZeh","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":14.66796875,"y":8.13671875,"strokeColor":"#000000","backgroundColor":"#fa5252","width":247,"height":138,"seed":679323330,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1701078794806,"link":null},{"type":"arrow","version":142,"versionNonce":265248388,"isDeleted":false,"id":"2bmK1AKg9yVMP6CO_U6Ke","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":216,"y":67,"strokeColor":"#000000","backgroundColor":"#fa5252","width":289,"height":46,"seed":1265574494,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[289,46]]},{"type":"ellipse","version":162,"versionNonce":507427772,"isDeleted":false,"id":"TOmE_26Ye9b_m_TKfWU45","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":441,"y":31,"strokeColor":"#000000","backgroundColor":"#228be6","width":203,"height":191,"seed":77588894,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"text","version":206,"versionNonce":1401811460,"isDeleted":false,"id":"K5CjVJa8vYzQ8LDOdH-av","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":319.5,"y":20,"strokeColor":"#000000","backgroundColor":"#228be6","width":71.75,"height":null,"seed":317664926,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":1,"text":"convert","baseline":18,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"convert"},{"type":"diamond","version":139,"versionNonce":2062017596,"isDeleted":false,"id":"rZ0DKhdiE-mys9orY2M7Y","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":335,"y":67,"strokeColor":"#000000","backgroundColor":"#228be6","width":31,"height":37,"seed":401619102,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"line","version":202,"versionNonce":1931775364,"isDeleted":false,"id":"gWzx0Ka27J2gQYsjliI5u","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":1,"opacity":100,"angle":0,"x":147,"y":142,"strokeColor":"#000000","backgroundColor":"#228be6","width":124,"height":113,"seed":668475458,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[124,113]]},{"type":"rectangle","version":182,"versionNonce":693632188,"isDeleted":false,"id":"vPXlTlCV6XiWRo8z596tY","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0,"x":269,"y":240,"strokeColor":"#2b8a3e","backgroundColor":"#e6ffc8","width":144,"height":115,"seed":1313295006,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"text","version":316,"versionNonce":1778720828,"isDeleted":false,"id":"NlWoiu7QFiUGoGhxxFDQz","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":290,"y":247,"strokeColor":"#2b8a3e","backgroundColor":"#228be6","width":53.36666488647461,"height":null,"seed":146698370,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":1,"text":"List :\n- one\n- two","baseline":70,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"List :\n- one\n- two"},{"type":"diamond","version":220,"versionNonce":858850620,"isDeleted":false,"id":"4tqMpG7kcfLvu81ba12UQ","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.899784582143685,"x":283.37319488867206,"y":123.6942301852414,"strokeColor":"#000000","backgroundColor":"#fa5252","width":104.0405522208337,"height":74.00000000000001,"seed":1677737711,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"rectangle","version":277,"versionNonce":406453380,"isDeleted":false,"id":"79D3L3LhxNNySkbKD3Bia","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.42451911970089906,"x":479.7715111234793,"y":259.96655309088374,"strokeColor":"#000000","backgroundColor":"#fa5252","width":128.50676566765082,"height":63,"seed":1447260752,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"diamond","version":362,"versionNonce":500497852,"isDeleted":false,"id":"ffrisBNjK3DyL4MRqDVUM","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.3893167218331426,"x":21.865547135620886,"y":174.8538070033551,"strokeColor":"#000000","backgroundColor":"#15aabf","width":87.26890572875811,"height":46.29238599328972,"seed":63592112,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"rectangle","version":518,"versionNonce":340773892,"isDeleted":false,"id":"wxvV5tzdo2p3m4nBQf_fI","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.997855886997452,"x":90.74789364500919,"y":293.3561760950281,"strokeColor":"#000000","backgroundColor":"#fab005","width":123.50421270998135,"height":35.287647809943806,"seed":1439819952,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"line","version":166,"versionNonce":1610279598,"isDeleted":false,"id":"i2pQf0tOL1I7RZA6fHNXy","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0.3264344116289468,"x":129,"y":177,"strokeColor":"#a61e4d","backgroundColor":"#fab005","width":71,"height":80,"seed":969735782,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[2,16],[12,40],[20,51],[36,64],[71,80]]},{"type":"line","version":175,"versionNonce":1006611332,"isDeleted":false,"id":"zTcY1DmmmEqtM7iaFOjI2","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":24,"y":282,"strokeColor":"#087f5b","backgroundColor":"#fab005","width":81,"height":33,"seed":1314441594,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[6,-22],[12,-29],[21,-30],[24,-29],[33,-17],[36,1],[37,2],[45,-29],[48,-29],[53,-31],[58,-31],[72,-23],[81,-8],[81,-4]]},{"type":"rectangle","version":467,"versionNonce":1170587324,"isDeleted":false,"id":"UqrOMUkW8i5NCxQf_EDc9","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.11809202841909539,"x":190.3330910264575,"y":373.66279952417335,"strokeColor":"#000000","backgroundColor":"#be4bdb","width":90.33381794708485,"height":87.67440095165314,"seed":1466118630,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"diamond","version":459,"versionNonce":830970628,"isDeleted":false,"id":"06wK4k0VHVo3nl3maFgBt","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.137516099543635,"x":353.41738815890335,"y":394.61371445798545,"strokeColor":"#000000","backgroundColor":"#4c6ef5","width":80.89200154670186,"height":77.42001777890613,"seed":1789348282,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"text","version":194,"versionNonce":2089357700,"isDeleted":false,"id":"FExeJRXagFlMKEpW4ApvL","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":5.9094584872140326,"x":35.78896794074159,"y":386.2393022458574,"strokeColor":"#d9480f","backgroundColor":"#4c6ef5","width":106.3499984741211,"height":null,"seed":152285754,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":2,"text":"Rotated text","baseline":23,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Rotated text"},{"type":"arrow","version":363,"versionNonce":526752388,"isDeleted":false,"id":"n7nmJZmGCpL1a6l1TdMeX","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":520.1576551164967,"y":338.6957163378038,"strokeColor":"#000000","backgroundColor":"#fa5252","width":78.65765511649664,"height":75.30428366219626,"seed":925954106,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-78.65765511649664,75.30428366219626]]},{"type":"text","version":184,"versionNonce":963492028,"isDeleted":false,"id":"lU3Msnm2CTXBHi8Pzef0C","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0,"x":509.5,"y":392,"strokeColor":"#000000","backgroundColor":"#4c6ef5","width":128.88333129882812,"height":null,"seed":1839996922,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828826,"link":null,"fontSize":20,"fontFamily":3,"text":"> some code","baseline":20,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"> some code"},{"type":"text","version":510,"versionNonce":670318852,"isDeleted":false,"id":"CdlqC6FutWnAhFgUa4-tK","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":34.326958955223915,"y":31.00810810810811,"strokeColor":"#c92a2a","backgroundColor":"#228be6","width":165.3333282470703,"height":null,"seed":168503609,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828827,"link":null,"fontSize":39.25486991656494,"fontFamily":1,"text":"Big text","baseline":35,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Big text"},{"type":"ellipse","version":305,"versionNonce":1795300462,"isDeleted":false,"id":"lQb2o3G3uO-OSzJlv7dQf","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.987365538640589,"x":483.5,"y":118.5,"strokeColor":"#000000","backgroundColor":"#7950f2","width":133.00000000000003,"height":58.00000000000001,"seed":617054574,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null}],"files":{},"appState":{"scrollX":255.921875,"scrollY":295.91526179206426,"zoom":{"value":1}}} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Canvas note_canvas-export.svg b/demo/Demo/Trilium Demo/Canvas note_canvas-export.svg deleted file mode 100644 index f5bb7a3e6..000000000 --- a/demo/Demo/Trilium Demo/Canvas note_canvas-export.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - convertList :- one- twoRotated text> some codeBig text \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Formatting examples/Checkbox lists.html b/demo/Demo/Trilium Demo/Formatting examples/Checkbox lists.html deleted file mode 100644 index 28e954cce..000000000 --- a/demo/Demo/Trilium Demo/Formatting examples/Checkbox lists.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - Checkbox lists - - - -
-

Checkbox lists

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Create easy TODO-lists with checkboxes:

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Formatting examples/Code blocks.html b/demo/Demo/Trilium Demo/Formatting examples/Code blocks.html deleted file mode 100644 index 0209c5bbb..000000000 --- a/demo/Demo/Trilium Demo/Formatting examples/Code blocks.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - Code blocks - - - -
-

Code blocks

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Code blocks are useful to add short snippets of code blocks inside text - notes. Depending on your preference, it's possible to enable or disable - word wrapping for these code blocks.

-

We added syntax highlighting to code blocks as well. When a code block - is first created it will try to automatically determine the programming - language, should that fail it is possible to manually adjust it. The color - scheme for the syntax highlighting is adjustable in settings. 

function helloWorld() {
-	alert("Hello world");
-}
- -

For larger pieces of code it is better to use a code note, which uses - a fully-fledged code editor (CodeMirror). For an example of a code note, - see Custom request handler.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Formatting examples/Highlighting.html b/demo/Demo/Trilium Demo/Formatting examples/Highlighting.html deleted file mode 100644 index 40a294932..000000000 --- a/demo/Demo/Trilium Demo/Formatting examples/Highlighting.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - Highlighting - - - -
-

Highlighting

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Space Shuttle Discovery (Orbiter Vehicle - Designation: OV-103) is one of the orbiters from NASA's Space - Shuttle program and the third of five fully operational orbiters to be - built. Its first mission, STS-41-D, flew from August 30 to September 5, - 1984. Over 27 years of service it launched and landed 39 times, - gathering more spaceflights than any other spacecraft to date. The shuttle - has three main components: the Space Shuttle orbiter, a central fuel tank, - and two rocket boosters. Nearly 25,000 heat resistant tiles cover - the orbiter to protect it from high temperatures on re-entry.

-

Discovery became the third operational orbiter to enter service, preceded - by Columbia and Challenger. It embarked on its last mission, STS-133, on February 24, 2011 and - touched down for the final time at Kennedy Space Center on March 9, having - spent a cumulative total of almost a full year in space. Discovery performed - both research and International Space Station (ISS) assembly missions, - and also carried the Hubble Space Telescope into orbit.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Formatting examples/Math.html b/demo/Demo/Trilium Demo/Formatting examples/Math.html deleted file mode 100644 index 7f2e26008..000000000 --- a/demo/Demo/Trilium Demo/Formatting examples/Math.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Math - - - -
-

Math

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty     \f\hat\xi\,e^{2 \pi i \xi x}     \,d\xi\)Some - math examples:

\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\] - -

Another:

\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\] - -

Inline math is also possible: \(c^2 = a^2 + b^2\) Neat!

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Formatting examples/School schedule.html b/demo/Demo/Trilium Demo/Formatting examples/School schedule.html deleted file mode 100644 index eabed6282..000000000 --- a/demo/Demo/Trilium Demo/Formatting examples/School schedule.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - School schedule - - - -
-

School schedule

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 MondayTuesdayWednesdayThursdayFriday
9:00-10:30P.E. MathComputer Science 
11:00-12:30HistoryEnglish PhysicsMath
13:00-14:30 Computer ScienceChemistryPhysics LabGeography
15:00-16:30Computer Science Latin  
-
School schedule
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Inbox.html b/demo/Demo/Trilium Demo/Inbox.html deleted file mode 100644 index f881ba73a..000000000 --- a/demo/Demo/Trilium Demo/Inbox.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - Inbox - - - -
-

Inbox

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This is a place I use to put notes waiting for better categorization

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Inbox/Book to read.html b/demo/Demo/Trilium Demo/Inbox/Book to read.html deleted file mode 100644 index 429c9702d..000000000 --- a/demo/Demo/Trilium Demo/Inbox/Book to read.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - Book to read - - - -
-

Book to read

- -
-
-
- -
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Inbox/Grocery list for today.html b/demo/Demo/Trilium Demo/Inbox/Grocery list for today.html deleted file mode 100644 index 68f2f5e98..000000000 --- a/demo/Demo/Trilium Demo/Inbox/Grocery list for today.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - Grocery list for today - - - -
-

Grocery list for today

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
    -
  • cucumber
  • -
  • cheese
  • -
  • beer
  • -
-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Inbox/The Last Question.html b/demo/Demo/Trilium Demo/Inbox/The Last Question.html deleted file mode 100644 index 09baae5f7..000000000 --- a/demo/Demo/Trilium Demo/Inbox/The Last Question.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - The Last Question - - - -
-

The Last Question

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

"The Last Question" is a science fiction - short storyby American writer Isaac Asimov. - It first appeared in the November 1956 issue of Science Fiction Quarterly.

-
 
-

This page demonstrates two things:

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf b/demo/Demo/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf deleted file mode 100644 index 717a69943..000000000 Binary files a/demo/Demo/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal.html b/demo/Demo/Trilium Demo/Journal.html deleted file mode 100644 index fffbf8607..000000000 --- a/demo/Demo/Trilium Demo/Journal.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - Journal - - - -
-

Journal

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

You can read some explanation on how this journal works here: https://github.com/zadam/trilium/wiki/Day-notes - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html b/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html deleted file mode 100644 index 0e014d8a6..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 28 - Tuesday - - - -
-

28 - Tuesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html b/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html deleted file mode 100644 index be339765a..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - Christmas gift ideas - - - -
-

Christmas gift ideas

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html b/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html deleted file mode 100644 index 6d58d885d..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Phone call about work project - - - -
-

Phone call about work project

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bla bla bla ....

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html b/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html deleted file mode 100644 index daea0b8bd..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Trusted timestamping - - - -
-

Trusted timestamping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Wiki: https://en.wikipedia.org/wiki/Trusted_timestamping - -

-

Bozho: https://techblog.bozho.net/using-trusted-timestamping-java/ - -

-

Trusted timestamping is the process of securely keeping - track of the creation and modification time of a document. Security here - means that no one—not even the owner of the document—should be able to - change it once it has been recorded provided that the timestamper's integrity - is never compromised.

-

The administrative aspect involves setting up a publicly available, trusted - timestamp management infrastructure to collect, process and renew timestamps.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday.html deleted file mode 100644 index a42fa185c..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - 18 - Monday - - - -
-

18 - Monday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Miscellaneous notes done on monday ...

-

 

-

Interesting video: https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be - -

-

 

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html deleted file mode 100644 index a44807ce4..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Meeting minutes - - - -
-

Meeting minutes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

bla bla bla ...

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg deleted file mode 100644 index 526922538..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg deleted file mode 100644 index a6bd590e4..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg deleted file mode 100644 index 8d6ee7003..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg deleted file mode 100644 index 65dcff9f0..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg deleted file mode 100644 index 56dad904f..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg deleted file mode 100644 index afae674d8..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg deleted file mode 100644 index 1a4177f45..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg deleted file mode 100644 index eaa57bfbf..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg deleted file mode 100644 index 3266325f2..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg deleted file mode 100644 index 0ecdcc360..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg deleted file mode 100644 index 24fb1fc9e..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg deleted file mode 100644 index ccded29c7..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html deleted file mode 100644 index 749b48f9d..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html deleted file mode 100644 index 3ebe8c0d6..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 19 - Tuesday - - - -
-

19 - Tuesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html deleted file mode 100644 index feba73c7d..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Dentist appointment - - - -
-

Dentist appointment

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html deleted file mode 100644 index 9defb3a24..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 20 - Wednesday - - - -
-

20 - Wednesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html deleted file mode 100644 index cc69093a5..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 21 - Thursday - - - -
-

21 - Thursday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html deleted file mode 100644 index 20ff0c70b..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Christmas shopping - - - -
-

Christmas shopping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bought a book!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html deleted file mode 100644 index 87528f993..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Office party - - - -
-

Office party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
That was fun!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday.html deleted file mode 100644 index e98f07eea..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 22 - Friday - - - -
-

22 - Friday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html deleted file mode 100644 index c7572437d..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Christmas shopping - - - -
-

Christmas shopping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html deleted file mode 100644 index 1f445ce17..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - The Mechanical - - - -
-

The Mechanical

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

I enjoyed this book a lot. It's slow moving at times with the author taking - his time with conversations and descriptions of them. The premise is very - interesting, but I'm sad that it wasn't elaborated more deeply - e.g. the - history and development of the clakker technology with Huygens and how - Spinoza comes into the picture. Maybe the author saves it for the next - two parts of the book.

-

Language can be intimidating at first for non-native english speakers - - author uses wide range of vocabulary. Fortunately it gets better after - a while as reader adjusts.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html deleted file mode 100644 index ba478819b..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - Highlights - - - -
-

Highlights

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Like a raindrop rolling down dry valleys to the sea, his body sensed the - contours of agony and helplessly followed their gradient. Impelled by alchemical - compulsion rather than gravity, Jax became an unstoppable boulder careering - along gullies of human whim.

-
-
-

Free Will was a vacuum, a negative space. It was the absence of coercion, - the absence of compulsion, the absence of agony.

-
-
-

Overwhelming: he could do anything he wanted. But the grand sum of anything-at-all - was nothing-at-all. The topology of freedom offered no gradients to nudge - him, no landmarks to guide him. How did humans guide themselves? How did - they know what to do and what not to do? How did they know when to do anything - without the benefit of geasa and metageasa to prioritize every single action - of their waking lives? How did they order their daily existence without - somebody to tell them what to do?

-
-
-

Life as a slave was unspeakable; life as a slave who had briefly tasted - freedom was unthinkable. Clakkers carried complex geasa by dint of alchemy; - humans carried heavy obligations, too, but called them culture. Society.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html deleted file mode 100644 index a6eb9b1d4..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 23 - Saturday - - - -
-

23 - Saturday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html deleted file mode 100644 index 9774550ae..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 24 - Sunday - Christmas Eve! - - - -
-

24 - Sunday - Christmas Eve!

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg b/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg deleted file mode 100644 index f0135ec7b..000000000 Binary files a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html deleted file mode 100644 index d02db8d67..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Buy a board game for Alice - - - -
-

Buy a board game for Alice

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html deleted file mode 100644 index 8879bfc19..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html b/demo/Demo/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html deleted file mode 100644 index b97e27a4d..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - 30 - Thursday - - - -
-

30 - Thursday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/Epics.html b/demo/Demo/Trilium Demo/Journal/2021/Epics.html deleted file mode 100644 index d71b689ef..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/Epics.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - Epics - - - -
-

Epics

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Epic is kind of medium-term events or projects spread over days or months.

-

Remember that Trilium is all free form so you can organise your stuff - in whatever way you'd like.

-

 

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas.html b/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas.html deleted file mode 100644 index 8a3cdad7c..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Christmas - - - -
-

Christmas

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This christmas is going to be awesome!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html b/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html deleted file mode 100644 index da59fbe4c..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Christmas dinner - - - -
-

Christmas dinner

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Carp of course!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html b/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html deleted file mode 100644 index 044fe3e8f..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Christmas gift ideas - - - -
-

Christmas gift ideas

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html b/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html deleted file mode 100644 index 005912c63..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - Vacation days - - - -
-

Vacation days

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

25. 12., 26. 12., 1. 1. - statutory holidays

-

27. 12. - 29. 12., 2. 1. - vacation days

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/2021/Epics/Vacation.html b/demo/Demo/Trilium Demo/Journal/2021/Epics/Vacation.html deleted file mode 100644 index 3224a29eb..000000000 --- a/demo/Demo/Trilium Demo/Journal/2021/Epics/Vacation.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Vacation - - - -
-

Vacation

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Planning stuff etc.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Journal/Day template.html b/demo/Demo/Trilium Demo/Journal/Day template.html deleted file mode 100644 index 7f0ee7976..000000000 --- a/demo/Demo/Trilium Demo/Journal/Day template.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Day template - - - -
-

Day template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Bar chart.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Bar chart.txt deleted file mode 100644 index b13f7ee52..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Bar chart.txt +++ /dev/null @@ -1,15 +0,0 @@ -gantt - title Git Issues - days since last update - dateFormat X - axisFormat %s - - section Issue19062 - 71 : 0, 71 - section Issue19401 - 36 : 0, 36 - section Issue193 - 34 : 0, 34 - section Issue7441 - 9 : 0, 9 - section Issue1300 - 5 : 0, 5 \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg deleted file mode 100644 index 97489f06b..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -051015202530354045505560657071 36 34 9 5 Issue19062Issue19401Issue193Issue7441Issue1300Git Issues - days since last update \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/C4.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/C4.txt deleted file mode 100644 index 7e4dc961a..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/C4.txt +++ /dev/null @@ -1,32 +0,0 @@ -C4Context -title System Context diagram for Internet Banking System - -Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") -Person(customerB, "Banking Customer B") -Person_Ext(customerC, "Banking Customer C") -System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") - -Person(customerD, "Banking Customer D", "A customer of the bank,
with personal bank accounts.") - -Enterprise_Boundary(b1, "BankBoundary") { - - SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - System_Boundary(b2, "BankBoundary2") { - System(SystemA, "Banking System A") - System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.") - } - - System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") - SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") - - Boundary(b3, "BankBoundary3", "boundary") { - SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.") - SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") - } -} - -BiRel(customerA, SystemAA, "Uses") -BiRel(SystemAA, SystemE, "Uses") -Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") -Rel(SystemC, customerA, "Sends e-mails to") \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg deleted file mode 100644 index 60f433a49..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -<<person>>Banking Customer AA customer of the bank, with personal bank accounts.<<person>>Banking Customer B<<external_person>>Banking Customer C<<system>>Internet Banking SystemAllows customers to view information about their bank accounts, and make payments.<<person>>Banking Customer DA customer of the bank, with personal bank accounts.<<external_system_db>>Mainframe Banking SystemStores all of the core banking information about customers, accounts, transactions, etc.<<external_system>>E-mail systemThe internal Microsoft Exchange e-mail system.<<system_db>>Banking System D DatabaseA system of the bank, with personal bank accounts.<<system>>Banking System A<<system>>Banking System BA system of the bank, with personal bank accounts.BankBoundary2[ENTERPRISE]<<system_queue>>Banking System F QueueA system of the bank, with personal bank accounts.<<external_system_queue>>Banking System G QueueA system of the bank, with personal bank accounts.BankBoundary3[boundary]BankBoundary[ENTERPRISE]UsesUsesSends e-mails[SMTP]Sends e-mails toSystem Context diagram for Internet Banking System \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Class.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Class.txt deleted file mode 100644 index f902afadd..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Class.txt +++ /dev/null @@ -1,16 +0,0 @@ -classDiagram -Class01 <|-- AveryLongClass : Cool -<> Class01 -Class09 --> C2 : Where am i? -Class09 --* C3 -Class09 --|> Class07 -Class07 : equals() -Class07 : Object[] elementData -Class01 : size() -Class01 : int chimp -Class01 : int gorilla -class Class10 { - <> - int id - size() -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg deleted file mode 100644 index 9d10efc11..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -
Cool
Where am i?
«interface»
Class01
int chimp
int gorilla
size()
AveryLongClass
Class09
C2
C3
Class07
Object[] elementData
equals()
«service»
Class10
int id
size()
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt deleted file mode 100644 index 94d6f5196..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt +++ /dev/null @@ -1,10 +0,0 @@ -erDiagram - CUSTOMER }|..|{ DELIVERY-ADDRESS : has - CUSTOMER ||--o{ ORDER : places - CUSTOMER ||--o{ INVOICE : "liable for" - DELIVERY-ADDRESS ||--o{ ORDER : receives - INVOICE ||--|{ ORDER : covers - ORDER ||--|{ ORDER-ITEM : includes - PRODUCT-CATEGORY ||--|{ PRODUCT : contains - PRODUCT ||--o{ ORDER-ITEM : "ordered in" - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg deleted file mode 100644 index d5911752e..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg +++ /dev/null @@ -1 +0,0 @@ -CUSTOMERDELIVERY-ADDRESSORDERINVOICEORDER-ITEMPRODUCT-CATEGORYPRODUCThasplacesliable forreceivescoversincludescontainsordered in \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt deleted file mode 100644 index 34d7aedaf..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt +++ /dev/null @@ -1,15 +0,0 @@ ---- -config: - layout: elk ---- -flowchart LR -A-->|"Guarantee"|B -C-->|"User attributes"|B -C-->|"Master data"|B -C-->|"Exchange Rate"|B -C-->|"Profit Centers"|B -C-->|"Vendor Partners"|B -C-->|"Work Situation"|B -C-->|"Customer"|B -C-->|"Profit Centers"|B -B-->|"Guarantee"|C \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg deleted file mode 100644 index 1a133a1c7..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

A

B

C

Guarantee

User attributes

Master data

Exchange Rate

Profit Centers

Vendor Partners

Work Situation

Customer

Profit Centers

Guarantee

\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow.txt deleted file mode 100644 index a7fcef7f3..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow.txt +++ /dev/null @@ -1,5 +0,0 @@ -graph TD -A[Hard] -->|Text| B(Round) -B --> C{Decision} -C -->|One| D[Result 1] -C -->|Two| E[Result 2] \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg deleted file mode 100644 index 7941b9ae1..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

Text

One

Two

Hard

Round

Decision

Result 1

Result 2

\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Gantt.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Gantt.txt deleted file mode 100644 index af32bc27d..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Gantt.txt +++ /dev/null @@ -1,8 +0,0 @@ -gantt -section Section -Completed :done, des1, 2014-01-06,2014-01-08 -Active :active, des2, 2014-01-07, 3d -Parallel 1 : des3, after des1, 1d -Parallel 2 : des4, after des1, 1d -Parallel 3 : des5, after des3, 1d -Parallel 4 : des6, after des4, 1d \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg deleted file mode 100644 index 61ffc0260..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -2014-01-062014-01-072014-01-072014-01-082014-01-082014-01-092014-01-092014-01-10Completed Parallel 1 Parallel 2 Active Parallel 3 Parallel 4 Section \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Git.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Git.txt deleted file mode 100644 index f5c89f75d..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Git.txt +++ /dev/null @@ -1,10 +0,0 @@ - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg deleted file mode 100644 index 15b9bb454..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -maindevelop0-e6e63b91-f6c5e0c2-b62cc0e3-be86c5a4-7021d405-f753c376-3f1a1ef \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Journey.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Journey.txt deleted file mode 100644 index 8bad1ef77..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Journey.txt +++ /dev/null @@ -1,9 +0,0 @@ - journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 3: Me \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg deleted file mode 100644 index 2b6c1e75d..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -CatMe
Go to work
Go to work
Me
Make tea
Make tea
Me
Go upstairs
Go upstairs
MeCat
Do work
Do work
Go home
Go home
Me
Go downstairs
Go downstairs
Me
Sit down
Sit down
My working day
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Mind Map.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Mind Map.txt deleted file mode 100644 index 6cdfad11d..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Mind Map.txt +++ /dev/null @@ -1,17 +0,0 @@ -mindmap - root((mindmap)) - Origins - Long history - ::icon(fa fa-book) - Popularisation - British popular psychology author Tony Buzan - Research - On effectiveness
and features - On Automatic creation - Uses - Creative techniques - Strategic planning - Argument mapping - Tools - Pen and paper - Mermaid \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg deleted file mode 100644 index 4e0a32214..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -mindmapOriginsLong history
PopularisationBritish popular psychologyauthor Tony BuzanResearchOn effectivenessand featuresOn Automatic creationUsesCreative techniquesStrategic planningArgument mappingToolsPen and paperMermaid
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Pie.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Pie.txt deleted file mode 100644 index 58aeda658..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Pie.txt +++ /dev/null @@ -1,4 +0,0 @@ -pie -"Dogs" : 386 -"Cats" : 85 -"Rats" : 15 \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg deleted file mode 100644 index 80909557d..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -79%17%3%DogsCatsRats \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Sequence.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/Sequence.txt deleted file mode 100644 index 5ed800922..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Sequence.txt +++ /dev/null @@ -1,9 +0,0 @@ -sequenceDiagram -Alice->>John: Hello John, how are you? -loop Healthcheck - John->>John: Fight against hypochondria -end -Note right of John: Rational thoughts! -John-->>Alice: Great! -John->>Bob: How about you? -Bob-->>John: Jolly good! \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg deleted file mode 100644 index 804d86275..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -BobJohnAliceBobJohnAliceloop[Healthcheck]Rational thoughts!Hello John, how are you?Fight against hypochondriaGreat!How about you?Jolly good! \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/State.txt b/demo/Demo/Trilium Demo/Mermaid Diagrams/State.txt deleted file mode 100644 index 7b57864f0..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/State.txt +++ /dev/null @@ -1,7 +0,0 @@ -stateDiagram-v2 -[*] --> Still -Still --> [*] -Still --> Moving -Moving --> Still -Moving --> Crash -Crash --> [*] \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg b/demo/Demo/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg deleted file mode 100644 index 1e2314d6c..000000000 --- a/demo/Demo/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -
Still
Moving
Crash
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mind map.json b/demo/Demo/Trilium Demo/Mind map.json deleted file mode 100644 index 79b3add25..000000000 --- a/demo/Demo/Trilium Demo/Mind map.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"me-root","topic":"Mind Elixir","root":true,"tags":["Mind Map Core"],"children":[{"topic":"What is Mind Elixir","id":"bd4313fbac40284b","direction":0,"expanded":true,"children":[{"topic":"A mind map core","id":"beeb823afd6d2114"},{"topic":"Free","id":"c1f068377de9f3a0"},{"topic":"Open-Source","id":"c1f06d38a09f23ca"},{"topic":"Use without JavaScript framework","id":"c1f06e4cbcf16463","expanded":true,"children":[]},{"topic":"Use in your own project","id":"c1f1f11a7fbf7550","children":[{"topic":"import MindElixir from 'mind-elixir'","id":"c1f1e245b0a89f9b"},{"topic":"new MindElixir({...}).init(data)","id":"c1f1ebc7072c8928"}]},{"topic":"Easy to use","id":"c1f0723c07b408d7","expanded":true,"children":[{"topic":"Use it like other mind map application","id":"c1f09612fd89920d"}]}]},{"topic":"Basics","id":"bd1b66c4b56754d9","direction":0,"expanded":true,"children":[{"topic":"tab - Create a child node","id":"bd1b6892bcab126a"},{"topic":"enter - Create a sibling node","id":"bd1b6b632a434b27"},{"topic":"del - Remove a node","id":"bd1b983085187c0a"}]},{"topic":"Focus mode","id":"bd1b9b94a9a7a913","direction":1,"expanded":true,"children":[{"topic":"Right click and select Focus Mode","id":"bd1bb2ac4bbab458"},{"topic":"Right click and select Cancel Focus Mode","id":"bd1bb4b14d6697c3"}]},{"topic":"Left menu","id":"bd1b9d1816ede134","direction":0,"expanded":true,"children":[{"topic":"Node distribution","id":"bd1ba11e620c3c1a","expanded":true,"children":[{"topic":"Left","id":"bd1c1cb51e6745d3"},{"topic":"Right","id":"bd1c1e12fd603ff6"},{"topic":"Both l & r","id":"bd1c1f03def5c97b"}]}]},{"topic":"Bottom menu","id":"bd1ba66996df4ba4","direction":1,"expanded":true,"children":[{"topic":"Full screen","id":"bd1ba81d9bc95a7e"},{"topic":"Return to Center","id":"bd1babdd5c18a7a2"},{"topic":"Zoom in","id":"bd1bae68e0ab186e"},{"topic":"Zoom out","id":"bd1bb06377439977"}]},{"topic":"Link","id":"bd1beff607711025","direction":0,"expanded":true,"children":[{"topic":"Right click and select Link","id":"bd1bf320da90046a"},{"topic":"Click the target you want to link","id":"bd1bf6f94ff2e642"},{"topic":"Modify link with control points","id":"bd1c0c4a487bd036"}]},{"topic":"Node style","id":"bd1c217f9d0b20bd","direction":0,"expanded":true,"children":[{"topic":"Font Size","id":"bd1c24420cd2c2f5","style":{"fontSize":"32","color":"#3298db"}},{"topic":"Font Color","id":"bd1c2a59b9a2739c","style":{"color":"#c0392c"}},{"topic":"Background Color","id":"bd1c2de33f057eb4","style":{"color":"#bdc3c7","background":"#2c3e50"}},{"topic":"Add tags","id":"bd1cff58364436d0","tags":["Completed"]},{"topic":"Add icons","id":"bd1d0317f7e8a61a","icons":["😂"],"tags":["www"]},{"topic":"Bolder","id":"bd41fd4ca32322a4","style":{"fontWeight":"bold"}},{"topic":"Hyper link","id":"bd41fd4ca32322a5","hyperLink":"https://github.com/ssshooter/mind-elixir-core"}]},{"topic":"Draggable","id":"bd1f03fee1f63bc6","direction":1,"expanded":true,"children":[{"topic":"Drag a node to another node\nand the former one will become a child node of latter one","id":"bd1f07c598e729dc"}]},{"topic":"Export data","id":"beeb7586973430db","direction":1,"expanded":true,"children":[{"topic":"JSON","id":"beeb784cc189375f"},{"topic":"HTML","id":"beeb7a6bec2d68f5"},{"topic":"SVG","id":"beeb7a6bec2d68e6"}]},{"topic":"Caution","id":"bd42dad21aaf6bae","direction":0,"style":{"background":"#f1c40e"},"expanded":true,"children":[{"topic":"Only save manually","id":"bd42e1d0163ebf04","expanded":true,"children":[{"topic":"Save button in the top-right corner","id":"bd42e619051878b3","branchColor":"green","expanded":true,"children":[]},{"topic":"ctrl + S","id":"bd42e97d7ac35e99"}]}]}],"expanded":true},"arrows":[{"id":"ac5fb1df7345e9c4","label":"Render","from":"beeb784cc189375f","to":"beeb7a6bec2d68f5","delta1":{"x":142.8828125,"y":-57},"delta2":{"x":146.1171875,"y":45}}],"summaries":[{"id":"a5e68e6a2ce1b648","parent":"bd42e1d0163ebf04","start":0,"end":1,"text":"summary"},{"id":"a5e6978f1bc69f4a","parent":"bd4313fbac40284b","start":3,"end":5,"text":"summary"}],"direction":0,"theme":{"name":"Dark","palette":["#848FA0","#748BE9","#D2F9FE","#4145A5","#789AFA","#706CF4","#EF987F","#775DD5","#FCEECF","#DA7FBC"],"cssVar":{"--main-color":"#ffffff","--main-bgcolor":"#4c4f69","--color":"#cccccc","--bgcolor":"#252526","--panel-color":"#ffffff","--panel-bgcolor":"#2d3748","--panel-border-color":"#696969"}}} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mind map/1_new note.json b/demo/Demo/Trilium Demo/Mind map/1_new note.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/demo/Demo/Trilium Demo/Mind map/new note.json b/demo/Demo/Trilium Demo/Mind map/new note.json deleted file mode 100644 index b73e5bf70..000000000 --- a/demo/Demo/Trilium Demo/Mind map/new note.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"1add248a269dc540","topic":"new topic","root":true,"children":[{"topic":"sfg","id":"1add2e114258aa6f"}]},"arrows":[],"summaries":[],"direction":0,"theme":{"name":"Latte","palette":["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],"cssVar":{"--main-color":"#444446","--main-bgcolor":"#ffffff","--color":"#777777","--bgcolor":"#f6f6f6","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea"}}} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mind map/new note/new note.json b/demo/Demo/Trilium Demo/Mind map/new note/new note.json deleted file mode 100644 index cb4b5098a..000000000 --- a/demo/Demo/Trilium Demo/Mind map/new note/new note.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"1adc13eb15e57c17","topic":"new topic","root":true,"children":[{"topic":"asdfas","id":"1adc142dd5a11537","children":[{"topic":"adsf","id":"1adc14819bdcb38d"},{"topic":"asd","id":"1adc14c6920bc68a","children":[{"topic":"asd","id":"1adc1aab9383a26f","children":[{"topic":"asd","id":"1adc1b14942f7a44"}]}]},{"topic":"new node","id":"1adc14fc5f38fd4c"},{"topic":"adsf","id":"1adc152588d29a91"},{"topic":"asdf","id":"1adc19601cdcd9b6"}]},{"topic":"asdf","id":"1add48c7aa544e61","children":[{"topic":"asdf","id":"1add4917919fe495"}]},{"topic":"The quick brownie foxie","id":"1ade2085c2cd91a0"}]},"arrows":[],"summaries":[],"direction":1,"theme":{"name":"Latte","palette":["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],"cssVar":{"--main-color":"#444446","--main-bgcolor":"#ffffff","--color":"#777777","--bgcolor":"#f6f6f6","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea"}}} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Mind map_mindmap-export.svg b/demo/Demo/Trilium Demo/Mind map_mindmap-export.svg deleted file mode 100644 index 31a0b83eb..000000000 --- a/demo/Demo/Trilium Demo/Mind map_mindmap-export.svg +++ /dev/null @@ -1,2 +0,0 @@ -Rendersummarysummary
What is Mind Elixir
A mind map core
Free
Open-Source
Use without JavaScript framework
Use in your own project
import MindElixir from 'mind-elixir'
new MindElixir({...}).init(data)
Easy to use
Use it like other mind map application
Basics
tab - Create a child node
enter - Create a sibling node
del - Remove a node
Focus mode
Right click and select Focus Mode
Right click and select Cancel Focus Mode
Left menu
Node distribution
Left
Right
Both l & r
Bottom menu
Full screen
Return to Center
Zoom in
Zoom out
Link
Right click and select Link
Click the target you want to link
Modify link with control points
Node style
Font Size
Font Color
Background Color
Add tags
Add icons
Bolder
Hyper link
Draggable
Drag a node to another node -and the former one will become a child node of latter one
Export data
JSON
HTML
SVG
Caution
Only save manually
Save button in the top-right corner
ctrl + S
Mind Elixir
CompletedwwwMind Map Core😂🔗
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Custom request handler.js b/demo/Demo/Trilium Demo/Scripting examples/Custom request handler.js deleted file mode 100644 index 99b71b71c..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Custom request handler.js +++ /dev/null @@ -1,28 +0,0 @@ -return api.res.send(404); - -/** - * To activate this demo, comment (or remove) the very first line of this code note. - * This is deactivated because custom request handler like this one can be a security risk. - * To test this, execute the following curl request: curl -X POST http://localhost:37740/custom/create-note -H "Content-Type: application/json" -d "{ \"secret\": \"secret-password\", \"title\": \"hello\", \"content\": \"world\" }" - * (host and port might have to be adjusted based on your setup) - * - * See https://github.com/zadam/trilium/wiki/Custom-request-handler for details. - */ - -const {req, res} = api; -const {secret, title, content} = req.body; - -if (req.method == 'POST' && secret === 'secret-password') { - // notes must be saved somewhere in the tree hierarchy specified by a parent note. - // This is defined by a relation from this code note to the "target" parent note - // alternetively you can just use constant noteId for simplicity (get that from "Note Info" dialog of the desired parent note) - const targetParentNoteId = api.currentNote.getRelationValue('targetNote'); - - const {note} = api.createTextNote(targetParentNoteId, title, content); - const notePojo = note.getPojo(); - - res.status(201).json(notePojo); -} -else { - res.send(400); -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html deleted file mode 100644 index 5f5417f5c..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html +++ /dev/null @@ -1,12 +0,0 @@ -
- - -
- - - - - - -
Attribute nameCount
-
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js deleted file mode 100644 index 4f7d3872b..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js +++ /dev/null @@ -1,12 +0,0 @@ -const attrCounts = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - name, COUNT(*) AS count - FROM attributes - WHERE isDeleted = 0 - GROUP BY name - ORDER BY count DESC`); -}); - -renderPieChart(attrCounts.length <= 10 ? attrCounts : attrCounts.splice(0, 10)); -renderTable(attrCounts); \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js deleted file mode 100644 index db0269cb4..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js +++ /dev/null @@ -1,45 +0,0 @@ -module.exports = data => { - const ctx = api.$container.find('.stats-canvas')[0].getContext("2d"); - - const myPieChart = new Chart(ctx, { - type: 'pie', - data: { - datasets: [{ - data: data.map(nc => nc.count), - backgroundColor: ['#3366CC','#DC3912','#FF9900','#109618','#990099','#3B3EAC','#0099C6','#DD4477','#66AA00','#B82E2E','#316395','#994499','#22AA99','#AAAA11','#6633CC','#E67300','#8B0707','#329262','#5574A6','#3B3EAC'], - datalabels: { - anchor: 'end' - } - }], - labels: data.map(nc => nc.name) - }, - options: { - legend: { - display: false - }, - plugins: { - datalabels: { - backgroundColor: function(context) { - return context.dataset.backgroundColor; - }, - borderColor: 'white', - borderRadius: 25, - borderWidth: 2, - color: 'white', - display: function(context) { - var dataset = context.dataset; - var count = dataset.data.length; - var value = dataset.data[context.dataIndex]; - return value > count * 1.5; - }, - font: { - weight: 'bold' - }, - formatter: function(value, context) { - return context.chart.data.labels[context.dataIndex] + ": " + Math.round(value); - } - } - } - } - }); -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html deleted file mode 100644 index 64e4de7c4..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - chart.js - - - -
-

chart.js

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js deleted file mode 100644 index fb45222c7..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * chartjs-plugin-datalabels v2.0.0 - * https://chartjs-plugin-datalabels.netlify.app - * (c) 2017-2021 chartjs-plugin-datalabels contributors - * Released under the MIT license - */ -!function(t,e){(t="undefined"!=typeof globalThis?globalThis:t||self).ChartDataLabels=e(t.Chart.helpers,t.Chart)}(this,(function(t,e){"use strict";var r=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),a=function(e){var r,a=[];for(e=[].concat(e);e.length;)"string"==typeof(r=e.pop())?a.unshift.apply(a,r.split("\n")):Array.isArray(r)?e.push.apply(e,r):t.isNullOrUndef(e)||a.unshift(""+r);return a},o=function(t,e,r){var a,o=[].concat(e),n=o.length,i=t.font,l=0;for(t.font=r.string,a=0;ar.right&&(a|=2),er.bottom&&(a|=4),a}function u(t,e){var r,a,o=e.anchor,n=t;return e.clamp&&(n=function(t,e){for(var r,a,o,n=t.x0,i=t.y0,l=t.x1,u=t.y1,d=s(n,i,e),c=s(l,u,e);d|c&&!(d&c);)8&(r=d||c)?(a=n+(l-n)*(e.top-i)/(u-i),o=e.top):4&r?(a=n+(l-n)*(e.bottom-i)/(u-i),o=e.bottom):2&r?(o=i+(u-i)*(e.right-n)/(l-n),a=e.right):1&r&&(o=i+(u-i)*(e.left-n)/(l-n),a=e.left),r===d?d=s(n=a,i=o,e):c=s(l=a,u=o,e);return{x0:n,x1:l,y0:i,y1:u}}(n,e.area)),"start"===o?(r=n.x0,a=n.y0):"end"===o?(r=n.x1,a=n.y1):(r=(n.x0+n.x1)/2,a=(n.y0+n.y1)/2),function(t,e,r,a,o){switch(o){case"center":r=a=0;break;case"bottom":r=0,a=1;break;case"right":r=1,a=0;break;case"left":r=-1,a=0;break;case"top":r=0,a=-1;break;case"start":r=-r,a=-a;break;case"end":break;default:o*=Math.PI/180,r=Math.cos(o),a=Math.sin(o)}return{x:t,y:e,vx:r,vy:a}}(r,a,t.vx,t.vy,e.align)}var d=function(t,e){var r=(t.startAngle+t.endAngle)/2,a=Math.cos(r),o=Math.sin(r),n=t.innerRadius,i=t.outerRadius;return u({x0:t.x+a*n,y0:t.y+o*n,x1:t.x+a*i,y1:t.y+o*i,vx:a,vy:o},e)},c=function(t,e){var r=l(t,e.origin),a=r.x*t.options.radius,o=r.y*t.options.radius;return u({x0:t.x-a,y0:t.y-o,x1:t.x+a,y1:t.y+o,vx:r.x,vy:r.y},e)},h=function(t,e){var r=l(t,e.origin),a=t.x,o=t.y,n=0,i=0;return t.horizontal?(a=Math.min(t.x,t.base),n=Math.abs(t.base-t.x)):(o=Math.min(t.y,t.base),i=Math.abs(t.base-t.y)),u({x0:a,y0:o+i,x1:a+n,y1:o,vx:r.x,vy:r.y},e)},f=function(t,e){var r=l(t,e.origin);return u({x0:t.x,y0:t.y,x1:t.x,y1:t.y,vx:r.x,vy:r.y},e)},x=function(t){return Math.round(t*r)/r};function y(t,e){var r=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!r)return null;if(void 0!==r.xCenter&&void 0!==r.yCenter)return{x:r.xCenter,y:r.yCenter};var a=r.getBasePixel();return t.horizontal?{x:a,y:null}:{x:null,y:a}}function v(t,e,r){var a=r.backgroundColor,o=r.borderColor,n=r.borderWidth;(a||o&&n)&&(t.beginPath(),function(t,e,r,a,o,n){var i=Math.PI/2;if(n){var l=Math.min(n,o/2,a/2),s=e+l,u=r+l,d=e+a-l,c=r+o-l;t.moveTo(e,u),sr.x+r.w+2||t.y>r.y+r.h+2)},intersects:function(t){var e,r,a,o=this._points(),n=t._points(),i=[M(o[0],o[1]),M(o[0],o[3])];for(this._rotation!==t._rotation&&i.push(M(n[0],n[1]),M(n[0],n[3])),e=0;et.getProps([e],!0)[e]}),n=a.geometry(),i=$(l,a.model(),n),o._box.update(i,n,a.rotation()));(function(t,e){var r,a,o,n;for(r=t.length-1;r>=0;--r)for(o=t[r].$layout,a=r-1;a>=0&&o._visible;--a)(n=t[a].$layout)._visible&&o._box.intersects(n._box)&&e(o,n)})(t,(function(t,e){var r=t._hidable,a=e._hidable;r&&a||a?e._visible=!1:r&&(t._visible=!1)}))}(t)},lookup:function(t,e){var r,a;for(r=t.length-1;r>=0;--r)if((a=t[r].$layout)&&a._visible&&a._box.contains(e))return t[r];return null},draw:function(t,e){var r,a,o,n,i,l;for(r=0,a=e.length;r - - - - - - - chart.js - - - -
-

chart.js

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js deleted file mode 100644 index 39bfc9b23..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = counts => { - const $statsTable = api.$container.find('.stats-table'); - - addRow('total', counts.reduce((acc, cur) => acc + cur.count, 0)); - - for (const count of counts) { - addRow(count.name, count.count); - } - - function addRow(name, count) { - $statsTable.append( - $("") - .append($("").text(name)) - .append($("").text(count)) - ); - } -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html deleted file mode 100644 index 2932d9885..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows 100 largest notes, including their revisions and attachments.

- - - - - - -
NoteSize
-
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js deleted file mode 100644 index af10eb40a..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js +++ /dev/null @@ -1,47 +0,0 @@ -const notes = await api.runOnBackend(() => { - const blobSizes = api.sql.getMap(`SELECT blobId, LENGTH(content) FROM blobs`); - const noteBlobIds = api.sql.getRows(` - SELECT - notes.noteId, - notes.blobId, - GROUP_CONCAT(revisions.blobId) AS revisions_blobIds, - GROUP_CONCAT(note_attachments.blobId) AS note_attachments_blobIds, - GROUP_CONCAT(revision_attachments.blobId) AS revision_attachments_blobIds - FROM - notes - LEFT JOIN revisions USING (noteId) - LEFT JOIN attachments AS note_attachments ON notes.noteId = note_attachments.ownerId - LEFT JOIN attachments AS revision_attachments ON revisions.revisionId = revision_attachments.ownerId - GROUP BY noteId`); - - let noteSizes = []; - - for (const {noteId, blobId, revisions_blobIds, note_attachments_blobIds, revision_attachments_blobIds} of noteBlobIds) { - const blobIds = new Set(`${blobId},${revisions_blobIds},${note_attachments_blobIds},${revision_attachments_blobIds}`.split(',').filter(blobId => !!blobId)); - - const lengths = [...blobIds].map(blobId => blobSizes[blobId] || 0); - const totalLength = lengths.reduce((partialSum, a) => partialSum + a, 0); - - noteSizes.push({ noteId, size: totalLength }); - } - - noteSizes.sort((a, b) => a.size > b.size ? -1 : 1); - - noteSizes = noteSizes.splice(0, 100); - - return noteSizes; -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append( - $("").text(note.size + " bytes") - ) - ); -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html deleted file mode 100644 index 84d8504db..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html +++ /dev/null @@ -1,8 +0,0 @@ -
- - - - - -
NoteClone count
-
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js deleted file mode 100644 index 63c6f0ba5..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js +++ /dev/null @@ -1,26 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(branches.branchId) AS count - FROM notes - JOIN branches USING (noteId) - WHERE notes.isDeleted = 0 - AND branches.isDeleted = 0 - GROUP BY notes.noteId - HAVING count > 1 - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html deleted file mode 100644 index d60e28d8c..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows notes with most revisions

- - - - - - -
NoteRevision count
-
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js deleted file mode 100644 index e36d0e698..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js +++ /dev/null @@ -1,24 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(revisions.revisionId) AS count - FROM notes - JOIN revisions USING (noteId) - WHERE notes.isDeleted = 0 - GROUP BY notes.noteId - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html deleted file mode 100644 index fad5fae88..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows notes which are linked by other notes through relations

- - - - - - -
NoteRelation count
-
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js deleted file mode 100644 index 53ab6b1c9..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js +++ /dev/null @@ -1,26 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(attributes.attributeId) AS count - FROM notes - JOIN attributes ON attributes.value = notes.noteId - WHERE notes.isDeleted = 0 - AND attributes.isDeleted = 0 - AND attributes.type = 'relation' - GROUP BY notes.noteId - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template.html deleted file mode 100644 index 3cfe66481..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template.html +++ /dev/null @@ -1,13 +0,0 @@ -
- - -
- - - - - - - -
Note typeCount (not deleted)Count (deleted)
-
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js deleted file mode 100644 index 4a4eecb7b..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js +++ /dev/null @@ -1,20 +0,0 @@ -const noteCounts = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - type, - isDeleted, - SUM(CASE WHEN isDeleted=0 THEN 1 ELSE 0 END) AS countNotDeleted, - SUM(CASE WHEN isDeleted=1 THEN 1 ELSE 0 END) AS countDeleted - FROM notes - GROUP BY type - ORDER BY countNotDeleted DESC`); -}); - -renderPieChart(noteCounts.map(nc => { - return { - name: nc.type, - count: nc.countNotDeleted - }; -})); - -renderTable(noteCounts); \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html deleted file mode 100644 index d08203fb2..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - renderPieChart - - - -
-

renderPieChart

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js b/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js deleted file mode 100644 index 353653eae..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = counts => { - const $statsTable = api.$container.find('.stats-table'); - - addRow('total', - counts.reduce((acc, cur) => acc + cur.countNotDeleted, 0), - counts.reduce((acc, cur) => acc + cur.countDeleted, 0) - ); - - for (const count of counts) { - addRow(count.type, count.countNotDeleted, count.countDeleted); - } - - function addRow(type, countNotDeleted, countDeleted) { - $statsTable.append( - $("") - .append($("").text(type)) - .append($("").text(countNotDeleted)) - .append($("").text(countDeleted)) - ); - } -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager.html deleted file mode 100644 index 6b838a24e..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - Task manager - - - -
-

Task manager

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This is a simple TODO/Task manager. You can see some description and explanation - here: https://github.com/zadam/trilium/wiki/Task-manager - -

-

Please note that this is meant as scripting example only and feature/bug - support is very limited.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Create Launcher.js b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Create Launcher.js deleted file mode 100644 index 1fb4c4430..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Create Launcher.js +++ /dev/null @@ -1,10 +0,0 @@ -// will add a launcher to the left sidebar -api.createOrUpdateLauncher({ - id: 'taskmanager', - type: 'script', - title: 'New task', - icon: 'bx-task', - keyboardShortcut: 'alt+n', - scriptNoteId: api.currentNote.getRelationValue('createNewTask'), - isVisible: true -}); \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html deleted file mode 100644 index 11909363c..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Buy a board game for Alice - - - -
-

Buy a board game for Alice

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg deleted file mode 100644 index f0135ec7b..000000000 Binary files a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html deleted file mode 100644 index 6e4930c04..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Dentist appointment - - - -
-

Dentist appointment

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html deleted file mode 100644 index 1926033af..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Get a gym membership - - - -
-

Get a gym membership

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Just in time for new years resolution!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css deleted file mode 100644 index 4d4b43b71..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css +++ /dev/null @@ -1,7 +0,0 @@ -span.fancytree-node.todo .fancytree-title { - color: red !important; -} - -span.fancytree-node.done .fancytree-title { - color: green !important; -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js deleted file mode 100644 index 56292594d..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js +++ /dev/null @@ -1,63 +0,0 @@ -if (!["task", "location", "tag", "todoDate", "doneDate"].includes(api.originEntity.name)) { - return; -} - -const tagRootNote = api.getNoteWithLabel('taskTagRoot'); -const doneRootNote = api.getNoteWithLabel('taskDoneRoot'); -const todoRootNote = api.getNoteWithLabel('taskTodoRoot'); - -if (!tagRootNote || !doneRootNote || !todoRootNote) { - console.log("One of the tagRootNote, doneRootNote or todoRootNote does not exist"); - return; -} - -const note = api.originEntity.getNote(); - -if (note.isDeleted) { - return; -} - -const attributes = note.getAttributes(); - -const todoDate = note.getLabelValue('todoDate'); -const doneDate = note.getLabelValue('doneDate'); - -function isWithinExpectedRange(date) { - if (!date) { - return true; - } - - const year = parseInt(date.substr(0, 4)); - - return year >= 2010 && year < 2050; -} - -if (!isWithinExpectedRange(todoDate) || !isWithinExpectedRange(doneDate)) { - console.log(`One or both dates - ${todoDate}, ${doneDate} - is outside of expected range`); - - return; -} - -const isTaskDone = !!doneDate; - -api.toggleNoteInParent(isTaskDone, note.noteId, doneRootNote.noteId); -api.toggleNoteInParent(!isTaskDone, note.noteId, todoRootNote.noteId); - -const location = note.getLabelValue('location'); -const locationRootNote = api.getNoteWithLabel('taskLocationRoot'); - -reconcileAssignments(note, locationRootNote, location ? [location] : [], 'taskLocationNote', isTaskDone); - -const tags = attributes.filter(attr => attr.type === 'label' && attr.name === 'tag').map(attr => attr.value); - -reconcileAssignments(note, tagRootNote, tags, 'taskTagNote', isTaskDone); - -note.toggleLabel(isTaskDone, "cssClass", "done"); - -const doneTargetNoteId = isTaskDone ? api.getDayNote(doneDate).noteId : null; -api.setNoteToParent(note.noteId, 'DONE', doneTargetNoteId); - -note.toggleLabel(!isTaskDone, "cssClass", "todo"); - -const todoTargetNoteId = (!isTaskDone && todoDate) ? api.getDayNote(todoDate).noteId : null; -api.setNoteToParent(note.noteId, 'TODO', todoTargetNoteId); \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js deleted file mode 100644 index bf3503987..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = function (note, categoryRootNote, assignedCategories, labelName, isTaskDone) { - const found = {}; - - for (const categoryNote of categoryRootNote.getChildNotes()) { - const label = categoryNote.getLabel(labelName); - - if (label) { - found[label.value] = !isTaskDone && assignedCategories.includes(label.value); - - api.toggleNoteInParent(found[label.value], note.noteId, categoryNote.noteId); - } - } - - if (!isTaskDone) { - for (const assignedCategory of assignedCategories) { - if (!found[assignedCategory]) { - const categoryNote = api.createTextNote(categoryRootNote.noteId, assignedCategory, "").note; - - categoryNote.addLabel(labelName, assignedCategory); - - api.ensureNoteIsPresentInParent(note.noteId, categoryNote.noteId); - } - } - } -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js deleted file mode 100644 index 9dd12721a..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js +++ /dev/null @@ -1,14 +0,0 @@ -// creating notes is backend (server) responsibility so we need to pass -// the control there -const taskNoteId = await api.runOnBackend(() => { - const todoRootNote = api.getNoteWithLabel('taskTodoRoot'); - const resp = api.createTextNote(todoRootNote.noteId, 'new task', ''); - - return resp.note.noteId; -}); - -// wait until the frontend is fully synced with the changes made on the backend above -await api.waitUntilSynced(); - -// we got an ID of newly created note and we want to immediatelly display it -await api.activateNewNote(taskNoteId); \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html deleted file mode 100644 index 0e8e43b0f..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - task template - - - -
-

task template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/gym.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/gym.html deleted file mode 100644 index a7b335817..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/gym.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - gym - - - -
-

gym

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html deleted file mode 100644 index 5c128c8c3..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bob likes to read popular science books so something like that ..

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html deleted file mode 100644 index 97563a303..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - Maybe Black Swan? - - - -
-

Maybe Black Swan?

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable - -

-

 

-

The Black Swan: The Impact of the Highly Improbable is - a 2007 book by author and former options trader - Nassim Nicholas Taleb. The book focuses on the extreme impact of rare - and unpredictable outlier events - — and the human tendency to find simplistic explanations for these events, - retrospectively. Taleb calls this the Black Swan theory.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html deleted file mode 100644 index 8879bfc19..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html deleted file mode 100644 index 749b48f9d..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html deleted file mode 100644 index bbcd6f3cf..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html deleted file mode 100644 index b6c791688..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html deleted file mode 100644 index fd4df0179..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html deleted file mode 100644 index 8d8a86979..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html deleted file mode 100644 index 538a712d5..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/health.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/health.html deleted file mode 100644 index 715053b22..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/health.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - health - - - -
-

health

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html deleted file mode 100644 index 538a712d5..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html b/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html deleted file mode 100644 index 8d8a86979..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html b/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html deleted file mode 100644 index 6966e949a..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html +++ /dev/null @@ -1,5 +0,0 @@ -
- See explanation here. - - -
\ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js b/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js deleted file mode 100644 index 3c514402a..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js +++ /dev/null @@ -1,46 +0,0 @@ -async function getChartData() { - const days = await api.runOnBackend(() => { - const notes = api.getNotesWithLabel('weight'); - const days = []; - - for (const note of notes) { - const date = note.getLabelValue('dateNote'); - const weight = parseFloat(note.getLabelValue('weight')); - - if (date && weight) { - days.push({ date, weight }); - } - } - - days.sort((a, b) => a.date > b.date ? 1 : -1); - - return days; - }); - - const datasets = [ - { - label: "Weight (kg)", - backgroundColor: 'red', - borderColor: 'red', - data: days.map(day => day.weight), - fill: false, - spanGaps: true, - datalabels: { - display: false - }, - tension: 0.3 - } - ]; - - return { - datasets: datasets, - labels: days.map(day => day.date) - }; -} - -const ctx = api.$container.find("canvas")[0].getContext("2d"); - -new chartjs.Chart(ctx, { - type: 'line', - data: await getChartData() -}); \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js b/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js deleted file mode 100644 index 07b5445e5..000000000 --- a/demo/Demo/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * Chart.js v3.7.0 - * https://www.chartjs.org - * (c) 2021 Chart.js Contributors - * Released under the MIT License - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";const t="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function e(e,i,s){const n=s||(t=>Array.prototype.slice.call(t));let o=!1,a=[];return function(...s){a=n(s),o||(o=!0,t.call(window,(()=>{o=!1,e.apply(i,a)})))}}function i(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const s=t=>"start"===t?"left":"end"===t?"right":"center",n=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,o=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;var a=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=t.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}; -/*! - * @kurkle/color v0.1.9 - * https://github.com/kurkle/color#readme - * (c) 2020 Jukka Kurkela - * Released under the MIT License - */const r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},l="0123456789ABCDEF",h=t=>l[15&t],c=t=>l[(240&t)>>4]+l[15&t],d=t=>(240&t)>>4==(15&t);function u(t){var e=function(t){return d(t.r)&&d(t.g)&&d(t.b)&&d(t.a)}(t)?h:c;return t?"#"+e(t.r)+e(t.g)+e(t.b)+(t.a<255?e(t.a):""):t}function f(t){return t+.5|0}const g=(t,e,i)=>Math.max(Math.min(t,i),e);function p(t){return g(f(2.55*t),0,255)}function m(t){return g(f(255*t),0,255)}function x(t){return g(f(t/2.55)/100,0,1)}function b(t){return g(f(100*t),0,100)}const _=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const y=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function v(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function w(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function M(t,e,i){const s=v(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function k(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=n===e?(i-s)/h+(i>16&255,o>>8&255,255&o]}return t}(),T.transparent=[0,0,0,0]);const e=T[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}function R(t,e,i){if(t){let s=k(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=P(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function E(t,e){return t?Object.assign(e||{},t):t}function I(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=m(t[3]))):(e=E(t,{r:0,g:0,b:0,a:1})).a=m(e.a),e}function z(t){return"r"===t.charAt(0)?function(t){const e=_.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=255&(e[8]?p(t):255*t)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?p(i):i),s=255&(e[4]?p(s):s),n=255&(e[6]?p(n):n),{r:i,g:s,b:n,a:o}}}(t):C(t)}class F{constructor(t){if(t instanceof F)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=I(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*r[s[1]],g:255&17*r[s[2]],b:255&17*r[s[3]],a:5===o?17*r[s[4]]:255}:7!==o&&9!==o||(n={r:r[s[1]]<<4|r[s[2]],g:r[s[3]]<<4|r[s[4]],b:r[s[5]]<<4|r[s[6]],a:9===o?r[s[7]]<<4|r[s[8]]:255})),i=n||L(t)||z(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=E(this._rgb);return t&&(t.a=x(t.a)),t}set rgb(t){this._rgb=I(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${x(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):this._rgb;var t}hexString(){return this._valid?u(this._rgb):this._rgb}hslString(){return this._valid?function(t){if(!t)return;const e=k(t),i=e[0],s=b(e[1]),n=b(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${x(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):this._rgb}mix(t,e){const i=this;if(t){const s=i.rgb,n=t.rgb;let o;const a=e===o?.5:e,r=2*a-1,l=s.a-n.a,h=((r*l==-1?r:(r+l)/(1+r*l))+1)/2;o=1-h,s.r=255&h*s.r+o*n.r+.5,s.g=255&h*s.g+o*n.g+.5,s.b=255&h*s.b+o*n.b+.5,s.a=a*s.a+(1-a)*n.a,i.rgb=s}return i}clone(){return new F(this.rgb)}alpha(t){return this._rgb.a=m(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=f(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return R(this._rgb,2,t),this}darken(t){return R(this._rgb,2,-t),this}saturate(t){return R(this._rgb,1,t),this}desaturate(t){return R(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=k(t);i[0]=D(i[0]+e),i=P(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function B(t){return new F(t)}const V=t=>t instanceof CanvasGradient||t instanceof CanvasPattern;function W(t){return V(t)?t:B(t)}function N(t){return V(t)?t:B(t).saturate(.5).darken(.1).hexString()}function H(){}const j=function(){let t=0;return function(){return t++}}();function $(t){return null==t}function Y(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)}function U(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}const X=t=>("number"==typeof t||t instanceof Number)&&isFinite(+t);function q(t,e){return X(t)?t:e}function K(t,e){return void 0===t?e:t}const G=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:t/e,Z=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function J(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function Q(t,e,i,s){let n,o,a;if(Y(t))if(o=t.length,s)for(n=o-1;n>=0;n--)e.call(i,t[n],n);else for(n=0;ni;)t=t[e.substr(i,s-i)],i=s+1,s=rt(e,i);return t}function ht(t){return t.charAt(0).toUpperCase()+t.slice(1)}const ct=t=>void 0!==t,dt=t=>"function"==typeof t,ut=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function ft(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const gt=Object.create(null),pt=Object.create(null);function mt(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>N(e.backgroundColor),this.hoverBorderColor=(t,e)=>N(e.borderColor),this.hoverColor=(t,e)=>N(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return xt(this,t,e)}get(t){return mt(this,t)}describe(t,e){return xt(pt,t,e)}override(t,e){return xt(gt,t,e)}route(t,e,i,s){const n=mt(this,t),o=mt(this,i),a="_"+e;Object.defineProperties(n,{[a]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[a],e=o[s];return U(t)?Object.assign({},e,t):K(t,e)},set(t){this[a]=t}}})}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});const _t=Math.PI,yt=2*_t,vt=yt+_t,wt=Number.POSITIVE_INFINITY,Mt=_t/180,kt=_t/2,St=_t/4,Pt=2*_t/3,Dt=Math.log10,Ct=Math.sign;function Ot(t){const e=Math.round(t);t=Lt(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Dt(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function At(t){const e=[],i=Math.sqrt(t);let s;for(s=1;st-e)).pop(),e}function Tt(t){return!isNaN(parseFloat(t))&&isFinite(t)}function Lt(t,e,i){return Math.abs(t-e)=t}function Et(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function Ut(t){return!t||$(t.size)||$(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Xt(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function qt(t,e,i,s){let n=(s=s||{}).data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(n=s.data={},o=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let a=0;const r=i.length;let l,h,c,d,u;for(l=0;li.length){for(l=0;l0&&t.stroke()}}function Jt(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==o.strokeColor;let l,h;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);$(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,o),l=0;lt[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const re=(t,e,i)=>ae(t,i,(s=>t[s][e]ae(t,i,(s=>t[s][e]>=i));function he(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+ht(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function ue(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ce.forEach((e=>{delete t[e]})),delete t._chartjs)}function fe(t){const e=new Set;let i,s;for(i=0,s=t.length;iwindow.getComputedStyle(t,null);function be(t,e){return xe(t).getPropertyValue(e)}const _e=["top","right","bottom","left"];function ye(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=_e[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ve(t,e){const{canvas:i,currentDevicePixelRatio:s}=e,n=xe(i),o="border-box"===n.boxSizing,a=ye(n,"padding"),r=ye(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.native||t,s=i.touches,n=s&&s.length?s[0]:i,{offsetX:o,offsetY:a}=n;let r,l,h=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(o,a,i.target))r=o,l=a;else{const t=e.getBoundingClientRect();r=n.clientX-t.left,l=n.clientY-t.top,h=!0}return{x:r,y:l,box:h}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const we=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=xe(t),o=ye(n,"margin"),a=me(n.maxWidth,t,"clientWidth")||wt,r=me(n.maxHeight,t,"clientHeight")||wt,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=pe(t);if(o){const t=o.getBoundingClientRect(),a=xe(o),r=ye(a,"border","width"),l=ye(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=me(a.maxWidth,o,"clientWidth"),n=me(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||wt,maxHeight:n||wt}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=ye(n,"border","width"),e=ye(n,"padding");h-=e.width+t.width,c-=e.height+t.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=we(Math.min(h,a,l.maxWidth)),c=we(Math.min(c,r,l.maxHeight)),h&&!c&&(c=we(h/2)),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=n/s,t.width=o/s;const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Pe(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t,e){return"native"in t?{x:t.x,y:t.y}:ve(t,e)}function Ce(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&a&&o.length){const t=r._reversePixels?le:re;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n="function"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Oe(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[r](n[a],s)&&o.push({element:t,datasetIndex:e,index:i}),t.inRange(n.x,n.y,s)&&(l=!0)})),i.intersect&&!l?[]:o}var Ee={modes:{index(t,e,i,s){const n=De(e,t),o=i.axis||"x",a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s),r=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&r.push({element:i,datasetIndex:t.index,index:e})})),r):[]},dataset(t,e,i,s){const n=De(e,t),o=i.axis||"xy";let a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;tAe(t,De(e,t),i.axis||"xy",s),nearest:(t,e,i,s)=>Le(t,De(e,t),i.axis||"xy",i.intersect,s),x:(t,e,i,s)=>Re(t,e,{axis:"x",intersect:i.intersect},s),y:(t,e,i,s)=>Re(t,e,{axis:"y",intersect:i.intersect},s)}};const Ie=new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),ze=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function Fe(t,e){const i=(""+t).match(Ie);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function Be(t,e){const i={},s=U(e),n=s?Object.keys(e):e,o=U(t)?s?i=>K(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+o(t)||0;return i}function Ve(t){return Be(t,{top:"y",right:"x",bottom:"y",left:"x"})}function We(t){return Be(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Ne(t){const e=Ve(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function He(t,e){t=t||{},e=e||bt.font;let i=K(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=K(t.style,e.style);s&&!(""+s).match(ze)&&(console.warn('Invalid font style specified: "'+s+'"'),s="");const n={family:K(t.family,e.family),lineHeight:Fe(K(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:K(t.weight,e.weight),string:""};return n.string=Ut(n),n}function je(t,e,i,s){let n,o,a,r=!0;for(n=0,o=t.length;ni&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ye(t,e){return Object.assign(Object.create(t),e)}const Ue=["left","top","right","bottom"];function Xe(t,e){return t.filter((t=>t.pos===e))}function qe(t,e){return t.filter((t=>-1===Ue.indexOf(t.pos)&&t.box.axis===e))}function Ke(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ge(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ue.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function ei(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Ke(Xe(e,"left"),!0),n=Ke(Xe(e,"right")),o=Ke(Xe(e,"top"),!0),a=Ke(Xe(e,"bottom")),r=qe(e,"x"),l=qe(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xe(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;Q(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),u=Object.assign({},n);Je(u,Ne(s));const f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=Ge(l.concat(h),d);ei(r.fullSize,f,d,g),ei(l,f,d,g),ei(h,f,d,g)&&ei(l,f,d,g),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(f),si(r.leftAndTop,f,d,g),f.x+=f.w,f.y+=f.h,si(r.rightAndBottom,f,d,g),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},Q(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})}))}};function oi(t,e=[""],i=t,s,n=(()=>t[0])){ct(s)||(s=mi("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>oi([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>ci(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=mi(li(o,t),i),ct(n))return hi(t,n)?gi(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>xi(t).includes(e),ownKeys:t=>xi(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function ai(t,e,i,s){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:ri(t,s),setContext:e=>ai(t,e,i,s),override:n=>ai(t.override(n),e,i,s)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>ci(t,e,(()=>function(t,e,i){const{_proxy:s,_context:n,_subProxy:o,_descriptors:a}=t;let r=s[e];dt(r)&&a.isScriptable(e)&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),hi(t,e)&&(e=gi(n._scopes,n,t,e));return e}(e,r,t,i));Y(r)&&r.length&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_descriptors:r}=i;if(ct(o.index)&&s(t))e=e[o.index%e.length];else if(U(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=gi(s,n,t,l);e.push(ai(i,o,a&&a[t],r))}}return e}(e,r,t,a.isIndexable));hi(e,r)&&(r=ai(r,n,o&&o[e],a));return r}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function ri(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:dt(i)?i:()=>i,isIndexable:dt(s)?s:()=>s}}const li=(t,e)=>t?t+ht(e):e,hi=(t,e)=>U(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function ci(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function di(t,e,i){return dt(t)?t(e,i):t}const ui=(t,e)=>!0===t?e:"string"==typeof t?lt(e,t):void 0;function fi(t,e,i,s,n){for(const o of e){const e=ui(i,o);if(e){t.add(e);const o=di(e._fallback,i,n);if(ct(o)&&o!==i&&o!==s)return o}else if(!1===e&&ct(s)&&i!==s)return null}return!1}function gi(t,e,i,s){const n=e._rootScopes,o=di(e._fallback,i,s),a=[...t,...n],r=new Set;r.add(s);let l=pi(r,a,i,o||i,s);return null!==l&&((!ct(o)||o===i||(l=pi(r,a,o,l,s),null!==l))&&oi(Array.from(r),[""],n,o,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const n=s[e];if(Y(n)&&U(i))return i;return n}(e,i,s))))}function pi(t,e,i,s,n){for(;i;)i=fi(t,e,i,s,n);return i}function mi(t,e){for(const i of e){if(!i)continue;const e=i[t];if(ct(e))return e}}function xi(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}const bi=Number.EPSILON||1e-14,_i=(t,e)=>e"x"===t?"y":"x";function vi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=Vt(o,n),l=Vt(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function wi(t,e="x"){const i=yi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=_i(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)wi(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,Pi=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*yt/i),Di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*yt/i)+1,Ci={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*kt),easeOutSine:t=>Math.sin(t*kt),easeInOutSine:t=>-.5*(Math.cos(_t*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>Si(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>Si(t)?t:Pi(t,.075,.3),easeOutElastic:t=>Si(t)?t:Di(t,.075,.3),easeInOutElastic(t){const e=.1125;return Si(t)?t:t<.5?.5*Pi(2*t,e,.45):.5+.5*Di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-Ci.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*Ci.easeInBounce(2*t):.5*Ci.easeOutBounce(2*t-1)+.5};function Oi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Ai(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function Ti(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=Oi(t,n,i),r=Oi(n,o,i),l=Oi(o,e,i),h=Oi(a,r,i),c=Oi(r,l,i);return Oi(h,c,i)}const Li=new Map;function Ri(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=Li.get(i);return s||(s=new Intl.NumberFormat(t,e),Li.set(i,s)),s}(e,i).format(t)}function Ei(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ii(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function zi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Fi(t){return"angle"===t?{between:Ht,compare:Wt,normalize:Nt}:{between:Yt,compare:(t,e)=>t-e,normalize:t=>t}}function Bi({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Vi(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Fi(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Fi(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Bi({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Bi({start:_,end:d,loop:u,count:a,style:f})),g}function Wi(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Hi(t,[{start:a,end:r,loop:o}],i,e);return Hi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,rnull===t||""===t;const Gi=!!Se&&{passive:!0};function Zi(t,e,i){t.canvas.removeEventListener(e,i,Gi)}function Ji(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function Qi(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.addedNodes,s),e=e&&!Ji(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ts(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.removedNodes,s),e=e&&!Ji(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const es=new Map;let is=0;function ss(){const t=window.devicePixelRatio;t!==is&&(is=t,es.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ns(t,i,s){const n=t.canvas,o=n&&pe(n);if(!o)return;const a=e(((t,e)=>{const i=o.clientWidth;s(t,e),i{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||a(i,s)}));return r.observe(o),function(t,e){es.size||window.addEventListener("resize",ss),es.set(t,e)}(t,a),r}function os(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){es.delete(t),es.size||window.removeEventListener("resize",ss)}(t)}function as(t,i,s){const n=t.canvas,o=e((e=>{null!==t.ctx&&s(function(t,e){const i=qi[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,Gi)}(n,i,o),o}class rs extends Ui{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",Ki(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(Ki(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const s=i[t];$(s)?e.removeAttribute(t):e.setAttribute(t,s)}));const s=i.style||{};return Object.keys(s).forEach((t=>{e.style[t]=s[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:Qi,detach:ts,resize:ns}[e]||as;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:os,detach:os,resize:os}[e]||Zi)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=pe(t);return!(!e||!e.isConnected)}}function ls(t){return!ge()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Xi:rs}var hs=Object.freeze({__proto__:null,_detectPlatform:ls,BasePlatform:Ui,BasicPlatform:Xi,DomPlatform:rs});const cs="transparent",ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=W(t||cs),n=s.valid&&W(e||cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class us{constructor(t,e,i,s){const n=e[i];s=je([t.to,s,n,t.from]);const o=je([t.from,n,s]);this._active=!0,this._fn=t.fn||ds[t.type||typeof o],this._easing=Ci[t.easing]||Ci.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=je([t.to,e,s,t.from]),this._from=je([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),bt.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),bt.describe("animations",{_fallback:"animation"}),bt.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}});class gs{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!U(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const s=t[i];if(!U(s))return;const n={};for(const t of fs)n[t]=s[t];(Y(s.properties)&&s.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,n)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new us(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(a.add(this._chart,i),!0):void 0}}function ps(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function ms(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ms(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i]}}}const ks=t=>"reset"===t||"none"===t,Ss=(t,e)=>e?t:Object.assign({},t);class Ps{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=bs(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Ms(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=K(i.xAxisID,ws(t,"x")),o=e.yAxisID=K(i.yAxisID,ws(t,"y")),a=e.rAxisID=K(i.rAxisID,ws(t,"r")),r=e.indexAxis,l=e.iAxisID=s(r,n,o,a),h=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&ue(this._data,this),t._stacked&&Ms(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(U(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,h=s;else{h=Y(s[t])?this.parseArrayData(i,s,t,e):U(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const n=()=>null===l[a]||d&&l[a]t&&!e.hidden&&e._stacked&&{keys:ms(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:c}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(a);let d,u;function f(){u=s[d];const e=u[a.axis];return!X(u[t.axis])||h>e||c=0;--d)if(!f()){this.updateRangeFromParsed(l,t,u,r);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ss(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new gs(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ks(t)||this.chart._animationsDisabled}updateElement(t,e,i,s){ks(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!ks(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}Ds.defaults={},Ds.defaultRoutes=void 0;const Cs={values:t=>Y(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=Dt(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Ri(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=t/Math.pow(10,Math.floor(Dt(t)));return 1===s||2===s||5===s?Cs.numeric.call(this,t,e,i):""}};var Os={formatters:Cs};function As(t,e){const i=t.options.ticks,s=i.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),n=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;is)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(n,e,s);if(o>0){let t,i;const s=o>1?Math.round((r-a)/(o-1)):null;for(Ts(e,l,h,$(s)?0:a-s,a),t=0,i=o-1;te.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Os.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),bt.route("scale.ticks","color","","color"),bt.route("scale.grid","color","","borderColor"),bt.route("scale.grid","borderColor","","borderColor"),bt.route("scale.title","color","","color"),bt.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t}),bt.describe("scales",{_fallback:"scale"}),bt.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t});const Ls=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function Rs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Is(t){return t.drawTicks?t.tickLength:0}function zs(t,e){if(!t.display)return 0;const i=He(t.font,e),s=Ne(t.padding);return(Y(t.text)?t.text.length:1)*i.lineHeight+s.height}function Fs(t,e,i){let n=s(t);return(i&&"right"!==e||!i&&"right"===e)&&(n=(t=>"left"===t?"right":"right"===t?"left":t)(n)),n}class Bs extends Ds{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),i=q(i,Number.POSITIVE_INFINITY),s=q(s,Number.NEGATIVE_INFINITY),{min:q(t,i),max:q(e,s),minDefined:X(t),maxDefined:X(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:q(i,q(s,i)),max:q(s,q(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){J(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=$e(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=jt(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Is(t.grid)-e.padding-zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=zt(Math.min(Math.asin(jt((h.highest.height+6)/o,-1,1)),Math.asin(jt(a/r,-1,1))-Math.asin(jt(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){J(this.options.afterCalculateLabelRotation,[this])}beforeFit(){J(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Is(n)+o):(t.height=this.maxHeight,t.width=Is(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=It(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){J(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:n[t]||0,height:o[t]||0});return{first:v(0),last:v(e-1),widest:v(_),highest:v(y),widths:n,heights:o}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return $t(this._alignToPixels?Kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:o}=s,a=n.offset,r=this.isHorizontal(),l=this.ticks.length+(a?1:0),h=Is(n),c=[],d=n.setContext(this.getContext()),u=d.drawBorder?d.borderWidth:0,f=u/2,g=function(t){return Kt(i,t,u)};let p,m,x,b,_,y,v,w,M,k,S,P;if("top"===o)p=g(this.bottom),y=this.bottom-h,w=p-f,k=g(t.top)+f,P=t.bottom;else if("bottom"===o)p=g(this.top),k=t.top,P=g(t.bottom)-f,y=p+f,w=this.top+h;else if("left"===o)p=g(this.right),_=this.right-h,v=p-f,M=g(t.left)+f,S=t.right;else if("right"===o)p=g(this.left),M=t.left,S=g(t.right)-f,_=p+f,v=this.left+h;else if("x"===e){if("center"===o)p=g((t.top+t.bottom)/2+.5);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}k=t.top,P=t.bottom,y=p+f,w=y+h}else if("y"===e){if("center"===o)p=g((t.left+t.right)/2);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}_=p-f,v=_-h,M=t.left,S=t.right}const D=K(s.ticks.maxTicksLimit,l),C=Math.max(1,Math.ceil(l/D));for(m=0;me.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");bt.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&bt.describe(e,t.descriptors)}(t,o,i),this.override&&bt.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in bt[s]&&(delete bt[s][i],this.override&&delete gt[i])}}var Ws=new class{constructor(){this.controllers=new Vs(Ps,"datasets",!0),this.elements=new Vs(Ds,"elements"),this.plugins=new Vs(Object,"plugins"),this.scales=new Vs(Bs,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):Q(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=ht(t);J(i["before"+s],[],i),e[t](i),J(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function Hs(t,e){return e||!1!==t?!0===t?{}:t:null}function js(t,e,i,s){const n=t.pluginScopeKeys(e),o=t.getOptionScopes(i,n);return t.createResolver(o,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function $s(t,e){const i=bt.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Ys(t,e){return"x"===t||"y"===t?t:e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.charAt(0).toLowerCase();var i}function Us(t){const e=t.options||(t.options={});e.plugins=K(e.plugins,{}),e.scales=function(t,e){const i=gt[t.type]||{scales:{}},s=e.scales||{},n=$s(t.type,e),o=Object.create(null),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!U(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=Ys(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,n),h=i.scales||{};o[r]=o[r]||t,a[t]=ot(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,r=i.indexAxis||$s(n,e),l=(gt[n]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||o[e]||e;a[n]=a[n]||Object.create(null),ot(a[n],[{axis:e},s[n],l[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];ot(e,[bt.scales[e.type],bt.scale])})),a}(t,e)}function Xs(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const qs=new Map,Ks=new Set;function Gs(t,e){let i=qs.get(t);return i||(i=e(),qs.set(t,i),Ks.add(i)),i}const Zs=(t,e,i)=>{const s=lt(e,i);void 0!==s&&t.add(s)};class Js{constructor(t){this._config=function(t){return(t=t||{}).data=Xs(t.data),Us(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Xs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Us(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Gs(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Gs(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Gs(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return Gs(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Zs(r,t,e)))),e.forEach((t=>Zs(r,s,t))),e.forEach((t=>Zs(r,gt[n]||{},t))),e.forEach((t=>Zs(r,bt,t))),e.forEach((t=>Zs(r,pt,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),Ks.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,gt[e]||{},bt.datasets[e]||{},{type:e},bt,pt]}resolveNamedOptions(t,e,i,s=[""]){const n={$shared:!0},{resolver:o,subPrefixes:a}=Qs(this._resolverCache,t,s);let r=o;if(function(t,e){const{isScriptable:i,isIndexable:s}=ri(t);for(const n of e){const e=i(n),o=s(n),a=(o||e)&&t[n];if(e&&(dt(a)||tn(a))||o&&Y(a))return!0}return!1}(o,e)){n.$shared=!1;r=ai(o,i=dt(i)?i():i,this.createResolver(t,i,a))}for(const t of e)n[t]=r[t];return n}createResolver(t,e,i=[""],s){const{resolver:n}=Qs(this._resolverCache,t,i);return U(e)?ai(n,e,void 0,s):n}}function Qs(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:oi(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const tn=t=>U(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||dt(t[i])),!1);const en=["top","bottom","left","right","chartArea"];function sn(t,e){return"top"===t||"bottom"===t||-1===en.indexOf(t)&&"x"===e}function nn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function on(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),J(i&&i.onComplete,[t],e)}function an(t){const e=t.chart,i=e.options.animation;J(i&&i.onProgress,[t],e)}function rn(t){return ge()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const ln={},hn=t=>{const e=rn(t);return Object.values(ln).filter((t=>t.canvas===e)).pop()};function cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class dn{constructor(t,e){const s=this.config=new Js(e),n=rn(t),o=hn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas can be reused.");const r=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ls(n)),this.platform.updateConfig(s);const l=this.platform.acquireContext(n,r.aspectRatio),h=l&&l.canvas,c=h&&h.height,d=h&&h.width;this.id=j(),this.ctx=l,this.canvas=h,this.width=d,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ns,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=i((t=>this.update(t)),r.resizeDelay||0),this._dataChanges=[],ln[this.id]=this,l&&h?(a.listen(this,"complete",on),a.listen(this,"progress",an),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:n}=this;return $(t)?e&&n?n:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Gt(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),J(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){Q(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=Ys(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),Q(n,(e=>{const n=e.options,o=n.id,a=Ys(o,n),r=K(n.type,e.dtype);void 0!==n.position&&sn(n.position,a)===sn(e.dposition)||(n.position=e.dposition),s[o]=!0;let l=null;if(o in i&&i[o].type===r)l=i[o];else{l=new(Ws.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)})),Q(s,((t,e)=>{t||delete i[e]})),Q(i,(t=>{ni.configure(this,t,t.options),ni.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(nn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){Q(this.scales,(t=>{ni.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);ut(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){cn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ni.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],Q(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Qt(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&te(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}getElementsAtEventForMode(t,e,i,s){const n=Ee.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ye(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);ct(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),a.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};Q(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){Q(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},Q(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!tt(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:Jt(t,this.chartArea,this._minPadding)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=ft(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,J(n.onHover,[t,a,this],this),r&&J(n.onClick,[t,a,this],this));const h=!tt(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}const un=()=>Q(dn.instances,(t=>t._plugins.invalidate())),fn=!0;function gn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}Object.defineProperties(dn,{defaults:{enumerable:fn,value:bt},instances:{enumerable:fn,value:ln},overrides:{enumerable:fn,value:gt},registry:{enumerable:fn,value:Ws},version:{enumerable:fn,value:"3.7.0"},getChart:{enumerable:fn,value:hn},register:{enumerable:fn,value:(...t)=>{Ws.add(...t),un()}},unregister:{enumerable:fn,value:(...t)=>{Ws.remove(...t),un()}}});class pn{constructor(t){this.options=t||{}}formats(){return gn()}parse(t,e){return gn()}format(t,e){return gn()}add(t,e,i){return gn()}diff(t,e,i){return gn()}startOf(t,e,i){return gn()}endOf(t,e){return gn()}}pn.override=function(t){Object.assign(pn.prototype,t)};var mn={_date:pn};function xn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(ct(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function _n(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base=i?1:-1)}(c,e,o)*n,d===o&&(p-=c/2),h=p+c),p===e.getPixelForValue(o)){const t=Ct(c)*e.getLineWidthForValue(o)/2;p+=t,c-=t}return{size:c,base:p,head:h,center:h+c/2}}_calculateBarIndexPixels(t,e){const i=e.scale,s=this.options,n=s.skipNull,o=K(s.maxBarThickness,1/0);let a,r;if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,l="flex"===s.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:s}=e,n=this.getParsed(t),o=i.getLabelForValue(n.x),a=s.getLabelForValue(n.y),r=n._custom;return{label:e.label,value:"("+o+", "+a+(r?", "+r:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,r=this.resolveDataElementOptions(e,s),l=this.getSharedOptions(r),h=this.includeOptions(s,l),c=o.axis,d=a.axis;for(let r=e;r""}}}};class Dn extends Ps{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,o,a=t=>+i[t];if(U(i[t])){const{key:t="value"}=this._parsing;a=e=>+lt(i[e],t)}for(n=t,o=t+e;nHt(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Ht(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(kt,c,u),x=g(_t,h,d),b=g(_t+kt,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(c,h,r),p=(i.width-o)/d,m=(i.height-o)/u,x=Math.max(Math.min(p,m)/2,0),b=Z(this.options.radius,x),_=(b-Math.max(b*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=f*b,this.offsetY=g*b,s.total=this.calculateTotal(),this.outerRadius=b-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/yt)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,f=this.resolveDataElementOptions(e,s),g=this.getSharedOptions(f),p=this.includeOptions(s,g);let m,x=this._getRotation();for(m=0;m0&&!isNaN(t)?yt*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s"spacing"!==t,_indexable:t=>"spacing"!==t},Dn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label(t){let e=t.label;const i=": "+t.formattedValue;return Y(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class Cn extends Ps{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=function(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=jt(Math.min(re(r,a.axis,h).lo,i?s:re(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?jt(Math.max(re(r,a.axis,c).hi+1,i?0:re(e,l,a.getPixelForValue(c)).hi+1),n,s)-n:s-n}return{start:n,count:o}}(e,s,o);this._drawStart=a,this._drawCount=r,function(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a,_stacked:r,_dataset:l}=this._cachedMeta,h=this.resolveDataElementOptions(e,s),c=this.getSharedOptions(h),d=this.includeOptions(s,c),u=o.axis,f=a.axis,{spanGaps:g,segment:p}=this.options,m=Tt(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||n||"none"===s;let b=e>0&&this.getParsed(e-1);for(let h=e;h0&&i[u]-b[u]>m,p&&(g.parsed=i,g.raw=l.data[h]),d&&(g.options=c||this.resolveDataElementOptions(h,e.active?"active":s)),x||this.updateElement(e,h,g,s),b=i}this.updateSharedOptions(c,s,h)}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}Cn.id="line",Cn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},Cn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class On extends Ps{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=this.getDataset(),r=o.options.animation,l=this._cachedMeta.rScale,h=l.xCenter,c=l.yCenter,d=l.getIndexAngle(0)-.5*_t;let u,f=d;const g=360/this.countVisibleElements();for(u=0;u{!isNaN(t.data[s])&&this.chart.getDataVisibility(s)&&i++})),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?It(this.resolveDataElementOptions(t,e).angle||i):0}}On.id="polarArea",On.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},On.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label:t=>t.chart.data.labels[t.dataIndex]+": "+t.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class An extends Dn{}An.id="pie",An.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Tn extends Ps{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this.getDataset(),o=this._cachedMeta.rScale,a="reset"===s;for(let r=e;r"",label:t=>"("+t.label+", "+t.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var Rn=Object.freeze({__proto__:null,BarController:Sn,BubbleController:Pn,DoughnutController:Dn,LineController:Cn,PolarAreaController:On,PieController:An,RadarController:Tn,ScatterController:Ln});function En(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+kt,s-kt),t.closePath(),t.clip()}function In(t,e,i,s){const n=Be(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return jt(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:jt(n.innerStart,0,a),innerEnd:jt(n.innerEnd,0,a)}}function zn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Fn(t,e,i,s,n){const{x:o,y:a,startAngle:r,pixelMargin:l,innerRadius:h}=e,c=Math.max(e.outerRadius+s+i-l,0),d=h>0?h+s+i+l:0;let u=0;const f=n-r;if(s){const t=((h>0?h-s:0)+(c>0?c-s:0))/2;u=(f-(0!==t?f*t/(t+s):f))/2}const g=(f-Math.max(.001,f*c-i/_t)/c)/2,p=r+g+u,m=n-g-u,{outerStart:x,outerEnd:b,innerStart:_,innerEnd:y}=In(e,d,c,m-p),v=c-x,w=c-b,M=p+x/v,k=m-b/w,S=d+_,P=d+y,D=p+_/S,C=m-y/P;if(t.beginPath(),t.arc(o,a,c,M,k),b>0){const e=zn(w,k,o,a);t.arc(e.x,e.y,b,k,m+kt)}const O=zn(P,m,o,a);if(t.lineTo(O.x,O.y),y>0){const e=zn(P,C,o,a);t.arc(e.x,e.y,y,m+kt,C+Math.PI)}if(t.arc(o,a,d,m-y/d,p+_/d,!0),_>0){const e=zn(S,D,o,a);t.arc(e.x,e.y,_,D+Math.PI,p-kt)}const A=zn(v,p,o,a);if(t.lineTo(A.x,A.y),x>0){const e=zn(v,M,o,a);t.arc(e.x,e.y,x,p-kt,M)}t.closePath()}function Bn(t,e,i,s,n){const{options:o}=e,{borderWidth:a,borderJoinStyle:r}=o,l="inner"===o.borderAlign;a&&(l?(t.lineWidth=2*a,t.lineJoin=r||"round"):(t.lineWidth=a,t.lineJoin=r||"bevel"),e.fullCircles&&function(t,e,i){const{x:s,y:n,startAngle:o,pixelMargin:a,fullCircles:r}=e,l=Math.max(e.outerRadius-a,0),h=e.innerRadius+a;let c;for(i&&En(t,e,o+yt),t.beginPath(),t.arc(s,n,h,o+yt,o,!0),c=0;c=yt||Ht(n,a,r),f=Yt(o,l+d,h+d);return u&&f}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/2,n=(e.spacing||0)/2;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>yt?Math.floor(i/yt):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let o=0;if(s){o=s/2;const e=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(e)*o,Math.sin(e)*o),this.circumference>=_t&&(o=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;const a=function(t,e,i,s){const{fullCircles:n,startAngle:o,circumference:a}=e;let r=e.endAngle;if(n){Fn(t,e,i,s,o+yt);for(let e=0;er&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function Yn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?$n:jn}Vn.id="arc",Vn.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},Vn.defaultRoutes={backgroundColor:"backgroundColor"};const Un="function"==typeof Path2D;function Xn(t,e,i,s){Un&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Wn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=Yn(e);for(const r of n)Wn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class qn extends Ds{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;ki(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ni(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Wi(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?Ai:t.tension||"monotone"===t.cubicInterpolationMode?Ti:Oi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t&&"fill"!==t};class Gn extends Ds{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2){oo(t)}))}var ro={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void ao(t);const s=t.width;t.data.datasets.forEach(((e,n)=>{const{_data:o,indexAxis:a}=e,r=t.getDatasetMeta(n),l=o||e.data;if("y"===je([a,t.options.indexAxis]))return;if("line"!==r.type)return;const h=t.scales[r.xAxisID];if("linear"!==h.type&&"time"!==h.type)return;if(t.options.parsing)return;let{start:c,count:d}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=jt(re(e,o.axis,a).lo,0,i-1)),s=h?jt(re(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(r,l);if(d<=(i.threshold||4*s))return void oo(e);let u;switch($(o)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(l,c,d,s,i);break;case"min-max":u=function(t,e,i,s){let n,o,a,r,l,h,c,d,u,f,g=0,p=0;const m=[],x=e+i-1,b=t[e].x,_=t[x].x-b;for(n=e;nf&&(f=r,c=n),g=(p*g+o.x)/++p;else{const i=n-1;if(!$(h)&&!$(c)){const e=Math.min(h,c),s=Math.max(h,c);e!==d&&e!==i&&m.push({...t[e],x:g}),s!==d&&s!==i&&m.push({...t[s],x:g})}n>0&&i!==d&&m.push(t[i]),m.push(o),l=e,p=0,u=f=r,h=c=d=n}}return m}(l,c,d,s);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u}))},destroy(t){ao(t)}};function lo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=K(i&&i.target,i);return void 0===s&&(s=!!e.backgroundColor),!1!==s&&null!==s&&(!0===s?"origin":s)}(t);if(U(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return X(n)&&Math.floor(n)===n?("-"!==s[0]&&"+"!==s[0]||(n=e+n),!(n===e||n<0||n>=i)&&n):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}class ho{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:yt},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function co(t){return(t.scale||{}).getPointPositionForValue?function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,o=[],a=s.reverse?e.max:e.min,r=s.reverse?e.min:e.max;let l,h,c;if(c="start"===i?a:"end"===i?r:U(i)?i.value:e.getBaseValue(),s.grid.circular)return h=e.getPointPositionForValue(0,a),new ho({x:h.x,y:h.y,radius:e.getDistanceFromCenterForValue(c)});for(l=0;lt;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function fo(t,e,i){const s=[];for(let n=0;n{e=uo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new qn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function xo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!X(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function bo(t,e,i){t.beginPath(),e.path(t),t.lineTo(e.last().x,i),t.lineTo(e.first().x,i),t.closePath(),t.clip()}function _o(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=Nt(n),o=Nt(o)),{property:t,start:n,end:o}}function yo(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function vo(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};"x"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function wo(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}function Mo(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=uo(s,r,n);const l=_o(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Wi(e,l);for(const e of h){const s=_o(i,o[e.start],o[e.end],e.loop),r=Vi(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:yo(l,s,"start",Math.max)},end:{[i]:yo(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,vo(t,a,d&&_o(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():wo(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||wo(t,s,h,n)}t.closePath(),t.fill(f?"evenodd":"nonzero"),t.restore()}}function ko(t,e,i){const s=po(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Qt(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&o!==n&&(bo(t,s,a.top),Mo(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),bo(t,s,a.bottom)),Mo(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),te(t))}var So={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&ko(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;i&&ko(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;s&&!1!==s.fill&&"beforeDatasetDraw"===i.drawTime&&ko(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Po=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class Do extends Ds{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=J(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=He(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=Po(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,n,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const p=i+e/2+n.measureText(t.text).width;o>0&&u+s+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:s},d=Math.max(d,p),u+=s+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:o}}=this,a=Ei(o,this.left,this.width);if(this.isHorizontal()){let o=0,r=n(i,this.left+s,this.right-this.lineWidths[o]);for(const l of e)o!==l.row&&(o=l.row,r=n(i,this.left+s,this.right-this.lineWidths[o])),l.top+=this.top+t+s,l.left=a.leftForLtr(a.x(r),l.width),r+=l.width+s}else{let o=0,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height);for(const l of e)l.col!==o&&(o=l.col,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height)),l.top=r,l.left+=this.left+s,l.left=a.leftForLtr(a.x(l.left),l.width),r+=l.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Qt(t,this),this._draw(),te(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:a,labels:r}=t,l=bt.color,h=Ei(t.rtl,this.left,this.width),c=He(r.font),{color:d,padding:u}=r,f=c.size,g=f/2;let p;this.drawTitle(),s.textAlign=h.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:m,boxHeight:x,itemHeight:b}=Po(r,f),_=this.isHorizontal(),y=this._computeTitleHeight();p=_?{x:n(a,this.left+u,this.right-i[0]),y:this.top+u+y,line:0}:{x:this.left+u,y:n(a,this.top+y+u,this.bottom-e[0].height),line:0},Ii(this.ctx,t.textDirection);const v=b+u;this.legendItems.forEach(((w,M)=>{s.strokeStyle=w.fontColor||d,s.fillStyle=w.fontColor||d;const k=s.measureText(w.text).width,S=h.textAlign(w.textAlign||(w.textAlign=r.textAlign)),P=m+g+k;let D=p.x,C=p.y;h.setWidth(this.width),_?M>0&&D+P+u>this.right&&(C=p.y+=v,p.line++,D=p.x=n(a,this.left+u,this.right-i[p.line])):M>0&&C+v>this.bottom&&(D=p.x=D+e[p.line].width+u,p.line++,C=p.y=n(a,this.top+y+u,this.bottom-e[p.line].height));!function(t,e,i){if(isNaN(m)||m<=0||isNaN(x)||x<0)return;s.save();const n=K(i.lineWidth,1);if(s.fillStyle=K(i.fillStyle,l),s.lineCap=K(i.lineCap,"butt"),s.lineDashOffset=K(i.lineDashOffset,0),s.lineJoin=K(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=K(i.strokeStyle,l),s.setLineDash(K(i.lineDash,[])),r.usePointStyle){const o={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},a=h.xPlus(t,m/2);Zt(s,o,a,e+g)}else{const o=e+Math.max((f-x)/2,0),a=h.leftForLtr(t,m),r=We(i.borderRadius);s.beginPath(),Object.values(r).some((t=>0!==t))?oe(s,{x:a,y:o,w:m,h:x,radius:r}):s.rect(a,o,m,x),s.fill(),0!==n&&s.stroke()}s.restore()}(h.x(D),C,w),D=o(S,D+m+g,_?D+P:this.right,t.rtl),function(t,e,i){se(s,i.text,t,e+b/2,c,{strikethrough:i.hidden,textAlign:h.textAlign(i.textAlign)})}(h.x(D),C,w),_?p.x+=P+u:p.y+=v})),zi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=He(e.font),o=Ne(e.padding);if(!e.display)return;const a=Ei(t.rtl,this.left,this.width),r=this.ctx,l=e.position,h=i.size/2,c=o.top+h;let d,u=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),d=this.top+c,u=n(t.align,u,this.right-f);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);d=c+n(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const g=n(l,u,u+f);r.textAlign=a.textAlign(s(l)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=i.string,se(r,e.text,g,d,i)}_computeTitleHeight(){const t=this.options.title,e=He(t.font),i=Ne(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(Yt(t,this.left,this.right)&&Yt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const a=t.controller.getStyle(i?0:void 0),r=Ne(a.borderWidth);return{text:e[t.index].label,fillStyle:a.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(r.width+r.height)/4,strokeStyle:a.borderColor,pointStyle:s||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Oo extends Ds{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=Y(i.text)?i.text.length:1;this._padding=Ne(i.padding);const n=s*He(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:o,options:a}=this,r=a.align;let l,h,c,d=0;return this.isHorizontal()?(h=n(r,i,o),c=e+t,l=o-i):("left"===a.position?(h=i+t,c=n(r,s,e),d=-.5*_t):(h=o-t,c=n(r,e,s),d=.5*_t),l=s-e),{titleX:h,titleY:c,maxWidth:l,rotation:d}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=He(e.font),n=i.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:r,rotation:l}=this._drawArgs(n);se(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:l,textAlign:s(e.align),textBaseline:"middle",translation:[o,a]})}}var Ao={id:"title",_element:Oo,start(t,e,i){!function(t,e){const i=new Oo({ctx:t.ctx,options:e,chart:t});ni.configure(t,i,e),ni.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ni.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const To=new WeakMap;var Lo={id:"subtitle",start(t,e,i){const s=new Oo({ctx:t.ctx,options:i,chart:t});ni.configure(t,s,i),ni.addBox(t,s),To.set(t,s)},stop(t){ni.removeBox(t,To.get(t)),To.delete(t)},beforeUpdate(t,e,i){const s=To.get(t);ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Ro={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function zo(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Fo(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=He(e.bodyFont),h=He(e.titleFont),c=He(e.footerFont),d=o.length,u=n.length,f=s.length,g=Ne(e.padding);let p=g.height,m=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(p+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){p+=f*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-f)*l.lineHeight+(x-1)*e.bodySpacing}u&&(p+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let b=0;const _=function(t){m=Math.max(m,i.measureText(t).width+b)};return i.save(),i.font=h.string,Q(t.title,_),i.font=l.string,Q(t.beforeBody.concat(t.afterBody),_),b=e.displayColors?a+2+e.boxPadding:0,Q(s,(t=>{Q(t.before,_),Q(t.lines,_),Q(t.after,_)})),b=0,i.font=c.string,Q(t.footer,_),i.restore(),m+=g.width,{width:m,height:p}}function Bo(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Vo(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Bo(t,e,i,s),yAlign:s}}function Wo(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=We(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:jt(g,0,s.width-e.width),y:jt(p,0,s.height-e.height)}}function No(t,e,i){const s=Ne(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ho(t){return Eo([],Io(t))}function jo(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class $o extends Ds{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new gs(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ye(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),n=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}getBeforeBody(t,e){return Ho(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:i}=e,s=[];return Q(t,(t=>{const e={before:[],lines:[],after:[]},n=jo(i,t);Eo(e.before,Io(n.beforeLabel.call(this,t))),Eo(e.lines,n.label.call(this,t)),Eo(e.after,Io(n.afterLabel.call(this,t))),s.push(e)})),s}getAfterBody(t,e){return Ho(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),n=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),Q(l,(e=>{const i=jo(t.callbacks,e);s.push(i.labelColor.call(this,e)),n.push(i.labelPointStyle.call(this,e)),o.push(i.labelTextColor.call(this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Ro[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Fo(this,i),a=Object.assign({},t,e),r=Vo(this.chart,i,a),l=Wo(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=We(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Ei(i.rtl,this.x,this.width);for(t.x=No(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=He(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,oe(t,{x:e,y:g,w:l,h:r,radius:a}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),oe(t,{x:i,y:g+1,w:l-2,h:r-2,radius:a}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,l,r),t.strokeRect(e,g,l,r),t.fillStyle=o.backgroundColor,t.fillRect(i,g+1,l-2,r-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=He(i.bodyFont);let d=c.lineHeight,u=0;const f=Ei(i.rtl,this.x,this.width),g=function(i){e.fillText(i,f.x(t.x+u),t.y+d/2),t.y+=d+n},p=f.textAlign(o);let m,x,b,_,y,v,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=No(this,p,i),e.fillStyle=i.bodyColor,Q(this.beforeBody,g),u=a&&"right"!==p?"center"===o?l/2+h:l+2+h:0,_=0,v=s.length;_0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Ro[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Fo(this,t),a=Object.assign({},i,this._size),r=Vo(e,t,a),l=Wo(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Ne(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ii(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),zi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!tt(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!tt(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Ro[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}$o.positioners=Ro;var Yo={id:"tooltip",_element:$o,positioners:Ro,afterInit(t,e,i){i&&(t.tooltip=new $o({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip,i={tooltip:e};!1!==t.notifyPlugins("beforeTooltipDraw",i)&&(e&&e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i))},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:H,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Uo=Object.freeze({__proto__:null,Decimation:ro,Filler:So,Legend:Co,SubTitle:Lo,Title:Ao,Tooltip:Yo});function Xo(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}class qo extends Bs{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if($(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:jt(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:Xo(i,t,K(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function Ko(t,e,{horizontal:i,minRotation:s}){const n=It(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}qo.id="category",qo.defaults={ticks:{callback:qo.prototype.getLabelForValue}};class Go extends Bs{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return $(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=Ct(s),e=Ct(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=1;(n>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(e=Math.abs(.05*n)),a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function(t,e){const i=[],{bounds:s,step:n,min:o,max:a,precision:r,count:l,maxTicks:h,maxDigits:c,includeBounds:d}=t,u=n||1,f=h-1,{min:g,max:p}=e,m=!$(o),x=!$(a),b=!$(l),_=(p-g)/(c+1);let y,v,w,M,k=Ot((p-g)/f/u)*u;if(k<1e-14&&!m&&!x)return[{value:g},{value:p}];M=Math.ceil(p/k)-Math.floor(g/k),M>f&&(k=Ot(M*k/f/u)*u),$(r)||(y=Math.pow(10,r),k=Math.ceil(k*y)/y),"ticks"===s?(v=Math.floor(g/k)*k,w=Math.ceil(p/k)*k):(v=g,w=p),m&&x&&n&&Rt((a-o)/n,k/1e3)?(M=Math.round(Math.min((a-o)/k,h)),k=(a-o)/M,v=o,w=a):b?(v=m?o:v,w=x?a:w,M=l-1,k=(w-v)/M):(M=(w-v)/k,M=Lt(M,Math.round(M),k/1e3)?Math.round(M):Math.ceil(M));const S=Math.max(Ft(k),Ft(v));y=Math.pow(10,$(r)?S:r),v=Math.round(v*y)/y,w=Math.round(w*y)/y;let P=0;for(m&&(d&&v!==o?(i.push({value:o}),v0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=X(t)?Math.max(0,t):null,this.max=X(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t,a=(t,e)=>Math.pow(10,Math.floor(Dt(t))+e);i===s&&(i<=0?(n(1),o(10)):(n(a(i,-1)),o(a(s,1)))),i<=0&&n(a(s,-1)),s<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&n(a(i,-1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=function(t,e){const i=Math.floor(Dt(e.max)),s=Math.ceil(e.max/Math.pow(10,i)),n=[];let o=q(t.min,Math.pow(10,Math.floor(Dt(e.min)))),a=Math.floor(Dt(o)),r=Math.floor(o/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{n.push({value:o,major:Jo(o)}),++r,10===r&&(r=1,++a,l=a>=0?1:l),o=Math.round(r*Math.pow(10,a)*l)/l}while(an?{start:e-i,end:e}:{start:e,end:e+i}}function ia(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],n=[],o=t._pointLabels.length,a=t.options.pointLabels,r=a.centerPointLabels?_t/o:0;for(let d=0;de.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function na(t){return 0===t||180===t?"center":t<180?"left":"right"}function oa(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function aa(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function ra(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,yt);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o{const i=J(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?ia(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return Nt(t*(yt/(this._pointLabels.length||1))+It(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if($(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if($(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=s.setContext(t.getPointLabelContext(n)),o=He(e.font),{x:a,y:r,textAlign:l,left:h,top:c,right:d,bottom:u}=t._pointLabelItems[n],{backdropColor:f}=e;if(!$(f)){const t=Ne(e.backdropPadding);i.fillStyle=f,i.fillRect(h-t.left,c-t.top,d-h+t.width,u-c+t.height)}se(i,t._pointLabels[n],a,r+o.lineHeight/2,o,{color:e.color,textAlign:l,textBaseline:"middle"})}}(this,n),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e){a=this.getDistanceFromCenterForValue(t.value);!function(t,e,i,s){const n=t.ctx,o=e.circular,{color:a,lineWidth:r}=e;!o&&!s||!a||!r||i<0||(n.save(),n.strokeStyle=a,n.lineWidth=r,n.setLineDash(e.borderDash),n.lineDashOffset=e.borderDashOffset,n.beginPath(),ra(t,i,o,s),n.closePath(),n.stroke(),n.restore())}(this,s.setContext(this.getContext(e-1)),a,n)}})),i.display){for(t.save(),o=n-1;o>=0;o--){const s=i.setContext(this.getPointLabelContext(o)),{color:n,lineWidth:l}=s;l&&n&&(t.lineWidth=l,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,a=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),r=this.getPointPosition(o,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(r.x,r.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=He(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Ne(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}se(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}la.id="radialLinear",la.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Os.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}},la.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},la.descriptors={angleLines:{_fallback:"grid"}};const ha={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ca=Object.keys(ha);function da(t,e){return t-e}function ua(t,e){if($(e))return null;const i=t._adapter,{parser:s,round:n,isoWeekday:o}=t._parseOpts;let a=e;return"function"==typeof s&&(a=s(a)),X(a)||(a="string"==typeof s?i.parse(a,s):i.parse(a)),null===a?null:(n&&(a="week"!==n||!Tt(o)&&!0!==o?i.startOf(a,n):i.startOf(a,"isoWeek",o)),+a)}function fa(t,e,i,s){const n=ca.length;for(let o=ca.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function pa(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class ma extends Bs{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const i=t.time||(t.time={}),s=this._adapter=new mn._date(t.adapters.date);ot(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:ua(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:a}=this.getUserBounds();function r(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),a||isNaN(t.max)||(n=Math.max(n,t.max))}o&&a||(r(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||r(this.getMinMax(!1))),s=X(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=X(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=he(s,n,this.max);return this._unit=e.unit||(i.autoSkip?fa(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=ca.length-1;o>=ca.indexOf(i);o--){const i=ca[o];if(ha[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return ca[i?ca.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=ca.indexOf(t)+1,i=ca.length;e1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const f="data"===s.ticks.source&&this.getDataTimestamps();for(c=u,d=0;ct-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.time.displayFormats,a=this._unit,r=this._majorUnit,l=a&&o[a],h=r&&o[r],c=i[e],d=r&&h&&c&&c.major,u=this._adapter.format(t,s||(d?h:l)),f=n.ticks.callback;return f?J(f,[u,e,i],this):u}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=re(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=re(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}ma.id="time",ma.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class ba extends ma{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=xa(e,this.min),this._tableRange=xa(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o - Word count: - - -   - - Character count: - -`; - -class WordCountWidget extends api.NoteContextAwareWidget { - get position() { return 100; } // higher value means position towards the bottom/right - - get parentWidget() { return 'center-pane'; } - - isEnabled() { - return super.isEnabled() - && this.note.type === 'text' - && this.note.hasLabel('wordCount'); - } - - doRender() { - this.$widget = $(TPL); - this.$wordCount = this.$widget.find('.word-count'); - this.$characterCount = this.$widget.find('.character-count'); - return this.$widget; - } - - async refreshWithNote(note) { - const {content} = await note.getNoteComplement(); - - const text = $(content).text(); // get plain text only - - const counts = this.getCounts(text); - - this.$wordCount.text(counts.words); - this.$characterCount.text(counts.characters); - } - - getCounts(text) { - const chunks = text - .split(/[\s-+:,/\\]+/) - .filter(chunk => chunk !== ''); - - let words; - - if (chunks.length === 1 && chunks[0] === '') { - words = 0; - } - else { - words = chunks.length; - } - - const characters = chunks.join('').length; - - return {words, characters}; - } - - async entitiesReloadedEvent({loadResults}) { - if (loadResults.isNoteContentReloaded(this.noteId)) { - this.refresh(); - } - } -} - -module.exports = new WordCountWidget(); \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Steel Blue.css b/demo/Demo/Trilium Demo/Steel Blue.css deleted file mode 100644 index 56f3dec40..000000000 --- a/demo/Demo/Trilium Demo/Steel Blue.css +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This is a demo of how you can create custom theme for Trilium. You can activate it by going - * into options (top-right corner) in first tab "Appearance". - * - * You can read some details on theming here: http://github.com/zadam/trilium/wiki/Themes - */ - -@font-face { /* This will be used as main UI font (see below) */ - font-family: 'Raleway'; - font-style: normal; - font-weight: 400; - src: url('../../../custom/fonts/raleway.woff2') format('woff2'); -} - -@font-face { /* This will be used as text content font (see below) */ - font-family: 'Garamond'; - font-style: normal; - font-weight: 400; - src: url('../../../custom/fonts/garamond.woff2') format('woff2'); -} - -:root { - --theme-style: light; - - --main-font-family: 'Raleway'; - --main-font-size: normal; - - --tree-font-family: 'Raleway'; - --tree-font-size: normal; - - --detail-font-family: 'Raleway'; - --detail-font-size: normal; - - --monospace-font-family: 'Monospace'; - --monospace-font-size: normal; - - --main-background-color: #404552; - --main-text-color: #AFB8C6; - --main-border-color: #AFB8C6; - - --accented-background-color: #383C4A; - --more-accented-background-color: #2F343F; - - --button-text-color: #AFB8C6; - --button-background-color: #2F343F; - --button-disabled-text-color: #86919F; - --button-disabled-background-color: #404552; - --button-border-color: #333; - --button-border-radius: 2px; - - --primary-button-background-color: #6c757d; - --primary-button-text-color: white; - --primary-button-border-color: #6c757d; - - --muted-text-color: #86919F; - - --input-text-color: #AFB8C6; - --input-background-color: #404552; - - --hover-item-text-color: white; - --hover-item-background-color: #4877B1; - - --active-item-text-color: white; - --active-item-background-color: #4877B1; - - --menu-text-color: #AFB8C6; - --menu-background-color: #383C4A; - - --modal-background-color: #404552; - --modal-backdrop-color: black; - - --left-pane-background-color: #2F343F; - --left-pane-text-color: #AFB8C6; - - --launcher-pane-background-color: #2F343F; - --launcher-pane-text-color: #AFB8C6; - - --active-tab-background-color: #2F343F; - --active-tab-text-color: #AFB8C6; - - --inactive-tab-background-color: #404552; - --inactive-tab-text-color: #AFB8C6; - - --scrollbar-border-color: rgba(175, 184, 198, 0.5); - --tooltip-background-color: #383C4A; - --link-color: lightskyblue; - - --mermaid-theme: forest; -} - -body .global-menu-button { - background-image: url("../../../assets/vX/images/icon-grey.png"); -} - -body .note-detail-editable-text, body .note-detail-readonly-text { - font-size: 120%; /* Garamond is subjectively smaller */ -} - -body .CodeMirror { - filter: invert(100%) hue-rotate(180deg); -} \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 b/demo/Demo/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 deleted file mode 100644 index c36dcecbb..000000000 Binary files a/demo/Demo/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 b/demo/Demo/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 deleted file mode 100644 index eba29a9ab..000000000 Binary files a/demo/Demo/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 and /dev/null differ diff --git a/demo/Demo/Trilium Demo/Tech.html b/demo/Demo/Trilium Demo/Tech.html deleted file mode 100644 index eea7adce3..000000000 --- a/demo/Demo/Trilium Demo/Tech.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Tech - - - -
-

Tech

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Expand note on the left pane to see content.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting.html b/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting.html deleted file mode 100644 index b107eb150..000000000 --- a/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Bash scripting - - - -
-

Bash scripting

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bash is a Unix shell and - command languagewritten by Brian Fox for - the GNU Project as - a free software replacement - for the Bourne shell. - First released in 1989, it has been distributed widely as the default - loginshell for most Linux distributions - and Apple's macOS (formerly - OS X). A version is also available for Windows 10.

-

Bash on Wikipedia - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html b/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html deleted file mode 100644 index 9ebd0a572..000000000 --- a/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - Bash startup modes - - - -
-

Bash startup modes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Login shell

- -

As a "login shell", Bash reads and sets (executes) the user's profile - from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile - (in that order, using the first one that's readable!).

-

When a login shell exits, Bash reads and executes commands from the file - ~/.bash_logout, if it exists.

-

Why an extra login shell mode? There are many actions and variable sets - that only make sense for the initial user login. That's why all UNIX® shells - have (should have) a "login" mode.

-

Methods to start Bash as a login shell: - -

-
    -
  • the first character of argv[0] is - (a hyphen): traditional UNIX® shells - start from the login binary
  • -
  • Bash is started with the -l option
  • -
  • Bash is started with the --login option
  • -
-

Methods to test for login shell mode: - -

- -

Related switches: - -

-
    -
  • --noprofile disables reading of all profile files
  • -
- -

Interactive shell

- -

When Bash starts as an interactive non-login shell, it reads and executes - commands from ~/.bashrc. This file should contain, for example, aliases, - since they need to be defined in every shell as they're not inherited from - the parent shell.

-

The feature to have a system-wide /etc/bash.bashrc or a similar system-wide - rc-file is specific to vendors and distributors that ship their own, patched variant of Bash. - The classic way to have a system-wide rc file is to source /etc/bashrc - from every user's ~/.bashrc.

-

Methods to test for interactive-shell mode: - -

-
    -
  • the special parameter $- contains the letter i (lowercase I)
  • -
-

Related switches: - -

-
    -
  • -i forces the interactive mode
  • -
  • --norc disables reading of the startup files (e.g. /etc/bash.bashrc if - supported) and ~/.bashrc
  • -
  • --rcfile defines another startup file (instead of /etc/bash.bashrc and - ~/.bashrc)
  • -
- -

SH mode

- -

When Bash starts in SH compatiblity mode, it tries to mimic the startup - behaviour of historical versions of sh as closely as possible, while conforming - to the POSIX® standard as well. The profile files read are /etc/profile - and ~/.profile, if it's a login shell.

-

If it's not a login shell, the environment variable ENV is - evaluated and the resulting filename is used as the name of the startup - file.

-

After the startup files are read, Bash enters the POSIX(r) compatiblity mode (for running, not for starting!).

-

Bash starts in sh compatiblity mode when: - -

-
    -
  • the base filename in argv[0] is sh ( -
    - -
     NB: /bin/sh may be linked to /bin/bash, but that doesn't mean it acts - like /bin/bash  -
    - -
    )
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting/While loop.html b/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting/While loop.html deleted file mode 100644 index 13e13cfeb..000000000 --- a/demo/Demo/Trilium Demo/Tech/Linux/Bash scripting/While loop.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - While loop - - - -
-

While loop

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Documentation: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html - -

#!/bin/bash
-# This script opens 4 terminal windows.
-
-i="0"
-while [ $i -lt 4 ]
-do
-    xterm &
-
-    i=$[$i+1]
-done
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Linux/History.html b/demo/Demo/Trilium Demo/Tech/Linux/History.html deleted file mode 100644 index a11976ba5..000000000 --- a/demo/Demo/Trilium Demo/Tech/Linux/History.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - History - - - -
-

History

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

The history of Linux began in 1991 with the commencement - of a personal project by Finnish student - Linus Torvaldsto create a new free operating system kernel. Since - then, the resulting Linux kernel has - been marked by constant growth throughout its history. Since the initial - release of its source code in - 1991, it has grown from a small number of C files - under a license prohibiting commercial distribution to the 4.2.3 version - in 2015 with more than 18 million lines of source code under the GNU General Public License v2.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Linux/Ubuntu.html b/demo/Demo/Trilium Demo/Tech/Linux/Ubuntu.html deleted file mode 100644 index 1b8713e04..000000000 --- a/demo/Demo/Trilium Demo/Tech/Linux/Ubuntu.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Ubuntu - - - -
-

Ubuntu

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Expand note on the left pane to see content.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html b/demo/Demo/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html deleted file mode 100644 index b53ed1f1d..000000000 --- a/demo/Demo/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - Unity shortcuts - - - -
-

Unity shortcuts

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
    -
  • Hold Super - Invoke the Launcher and display the shortcuts
  • -
  • Hold Super, then press 1 or 2 or 3 and so on until 0 to open or focus - an application. The number corresponds to the location of the icon on the - launcher from top to bottom. -
      -
    • Adding Shift will open a new instance of the application if it's already - open.
    • -
    • Holding the key is also useful when you want to get to the Launcher but - do not want to invoke the Dash.
    • -
    -
  • -
  • Super + T - Open the rubbish bin/trash can.
  • -
  • Alt + F1 - Put keyboard focus on the Launcher, use arrow keys to navigate, - Enter launches an application, Right arrow exposes the quicklists if an - application has them.
  • -
  • Ctrl + Alt + T - Launch a terminal window.
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Programming/Bash scripting.clone.html b/demo/Demo/Trilium Demo/Tech/Programming/Bash scripting.clone.html deleted file mode 100644 index e82fc6a4b..000000000 --- a/demo/Demo/Trilium Demo/Tech/Programming/Bash scripting.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Bash scripting - - - -
-

Bash scripting

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Programming/Java.html b/demo/Demo/Trilium Demo/Tech/Programming/Java.html deleted file mode 100644 index b78260f48..000000000 --- a/demo/Demo/Trilium Demo/Tech/Programming/Java.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Java - - - -
-

Java

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/Security/Trusted timestamping.clone.html b/demo/Demo/Trilium Demo/Tech/Security/Trusted timestamping.clone.html deleted file mode 100644 index 960727f12..000000000 --- a/demo/Demo/Trilium Demo/Tech/Security/Trusted timestamping.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Trusted timestamping - - - -
-

Trusted timestamping

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/node.js/Intro.html b/demo/Demo/Trilium Demo/Tech/node.js/Intro.html deleted file mode 100644 index d2b8fb9cf..000000000 --- a/demo/Demo/Trilium Demo/Tech/node.js/Intro.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Intro - - - -
-

Intro

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js is an open-source, - cross-platform, JavaScript - runtime environmentthat executes JavaScript code outside of a browser. - Node.js lets developers use JavaScript to write command line tools and - for server-side scripting—running - scripts server-side to produce dynamic web page content - before the page is sent to the user's web browser. 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/node.js/Overview.html b/demo/Demo/Trilium Demo/Tech/node.js/Overview.html deleted file mode 100644 index 561617e9f..000000000 --- a/demo/Demo/Trilium Demo/Tech/node.js/Overview.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - Overview - - - -
-

Overview

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js allows the creation of Web servers and - networking tools using JavaScript and - a collection of "modules" that handle various core functionalities.[28] - - [31][44] - - [45][46] Modules - are provided for file system I/O, - networking (DNS, - HTTP, TCP, - TLS/SSL, or UDP), - binarydata (buffers), cryptography functions, - data streams, and other core functions.[31] - - [45][47] Node.js's - modules use an API designed to reduce the complexity of writing server - applications.[31] - - [45] -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/node.js/Overview/History.html b/demo/Demo/Trilium Demo/Tech/node.js/Overview/History.html deleted file mode 100644 index e1cb2c12b..000000000 --- a/demo/Demo/Trilium Demo/Tech/node.js/Overview/History.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - History - - - -
-

History

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js was written initially by Ryan Dahl in - 2009,[24] about - thirteen years after the introduction of the first server-side JavaScript - environment, Netscape's LiveWire Pro Web.[25] The - initial release supported only Linux and Mac OS X. Its development and - maintenance was led by Dahl and later sponsored by Joyent. - [26] -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/node.js/Overview/Industry support.html b/demo/Demo/Trilium Demo/Tech/node.js/Overview/Industry support.html deleted file mode 100644 index 59972b571..000000000 --- a/demo/Demo/Trilium Demo/Tech/node.js/Overview/Industry support.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - Industry support - - - -
-

Industry support

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

There are thousands of open-source libraries for Node.js, most of them - hosted on the npm website. - The Node.js developer community has two main mailing lists and the IRC channel - #node.js on freenode

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/node.js/Overview/Platform architecture.html b/demo/Demo/Trilium Demo/Tech/node.js/Overview/Platform architecture.html deleted file mode 100644 index 80a7d6aea..000000000 --- a/demo/Demo/Trilium Demo/Tech/node.js/Overview/Platform architecture.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Platform architecture - - - -
-

Platform architecture

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js brings event-driven programming to - web servers, enabling development of fast web servers in JavaScript. - [31]Developers can create scalable servers without using threading, - by using a simplified model of event-driven programming that - uses callbacks to signal the completion of a task.[31] - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Tech/node.js/Releases.html b/demo/Demo/Trilium Demo/Tech/node.js/Releases.html deleted file mode 100644 index 897f917af..000000000 --- a/demo/Demo/Trilium Demo/Tech/node.js/Releases.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - Releases - - - -
-

Releases

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

New major releases of Node.js are cut from the GitHub master - branch every six months. Even-numbered versions are cut in April and odd-numbered - versions are cut in October. When a new odd version is released, the previous - even version undergoes transition to Long Term Support (LTS), which gives - that version 18 months of active support from the date it is designated - LTS.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Work/HR.html b/demo/Demo/Trilium Demo/Work/HR.html deleted file mode 100644 index ca9357d1b..000000000 --- a/demo/Demo/Trilium Demo/Work/HR.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - HR - - - -
-

HR

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

HR stuff 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Work/Processes.html b/demo/Demo/Trilium Demo/Work/Processes.html deleted file mode 100644 index 45ccc9567..000000000 --- a/demo/Demo/Trilium Demo/Work/Processes.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Processes - - - -
-

Processes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

bla bla ...

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo/Work/Projects.html b/demo/Demo/Trilium Demo/Work/Projects.html deleted file mode 100644 index 4fb5c2480..000000000 --- a/demo/Demo/Trilium Demo/Work/Projects.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Projects - - - -
-

Projects

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Here I'd keep various notes related to my work's projects etc.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Demo/Trilium Demo_trilium-icon.png b/demo/Demo/Trilium Demo_trilium-icon.png deleted file mode 100644 index 8208b2ced..000000000 Binary files a/demo/Demo/Trilium Demo_trilium-icon.png and /dev/null differ diff --git a/demo/Home/Journal.dat b/demo/Home/Journal.dat deleted file mode 100644 index e69de29bb..000000000 diff --git a/demo/Home/Trilium Demo.html b/demo/Home/Trilium Demo.html deleted file mode 100644 index 0c48e9cd1..000000000 --- a/demo/Home/Trilium Demo.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - Trilium Demo - - - -
-

Trilium Demo

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-

Welcome to TriliumNext Notes! - -

-

This is initial "demo" document provided by TriliumNext by default to - showcase some of its features and also give you some ideas how you might - structure your notes. You can play with it, modify note content and tree - structure as you wish.

-

If you need any help, visit TriliumNext website: https://github.com/TriliumNext - -

-

Cleanup

- -

Once you're finished with experimenting and want to cleanup these pages, - you can simply delete them all.

-
 
-

Formatting

- -

TriliumNext supports classic formatting like italic, bold, bold and italic. - Of course you can add links like this one pointing to google.com - -

-

Lists

-

Ordered: - -

-
    -
  1. First Item
  2. -
  3. Second item -
      -
    1. First sub-item -
        -
      1. sub-sub-item
      2. -
      -
    2. -
    -
  4. -
-

Unordered: - -

-
    -
  • Item
  • -
  • Another item -
      -
    • Sub-item
    • -
    -
  • -
-

Block quotes

-
-

Whereof one cannot speak, thereof one must be silent”

-

– Ludwig Wittgenstein

-
-

Checkout also other examples like tables, - checkbox lists, highlighting, - code blocksand math examples.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Books/Book template.html b/demo/Home/Trilium Demo/Books/Book template.html deleted file mode 100644 index cd58564dc..000000000 --- a/demo/Home/Trilium Demo/Books/Book template.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - Book template - - - -
-

Book template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -

Main characters

- -

… here put main characters …

-

 

-

Plot

- -

… describe main plot lines …

-

 

-

Tone

- -

 

-

Genre

- -

scifi / drama / romance

-

 

-

Similar books

- -
    -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Books/Book template/Highlights.html b/demo/Home/Trilium Demo/Books/Book template/Highlights.html deleted file mode 100644 index 218d8e961..000000000 --- a/demo/Home/Trilium Demo/Books/Book template/Highlights.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - Highlights - - - -
-

Highlights

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

highlght 1

-
-

my comment

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Books/Reviews/The Mechanical.clone.html b/demo/Home/Trilium Demo/Books/Reviews/The Mechanical.clone.html deleted file mode 100644 index cbaf13765..000000000 --- a/demo/Home/Trilium Demo/Books/Reviews/The Mechanical.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - The Mechanical - - - -
-

The Mechanical

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Books/To read.html b/demo/Home/Trilium Demo/Books/To read.html deleted file mode 100644 index 434cfbe5c..000000000 --- a/demo/Home/Trilium Demo/Books/To read.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - To read - - - -
-

To read

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Checkout Kindle daily deals: https://www.amazon.com/gp/feature.html?docId=1000677541 - -

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Canvas note.json b/demo/Home/Trilium Demo/Canvas note.json deleted file mode 100644 index 0f334778c..000000000 --- a/demo/Home/Trilium Demo/Canvas note.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"excalidraw","version":2,"elements":[{"type":"rectangle","version":234,"versionNonce":2115983107,"isDeleted":false,"id":"Nx_6ACJaaueNh0fTsVZeh","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":14.66796875,"y":8.13671875,"strokeColor":"#000000","backgroundColor":"#fa5252","width":247,"height":138,"seed":679323330,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1701078794806,"link":null},{"type":"arrow","version":142,"versionNonce":265248388,"isDeleted":false,"id":"2bmK1AKg9yVMP6CO_U6Ke","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":216,"y":67,"strokeColor":"#000000","backgroundColor":"#fa5252","width":289,"height":46,"seed":1265574494,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[289,46]]},{"type":"ellipse","version":162,"versionNonce":507427772,"isDeleted":false,"id":"TOmE_26Ye9b_m_TKfWU45","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":441,"y":31,"strokeColor":"#000000","backgroundColor":"#228be6","width":203,"height":191,"seed":77588894,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"text","version":206,"versionNonce":1401811460,"isDeleted":false,"id":"K5CjVJa8vYzQ8LDOdH-av","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":319.5,"y":20,"strokeColor":"#000000","backgroundColor":"#228be6","width":71.75,"height":null,"seed":317664926,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":1,"text":"convert","baseline":18,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"convert"},{"type":"diamond","version":139,"versionNonce":2062017596,"isDeleted":false,"id":"rZ0DKhdiE-mys9orY2M7Y","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":335,"y":67,"strokeColor":"#000000","backgroundColor":"#228be6","width":31,"height":37,"seed":401619102,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"line","version":202,"versionNonce":1931775364,"isDeleted":false,"id":"gWzx0Ka27J2gQYsjliI5u","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":1,"opacity":100,"angle":0,"x":147,"y":142,"strokeColor":"#000000","backgroundColor":"#228be6","width":124,"height":113,"seed":668475458,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[124,113]]},{"type":"rectangle","version":182,"versionNonce":693632188,"isDeleted":false,"id":"vPXlTlCV6XiWRo8z596tY","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0,"x":269,"y":240,"strokeColor":"#2b8a3e","backgroundColor":"#e6ffc8","width":144,"height":115,"seed":1313295006,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"text","version":316,"versionNonce":1778720828,"isDeleted":false,"id":"NlWoiu7QFiUGoGhxxFDQz","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":290,"y":247,"strokeColor":"#2b8a3e","backgroundColor":"#228be6","width":53.36666488647461,"height":null,"seed":146698370,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":1,"text":"List :\n- one\n- two","baseline":70,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"List :\n- one\n- two"},{"type":"diamond","version":220,"versionNonce":858850620,"isDeleted":false,"id":"4tqMpG7kcfLvu81ba12UQ","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.899784582143685,"x":283.37319488867206,"y":123.6942301852414,"strokeColor":"#000000","backgroundColor":"#fa5252","width":104.0405522208337,"height":74.00000000000001,"seed":1677737711,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"rectangle","version":277,"versionNonce":406453380,"isDeleted":false,"id":"79D3L3LhxNNySkbKD3Bia","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.42451911970089906,"x":479.7715111234793,"y":259.96655309088374,"strokeColor":"#000000","backgroundColor":"#fa5252","width":128.50676566765082,"height":63,"seed":1447260752,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"diamond","version":362,"versionNonce":500497852,"isDeleted":false,"id":"ffrisBNjK3DyL4MRqDVUM","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.3893167218331426,"x":21.865547135620886,"y":174.8538070033551,"strokeColor":"#000000","backgroundColor":"#15aabf","width":87.26890572875811,"height":46.29238599328972,"seed":63592112,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"rectangle","version":518,"versionNonce":340773892,"isDeleted":false,"id":"wxvV5tzdo2p3m4nBQf_fI","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.997855886997452,"x":90.74789364500919,"y":293.3561760950281,"strokeColor":"#000000","backgroundColor":"#fab005","width":123.50421270998135,"height":35.287647809943806,"seed":1439819952,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"line","version":166,"versionNonce":1610279598,"isDeleted":false,"id":"i2pQf0tOL1I7RZA6fHNXy","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0.3264344116289468,"x":129,"y":177,"strokeColor":"#a61e4d","backgroundColor":"#fab005","width":71,"height":80,"seed":969735782,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[2,16],[12,40],[20,51],[36,64],[71,80]]},{"type":"line","version":175,"versionNonce":1006611332,"isDeleted":false,"id":"zTcY1DmmmEqtM7iaFOjI2","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":24,"y":282,"strokeColor":"#087f5b","backgroundColor":"#fab005","width":81,"height":33,"seed":1314441594,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[6,-22],[12,-29],[21,-30],[24,-29],[33,-17],[36,1],[37,2],[45,-29],[48,-29],[53,-31],[58,-31],[72,-23],[81,-8],[81,-4]]},{"type":"rectangle","version":467,"versionNonce":1170587324,"isDeleted":false,"id":"UqrOMUkW8i5NCxQf_EDc9","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.11809202841909539,"x":190.3330910264575,"y":373.66279952417335,"strokeColor":"#000000","backgroundColor":"#be4bdb","width":90.33381794708485,"height":87.67440095165314,"seed":1466118630,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"diamond","version":459,"versionNonce":830970628,"isDeleted":false,"id":"06wK4k0VHVo3nl3maFgBt","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.137516099543635,"x":353.41738815890335,"y":394.61371445798545,"strokeColor":"#000000","backgroundColor":"#4c6ef5","width":80.89200154670186,"height":77.42001777890613,"seed":1789348282,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"text","version":194,"versionNonce":2089357700,"isDeleted":false,"id":"FExeJRXagFlMKEpW4ApvL","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":5.9094584872140326,"x":35.78896794074159,"y":386.2393022458574,"strokeColor":"#d9480f","backgroundColor":"#4c6ef5","width":106.3499984741211,"height":null,"seed":152285754,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":2,"text":"Rotated text","baseline":23,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Rotated text"},{"type":"arrow","version":363,"versionNonce":526752388,"isDeleted":false,"id":"n7nmJZmGCpL1a6l1TdMeX","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":520.1576551164967,"y":338.6957163378038,"strokeColor":"#000000","backgroundColor":"#fa5252","width":78.65765511649664,"height":75.30428366219626,"seed":925954106,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-78.65765511649664,75.30428366219626]]},{"type":"text","version":184,"versionNonce":963492028,"isDeleted":false,"id":"lU3Msnm2CTXBHi8Pzef0C","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0,"x":509.5,"y":392,"strokeColor":"#000000","backgroundColor":"#4c6ef5","width":128.88333129882812,"height":null,"seed":1839996922,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828826,"link":null,"fontSize":20,"fontFamily":3,"text":"> some code","baseline":20,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"> some code"},{"type":"text","version":510,"versionNonce":670318852,"isDeleted":false,"id":"CdlqC6FutWnAhFgUa4-tK","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":34.326958955223915,"y":31.00810810810811,"strokeColor":"#c92a2a","backgroundColor":"#228be6","width":165.3333282470703,"height":null,"seed":168503609,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828827,"link":null,"fontSize":39.25486991656494,"fontFamily":1,"text":"Big text","baseline":35,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Big text"},{"type":"ellipse","version":305,"versionNonce":1795300462,"isDeleted":false,"id":"lQb2o3G3uO-OSzJlv7dQf","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.987365538640589,"x":483.5,"y":118.5,"strokeColor":"#000000","backgroundColor":"#7950f2","width":133.00000000000003,"height":58.00000000000001,"seed":617054574,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null}],"files":{},"appState":{"scrollX":255.921875,"scrollY":295.91526179206426,"zoom":{"value":1}}} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Canvas note_canvas-export.svg b/demo/Home/Trilium Demo/Canvas note_canvas-export.svg deleted file mode 100644 index f5bb7a3e6..000000000 --- a/demo/Home/Trilium Demo/Canvas note_canvas-export.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - convertList :- one- twoRotated text> some codeBig text \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Formatting examples/Checkbox lists.html b/demo/Home/Trilium Demo/Formatting examples/Checkbox lists.html deleted file mode 100644 index ca94770f9..000000000 --- a/demo/Home/Trilium Demo/Formatting examples/Checkbox lists.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - Checkbox lists - - - -
-

Checkbox lists

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Create easy TODO-lists with checkboxes:

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Formatting examples/Code blocks.html b/demo/Home/Trilium Demo/Formatting examples/Code blocks.html deleted file mode 100644 index 5b937e3ca..000000000 --- a/demo/Home/Trilium Demo/Formatting examples/Code blocks.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - Code blocks - - - -
-

Code blocks

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Code blocks are useful to add short snippets of code blocks inside text - notes. Depending on your preference, it's possible to enable or disable - word wrapping for these code blocks.

-

We added syntax highlighting to code blocks as well. When a code block - is first created it will try to automatically determine the programming - language, should that fail it is possible to manually adjust it. The color - scheme for the syntax highlighting is adjustable in settings. 

function helloWorld() {
-	alert("Hello world");
-}
- -

For larger pieces of code it is better to use a code note, which uses - a fully-fledged code editor (CodeMirror). For an example of a code note, - see Custom request handler.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Formatting examples/Highlighting.html b/demo/Home/Trilium Demo/Formatting examples/Highlighting.html deleted file mode 100644 index 56fb66b18..000000000 --- a/demo/Home/Trilium Demo/Formatting examples/Highlighting.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - Highlighting - - - -
-

Highlighting

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Space Shuttle Discovery (Orbiter Vehicle - Designation: OV-103) is one of the orbiters from NASA's Space - Shuttle program and the third of five fully operational orbiters to be - built. Its first mission, STS-41-D, flew from August 30 to September 5, - 1984. Over 27 years of service it launched and landed 39 times, - gathering more spaceflights than any other spacecraft to date. The shuttle - has three main components: the Space Shuttle orbiter, a central fuel tank, - and two rocket boosters. Nearly 25,000 heat resistant tiles cover - the orbiter to protect it from high temperatures on re-entry.

-

Discovery became the third operational orbiter to enter service, preceded - by Columbia and Challenger. It embarked on its last mission, STS-133, on February 24, 2011 and - touched down for the final time at Kennedy Space Center on March 9, having - spent a cumulative total of almost a full year in space. Discovery performed - both research and International Space Station (ISS) assembly missions, - and also carried the Hubble Space Telescope into orbit.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Formatting examples/Math.html b/demo/Home/Trilium Demo/Formatting examples/Math.html deleted file mode 100644 index 22e45aba0..000000000 --- a/demo/Home/Trilium Demo/Formatting examples/Math.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - Math - - - -
-

Math

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty     \f\hat\xi\,e^{2 \pi i \xi x}     \,d\xi\)Some - math examples:

\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\] - -

Another:

\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\] - -

Inline math is also possible: \(c^2 = a^2 + b^2\) Neat!

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Formatting examples/School schedule.html b/demo/Home/Trilium Demo/Formatting examples/School schedule.html deleted file mode 100644 index 5d74ee1a9..000000000 --- a/demo/Home/Trilium Demo/Formatting examples/School schedule.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - School schedule - - - -
-

School schedule

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 MondayTuesdayWednesdayThursdayFriday
9:00-10:30P.E. MathComputer Science 
11:00-12:30HistoryEnglish PhysicsMath
13:00-14:30 Computer ScienceChemistryPhysics LabGeography
15:00-16:30Computer Science Latin  
-
School schedule
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Inbox.html b/demo/Home/Trilium Demo/Inbox.html deleted file mode 100644 index 45f52e349..000000000 --- a/demo/Home/Trilium Demo/Inbox.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - Inbox - - - -
-

Inbox

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This is a place I use to put notes waiting for better categorization

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Inbox/Book to read.html b/demo/Home/Trilium Demo/Inbox/Book to read.html deleted file mode 100644 index 5559556ba..000000000 --- a/demo/Home/Trilium Demo/Inbox/Book to read.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - Book to read - - - -
-

Book to read

- -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Inbox/Grocery list for today.html b/demo/Home/Trilium Demo/Inbox/Grocery list for today.html deleted file mode 100644 index edd3edc84..000000000 --- a/demo/Home/Trilium Demo/Inbox/Grocery list for today.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Grocery list for today - - - -
-

Grocery list for today

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
    -
  • cucumber
  • -
  • cheese
  • -
  • beer
  • -
-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Inbox/The Last Question.html b/demo/Home/Trilium Demo/Inbox/The Last Question.html deleted file mode 100644 index 797324e94..000000000 --- a/demo/Home/Trilium Demo/Inbox/The Last Question.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - The Last Question - - - -
-

The Last Question

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

"The Last Question" is a science fiction - short storyby American writer Isaac Asimov. - It first appeared in the November 1956 issue of Science Fiction Quarterly.

-
 
-

This page demonstrates two things:

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf b/demo/Home/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf deleted file mode 100644 index 717a69943..000000000 Binary files a/demo/Home/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal.html b/demo/Home/Trilium Demo/Journal.html deleted file mode 100644 index 49937f581..000000000 --- a/demo/Home/Trilium Demo/Journal.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - Journal - - - -
-

Journal

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

You can read some explanation on how this journal works here: https://github.com/zadam/trilium/wiki/Day-notes - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html b/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html deleted file mode 100644 index cb5950eec..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 28 - Tuesday - - - -
-

28 - Tuesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html b/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html deleted file mode 100644 index 9977fb825..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - Christmas gift ideas - - - -
-

Christmas gift ideas

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html b/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html deleted file mode 100644 index 8e2b6474e..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Phone call about work project - - - -
-

Phone call about work project

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bla bla bla ....

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html b/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html deleted file mode 100644 index 2ef38610e..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - Trusted timestamping - - - -
-

Trusted timestamping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Wiki: https://en.wikipedia.org/wiki/Trusted_timestamping - -

-

Bozho: https://techblog.bozho.net/using-trusted-timestamping-java/ - -

-

Trusted timestamping is the process of securely keeping - track of the creation and modification time of a document. Security here - means that no one—not even the owner of the document—should be able to - change it once it has been recorded provided that the timestamper's integrity - is never compromised.

-

The administrative aspect involves setting up a publicly available, trusted - timestamp management infrastructure to collect, process and renew timestamps.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday.html deleted file mode 100644 index e2fe00a77..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - 18 - Monday - - - -
-

18 - Monday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Miscellaneous notes done on monday ...

-

 

-

Interesting video: https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be - -

-

 

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html deleted file mode 100644 index 8c45fccef..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Meeting minutes - - - -
-

Meeting minutes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

bla bla bla ...

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg deleted file mode 100644 index 526922538..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg deleted file mode 100644 index a6bd590e4..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg deleted file mode 100644 index 8d6ee7003..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg deleted file mode 100644 index 65dcff9f0..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg deleted file mode 100644 index 56dad904f..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg deleted file mode 100644 index afae674d8..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg deleted file mode 100644 index 1a4177f45..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg deleted file mode 100644 index eaa57bfbf..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg deleted file mode 100644 index 3266325f2..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg deleted file mode 100644 index 0ecdcc360..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg deleted file mode 100644 index 24fb1fc9e..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg deleted file mode 100644 index ccded29c7..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html deleted file mode 100644 index 571f970b4..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html deleted file mode 100644 index e7bc46a10..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 19 - Tuesday - - - -
-

19 - Tuesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html deleted file mode 100644 index 92313fb01..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Dentist appointment - - - -
-

Dentist appointment

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html deleted file mode 100644 index fa12db818..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 20 - Wednesday - - - -
-

20 - Wednesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html deleted file mode 100644 index cce4a0a08..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 21 - Thursday - - - -
-

21 - Thursday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html deleted file mode 100644 index 991793ca1..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Christmas shopping - - - -
-

Christmas shopping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bought a book!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html deleted file mode 100644 index a549dd1b7..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Office party - - - -
-

Office party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
That was fun!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday.html deleted file mode 100644 index 81c156bcd..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 22 - Friday - - - -
-

22 - Friday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html deleted file mode 100644 index 9cbaa9f79..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Christmas shopping - - - -
-

Christmas shopping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html deleted file mode 100644 index 2032f5774..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - The Mechanical - - - -
-

The Mechanical

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

I enjoyed this book a lot. It's slow moving at times with the author taking - his time with conversations and descriptions of them. The premise is very - interesting, but I'm sad that it wasn't elaborated more deeply - e.g. the - history and development of the clakker technology with Huygens and how - Spinoza comes into the picture. Maybe the author saves it for the next - two parts of the book.

-

Language can be intimidating at first for non-native english speakers - - author uses wide range of vocabulary. Fortunately it gets better after - a while as reader adjusts.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html deleted file mode 100644 index 7bb91a352..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - Highlights - - - -
-

Highlights

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Like a raindrop rolling down dry valleys to the sea, his body sensed the - contours of agony and helplessly followed their gradient. Impelled by alchemical - compulsion rather than gravity, Jax became an unstoppable boulder careering - along gullies of human whim.

-
-
-

Free Will was a vacuum, a negative space. It was the absence of coercion, - the absence of compulsion, the absence of agony.

-
-
-

Overwhelming: he could do anything he wanted. But the grand sum of anything-at-all - was nothing-at-all. The topology of freedom offered no gradients to nudge - him, no landmarks to guide him. How did humans guide themselves? How did - they know what to do and what not to do? How did they know when to do anything - without the benefit of geasa and metageasa to prioritize every single action - of their waking lives? How did they order their daily existence without - somebody to tell them what to do?

-
-
-

Life as a slave was unspeakable; life as a slave who had briefly tasted - freedom was unthinkable. Clakkers carried complex geasa by dint of alchemy; - humans carried heavy obligations, too, but called them culture. Society.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html deleted file mode 100644 index 66dd0b9c2..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 23 - Saturday - - - -
-

23 - Saturday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html deleted file mode 100644 index dda2c7add..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 24 - Sunday - Christmas Eve! - - - -
-

24 - Sunday - Christmas Eve!

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg b/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg deleted file mode 100644 index f0135ec7b..000000000 Binary files a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html deleted file mode 100644 index d704167ed..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - Buy a board game for Alice - - - -
-

Buy a board game for Alice

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html deleted file mode 100644 index 94e4e1d46..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html b/demo/Home/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html deleted file mode 100644 index fc853d9d5..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - 30 - Thursday - - - -
-

30 - Thursday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/Epics.html b/demo/Home/Trilium Demo/Journal/2021/Epics.html deleted file mode 100644 index 44f79f80c..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/Epics.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - Epics - - - -
-

Epics

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Epic is kind of medium-term events or projects spread over days or months.

-

Remember that Trilium is all free form so you can organise your stuff - in whatever way you'd like.

-

 

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas.html b/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas.html deleted file mode 100644 index 7042201a8..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Christmas - - - -
-

Christmas

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This christmas is going to be awesome!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html b/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html deleted file mode 100644 index aa9ab1ceb..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Christmas dinner - - - -
-

Christmas dinner

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Carp of course!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html b/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html deleted file mode 100644 index 044fe3e8f..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Christmas gift ideas - - - -
-

Christmas gift ideas

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html b/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html deleted file mode 100644 index 28951bbbb..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - Vacation days - - - -
-

Vacation days

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

25. 12., 26. 12., 1. 1. - statutory holidays

-

27. 12. - 29. 12., 2. 1. - vacation days

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/2021/Epics/Vacation.html b/demo/Home/Trilium Demo/Journal/2021/Epics/Vacation.html deleted file mode 100644 index fa844380a..000000000 --- a/demo/Home/Trilium Demo/Journal/2021/Epics/Vacation.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Vacation - - - -
-

Vacation

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Planning stuff etc.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Journal/Day template.html b/demo/Home/Trilium Demo/Journal/Day template.html deleted file mode 100644 index 7cc21b853..000000000 --- a/demo/Home/Trilium Demo/Journal/Day template.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - Day template - - - -
-

Day template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Bar chart.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Bar chart.txt deleted file mode 100644 index b13f7ee52..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Bar chart.txt +++ /dev/null @@ -1,15 +0,0 @@ -gantt - title Git Issues - days since last update - dateFormat X - axisFormat %s - - section Issue19062 - 71 : 0, 71 - section Issue19401 - 36 : 0, 36 - section Issue193 - 34 : 0, 34 - section Issue7441 - 9 : 0, 9 - section Issue1300 - 5 : 0, 5 \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg deleted file mode 100644 index 97489f06b..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -051015202530354045505560657071 36 34 9 5 Issue19062Issue19401Issue193Issue7441Issue1300Git Issues - days since last update \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/C4.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/C4.txt deleted file mode 100644 index 7e4dc961a..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/C4.txt +++ /dev/null @@ -1,32 +0,0 @@ -C4Context -title System Context diagram for Internet Banking System - -Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") -Person(customerB, "Banking Customer B") -Person_Ext(customerC, "Banking Customer C") -System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") - -Person(customerD, "Banking Customer D", "A customer of the bank,
with personal bank accounts.") - -Enterprise_Boundary(b1, "BankBoundary") { - - SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - System_Boundary(b2, "BankBoundary2") { - System(SystemA, "Banking System A") - System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.") - } - - System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") - SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") - - Boundary(b3, "BankBoundary3", "boundary") { - SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.") - SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") - } -} - -BiRel(customerA, SystemAA, "Uses") -BiRel(SystemAA, SystemE, "Uses") -Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") -Rel(SystemC, customerA, "Sends e-mails to") \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg deleted file mode 100644 index 60f433a49..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -<<person>>Banking Customer AA customer of the bank, with personal bank accounts.<<person>>Banking Customer B<<external_person>>Banking Customer C<<system>>Internet Banking SystemAllows customers to view information about their bank accounts, and make payments.<<person>>Banking Customer DA customer of the bank, with personal bank accounts.<<external_system_db>>Mainframe Banking SystemStores all of the core banking information about customers, accounts, transactions, etc.<<external_system>>E-mail systemThe internal Microsoft Exchange e-mail system.<<system_db>>Banking System D DatabaseA system of the bank, with personal bank accounts.<<system>>Banking System A<<system>>Banking System BA system of the bank, with personal bank accounts.BankBoundary2[ENTERPRISE]<<system_queue>>Banking System F QueueA system of the bank, with personal bank accounts.<<external_system_queue>>Banking System G QueueA system of the bank, with personal bank accounts.BankBoundary3[boundary]BankBoundary[ENTERPRISE]UsesUsesSends e-mails[SMTP]Sends e-mails toSystem Context diagram for Internet Banking System \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Class.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Class.txt deleted file mode 100644 index f902afadd..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Class.txt +++ /dev/null @@ -1,16 +0,0 @@ -classDiagram -Class01 <|-- AveryLongClass : Cool -<> Class01 -Class09 --> C2 : Where am i? -Class09 --* C3 -Class09 --|> Class07 -Class07 : equals() -Class07 : Object[] elementData -Class01 : size() -Class01 : int chimp -Class01 : int gorilla -class Class10 { - <> - int id - size() -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg deleted file mode 100644 index 9d10efc11..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -
Cool
Where am i?
«interface»
Class01
int chimp
int gorilla
size()
AveryLongClass
Class09
C2
C3
Class07
Object[] elementData
equals()
«service»
Class10
int id
size()
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt deleted file mode 100644 index 94d6f5196..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt +++ /dev/null @@ -1,10 +0,0 @@ -erDiagram - CUSTOMER }|..|{ DELIVERY-ADDRESS : has - CUSTOMER ||--o{ ORDER : places - CUSTOMER ||--o{ INVOICE : "liable for" - DELIVERY-ADDRESS ||--o{ ORDER : receives - INVOICE ||--|{ ORDER : covers - ORDER ||--|{ ORDER-ITEM : includes - PRODUCT-CATEGORY ||--|{ PRODUCT : contains - PRODUCT ||--o{ ORDER-ITEM : "ordered in" - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg deleted file mode 100644 index d5911752e..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg +++ /dev/null @@ -1 +0,0 @@ -CUSTOMERDELIVERY-ADDRESSORDERINVOICEORDER-ITEMPRODUCT-CATEGORYPRODUCThasplacesliable forreceivescoversincludescontainsordered in \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt deleted file mode 100644 index 34d7aedaf..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt +++ /dev/null @@ -1,15 +0,0 @@ ---- -config: - layout: elk ---- -flowchart LR -A-->|"Guarantee"|B -C-->|"User attributes"|B -C-->|"Master data"|B -C-->|"Exchange Rate"|B -C-->|"Profit Centers"|B -C-->|"Vendor Partners"|B -C-->|"Work Situation"|B -C-->|"Customer"|B -C-->|"Profit Centers"|B -B-->|"Guarantee"|C \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg deleted file mode 100644 index 1a133a1c7..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

A

B

C

Guarantee

User attributes

Master data

Exchange Rate

Profit Centers

Vendor Partners

Work Situation

Customer

Profit Centers

Guarantee

\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Flow.txt deleted file mode 100644 index a7fcef7f3..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow.txt +++ /dev/null @@ -1,5 +0,0 @@ -graph TD -A[Hard] -->|Text| B(Round) -B --> C{Decision} -C -->|One| D[Result 1] -C -->|Two| E[Result 2] \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg deleted file mode 100644 index 7941b9ae1..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

Text

One

Two

Hard

Round

Decision

Result 1

Result 2

\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Gantt.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Gantt.txt deleted file mode 100644 index af32bc27d..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Gantt.txt +++ /dev/null @@ -1,8 +0,0 @@ -gantt -section Section -Completed :done, des1, 2014-01-06,2014-01-08 -Active :active, des2, 2014-01-07, 3d -Parallel 1 : des3, after des1, 1d -Parallel 2 : des4, after des1, 1d -Parallel 3 : des5, after des3, 1d -Parallel 4 : des6, after des4, 1d \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg deleted file mode 100644 index 61ffc0260..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -2014-01-062014-01-072014-01-072014-01-082014-01-082014-01-092014-01-092014-01-10Completed Parallel 1 Parallel 2 Active Parallel 3 Parallel 4 Section \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Git.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Git.txt deleted file mode 100644 index f5c89f75d..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Git.txt +++ /dev/null @@ -1,10 +0,0 @@ - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg deleted file mode 100644 index 15b9bb454..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -maindevelop0-e6e63b91-f6c5e0c2-b62cc0e3-be86c5a4-7021d405-f753c376-3f1a1ef \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Journey.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Journey.txt deleted file mode 100644 index 8bad1ef77..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Journey.txt +++ /dev/null @@ -1,9 +0,0 @@ - journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 3: Me \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg deleted file mode 100644 index 2b6c1e75d..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -CatMe
Go to work
Go to work
Me
Make tea
Make tea
Me
Go upstairs
Go upstairs
MeCat
Do work
Do work
Go home
Go home
Me
Go downstairs
Go downstairs
Me
Sit down
Sit down
My working day
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Mind Map.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Mind Map.txt deleted file mode 100644 index 6cdfad11d..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Mind Map.txt +++ /dev/null @@ -1,17 +0,0 @@ -mindmap - root((mindmap)) - Origins - Long history - ::icon(fa fa-book) - Popularisation - British popular psychology author Tony Buzan - Research - On effectiveness
and features - On Automatic creation - Uses - Creative techniques - Strategic planning - Argument mapping - Tools - Pen and paper - Mermaid \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg deleted file mode 100644 index 4e0a32214..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -mindmapOriginsLong history
PopularisationBritish popular psychologyauthor Tony BuzanResearchOn effectivenessand featuresOn Automatic creationUsesCreative techniquesStrategic planningArgument mappingToolsPen and paperMermaid
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Pie.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Pie.txt deleted file mode 100644 index 58aeda658..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Pie.txt +++ /dev/null @@ -1,4 +0,0 @@ -pie -"Dogs" : 386 -"Cats" : 85 -"Rats" : 15 \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg deleted file mode 100644 index 80909557d..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -79%17%3%DogsCatsRats \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Sequence.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/Sequence.txt deleted file mode 100644 index 5ed800922..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Sequence.txt +++ /dev/null @@ -1,9 +0,0 @@ -sequenceDiagram -Alice->>John: Hello John, how are you? -loop Healthcheck - John->>John: Fight against hypochondria -end -Note right of John: Rational thoughts! -John-->>Alice: Great! -John->>Bob: How about you? -Bob-->>John: Jolly good! \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg deleted file mode 100644 index 804d86275..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -BobJohnAliceBobJohnAliceloop[Healthcheck]Rational thoughts!Hello John, how are you?Fight against hypochondriaGreat!How about you?Jolly good! \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/State.txt b/demo/Home/Trilium Demo/Mermaid Diagrams/State.txt deleted file mode 100644 index 7b57864f0..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/State.txt +++ /dev/null @@ -1,7 +0,0 @@ -stateDiagram-v2 -[*] --> Still -Still --> [*] -Still --> Moving -Moving --> Still -Moving --> Crash -Crash --> [*] \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg b/demo/Home/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg deleted file mode 100644 index 1e2314d6c..000000000 --- a/demo/Home/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -
Still
Moving
Crash
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mind map.json b/demo/Home/Trilium Demo/Mind map.json deleted file mode 100644 index 79b3add25..000000000 --- a/demo/Home/Trilium Demo/Mind map.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"me-root","topic":"Mind Elixir","root":true,"tags":["Mind Map Core"],"children":[{"topic":"What is Mind Elixir","id":"bd4313fbac40284b","direction":0,"expanded":true,"children":[{"topic":"A mind map core","id":"beeb823afd6d2114"},{"topic":"Free","id":"c1f068377de9f3a0"},{"topic":"Open-Source","id":"c1f06d38a09f23ca"},{"topic":"Use without JavaScript framework","id":"c1f06e4cbcf16463","expanded":true,"children":[]},{"topic":"Use in your own project","id":"c1f1f11a7fbf7550","children":[{"topic":"import MindElixir from 'mind-elixir'","id":"c1f1e245b0a89f9b"},{"topic":"new MindElixir({...}).init(data)","id":"c1f1ebc7072c8928"}]},{"topic":"Easy to use","id":"c1f0723c07b408d7","expanded":true,"children":[{"topic":"Use it like other mind map application","id":"c1f09612fd89920d"}]}]},{"topic":"Basics","id":"bd1b66c4b56754d9","direction":0,"expanded":true,"children":[{"topic":"tab - Create a child node","id":"bd1b6892bcab126a"},{"topic":"enter - Create a sibling node","id":"bd1b6b632a434b27"},{"topic":"del - Remove a node","id":"bd1b983085187c0a"}]},{"topic":"Focus mode","id":"bd1b9b94a9a7a913","direction":1,"expanded":true,"children":[{"topic":"Right click and select Focus Mode","id":"bd1bb2ac4bbab458"},{"topic":"Right click and select Cancel Focus Mode","id":"bd1bb4b14d6697c3"}]},{"topic":"Left menu","id":"bd1b9d1816ede134","direction":0,"expanded":true,"children":[{"topic":"Node distribution","id":"bd1ba11e620c3c1a","expanded":true,"children":[{"topic":"Left","id":"bd1c1cb51e6745d3"},{"topic":"Right","id":"bd1c1e12fd603ff6"},{"topic":"Both l & r","id":"bd1c1f03def5c97b"}]}]},{"topic":"Bottom menu","id":"bd1ba66996df4ba4","direction":1,"expanded":true,"children":[{"topic":"Full screen","id":"bd1ba81d9bc95a7e"},{"topic":"Return to Center","id":"bd1babdd5c18a7a2"},{"topic":"Zoom in","id":"bd1bae68e0ab186e"},{"topic":"Zoom out","id":"bd1bb06377439977"}]},{"topic":"Link","id":"bd1beff607711025","direction":0,"expanded":true,"children":[{"topic":"Right click and select Link","id":"bd1bf320da90046a"},{"topic":"Click the target you want to link","id":"bd1bf6f94ff2e642"},{"topic":"Modify link with control points","id":"bd1c0c4a487bd036"}]},{"topic":"Node style","id":"bd1c217f9d0b20bd","direction":0,"expanded":true,"children":[{"topic":"Font Size","id":"bd1c24420cd2c2f5","style":{"fontSize":"32","color":"#3298db"}},{"topic":"Font Color","id":"bd1c2a59b9a2739c","style":{"color":"#c0392c"}},{"topic":"Background Color","id":"bd1c2de33f057eb4","style":{"color":"#bdc3c7","background":"#2c3e50"}},{"topic":"Add tags","id":"bd1cff58364436d0","tags":["Completed"]},{"topic":"Add icons","id":"bd1d0317f7e8a61a","icons":["😂"],"tags":["www"]},{"topic":"Bolder","id":"bd41fd4ca32322a4","style":{"fontWeight":"bold"}},{"topic":"Hyper link","id":"bd41fd4ca32322a5","hyperLink":"https://github.com/ssshooter/mind-elixir-core"}]},{"topic":"Draggable","id":"bd1f03fee1f63bc6","direction":1,"expanded":true,"children":[{"topic":"Drag a node to another node\nand the former one will become a child node of latter one","id":"bd1f07c598e729dc"}]},{"topic":"Export data","id":"beeb7586973430db","direction":1,"expanded":true,"children":[{"topic":"JSON","id":"beeb784cc189375f"},{"topic":"HTML","id":"beeb7a6bec2d68f5"},{"topic":"SVG","id":"beeb7a6bec2d68e6"}]},{"topic":"Caution","id":"bd42dad21aaf6bae","direction":0,"style":{"background":"#f1c40e"},"expanded":true,"children":[{"topic":"Only save manually","id":"bd42e1d0163ebf04","expanded":true,"children":[{"topic":"Save button in the top-right corner","id":"bd42e619051878b3","branchColor":"green","expanded":true,"children":[]},{"topic":"ctrl + S","id":"bd42e97d7ac35e99"}]}]}],"expanded":true},"arrows":[{"id":"ac5fb1df7345e9c4","label":"Render","from":"beeb784cc189375f","to":"beeb7a6bec2d68f5","delta1":{"x":142.8828125,"y":-57},"delta2":{"x":146.1171875,"y":45}}],"summaries":[{"id":"a5e68e6a2ce1b648","parent":"bd42e1d0163ebf04","start":0,"end":1,"text":"summary"},{"id":"a5e6978f1bc69f4a","parent":"bd4313fbac40284b","start":3,"end":5,"text":"summary"}],"direction":0,"theme":{"name":"Dark","palette":["#848FA0","#748BE9","#D2F9FE","#4145A5","#789AFA","#706CF4","#EF987F","#775DD5","#FCEECF","#DA7FBC"],"cssVar":{"--main-color":"#ffffff","--main-bgcolor":"#4c4f69","--color":"#cccccc","--bgcolor":"#252526","--panel-color":"#ffffff","--panel-bgcolor":"#2d3748","--panel-border-color":"#696969"}}} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mind map/1_new note.json b/demo/Home/Trilium Demo/Mind map/1_new note.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/demo/Home/Trilium Demo/Mind map/new note.json b/demo/Home/Trilium Demo/Mind map/new note.json deleted file mode 100644 index b73e5bf70..000000000 --- a/demo/Home/Trilium Demo/Mind map/new note.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"1add248a269dc540","topic":"new topic","root":true,"children":[{"topic":"sfg","id":"1add2e114258aa6f"}]},"arrows":[],"summaries":[],"direction":0,"theme":{"name":"Latte","palette":["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],"cssVar":{"--main-color":"#444446","--main-bgcolor":"#ffffff","--color":"#777777","--bgcolor":"#f6f6f6","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea"}}} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mind map/new note/new note.json b/demo/Home/Trilium Demo/Mind map/new note/new note.json deleted file mode 100644 index cb4b5098a..000000000 --- a/demo/Home/Trilium Demo/Mind map/new note/new note.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"1adc13eb15e57c17","topic":"new topic","root":true,"children":[{"topic":"asdfas","id":"1adc142dd5a11537","children":[{"topic":"adsf","id":"1adc14819bdcb38d"},{"topic":"asd","id":"1adc14c6920bc68a","children":[{"topic":"asd","id":"1adc1aab9383a26f","children":[{"topic":"asd","id":"1adc1b14942f7a44"}]}]},{"topic":"new node","id":"1adc14fc5f38fd4c"},{"topic":"adsf","id":"1adc152588d29a91"},{"topic":"asdf","id":"1adc19601cdcd9b6"}]},{"topic":"asdf","id":"1add48c7aa544e61","children":[{"topic":"asdf","id":"1add4917919fe495"}]},{"topic":"The quick brownie foxie","id":"1ade2085c2cd91a0"}]},"arrows":[],"summaries":[],"direction":1,"theme":{"name":"Latte","palette":["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],"cssVar":{"--main-color":"#444446","--main-bgcolor":"#ffffff","--color":"#777777","--bgcolor":"#f6f6f6","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea"}}} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Mind map_mindmap-export.svg b/demo/Home/Trilium Demo/Mind map_mindmap-export.svg deleted file mode 100644 index 31a0b83eb..000000000 --- a/demo/Home/Trilium Demo/Mind map_mindmap-export.svg +++ /dev/null @@ -1,2 +0,0 @@ -Rendersummarysummary
What is Mind Elixir
A mind map core
Free
Open-Source
Use without JavaScript framework
Use in your own project
import MindElixir from 'mind-elixir'
new MindElixir({...}).init(data)
Easy to use
Use it like other mind map application
Basics
tab - Create a child node
enter - Create a sibling node
del - Remove a node
Focus mode
Right click and select Focus Mode
Right click and select Cancel Focus Mode
Left menu
Node distribution
Left
Right
Both l & r
Bottom menu
Full screen
Return to Center
Zoom in
Zoom out
Link
Right click and select Link
Click the target you want to link
Modify link with control points
Node style
Font Size
Font Color
Background Color
Add tags
Add icons
Bolder
Hyper link
Draggable
Drag a node to another node -and the former one will become a child node of latter one
Export data
JSON
HTML
SVG
Caution
Only save manually
Save button in the top-right corner
ctrl + S
Mind Elixir
CompletedwwwMind Map Core😂🔗
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Custom request handler.js b/demo/Home/Trilium Demo/Scripting examples/Custom request handler.js deleted file mode 100644 index 99b71b71c..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Custom request handler.js +++ /dev/null @@ -1,28 +0,0 @@ -return api.res.send(404); - -/** - * To activate this demo, comment (or remove) the very first line of this code note. - * This is deactivated because custom request handler like this one can be a security risk. - * To test this, execute the following curl request: curl -X POST http://localhost:37740/custom/create-note -H "Content-Type: application/json" -d "{ \"secret\": \"secret-password\", \"title\": \"hello\", \"content\": \"world\" }" - * (host and port might have to be adjusted based on your setup) - * - * See https://github.com/zadam/trilium/wiki/Custom-request-handler for details. - */ - -const {req, res} = api; -const {secret, title, content} = req.body; - -if (req.method == 'POST' && secret === 'secret-password') { - // notes must be saved somewhere in the tree hierarchy specified by a parent note. - // This is defined by a relation from this code note to the "target" parent note - // alternetively you can just use constant noteId for simplicity (get that from "Note Info" dialog of the desired parent note) - const targetParentNoteId = api.currentNote.getRelationValue('targetNote'); - - const {note} = api.createTextNote(targetParentNoteId, title, content); - const notePojo = note.getPojo(); - - res.status(201).json(notePojo); -} -else { - res.send(400); -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html deleted file mode 100644 index 5f5417f5c..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html +++ /dev/null @@ -1,12 +0,0 @@ -
- - -
- - - - - - -
Attribute nameCount
-
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js deleted file mode 100644 index 4f7d3872b..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js +++ /dev/null @@ -1,12 +0,0 @@ -const attrCounts = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - name, COUNT(*) AS count - FROM attributes - WHERE isDeleted = 0 - GROUP BY name - ORDER BY count DESC`); -}); - -renderPieChart(attrCounts.length <= 10 ? attrCounts : attrCounts.splice(0, 10)); -renderTable(attrCounts); \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js deleted file mode 100644 index db0269cb4..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js +++ /dev/null @@ -1,45 +0,0 @@ -module.exports = data => { - const ctx = api.$container.find('.stats-canvas')[0].getContext("2d"); - - const myPieChart = new Chart(ctx, { - type: 'pie', - data: { - datasets: [{ - data: data.map(nc => nc.count), - backgroundColor: ['#3366CC','#DC3912','#FF9900','#109618','#990099','#3B3EAC','#0099C6','#DD4477','#66AA00','#B82E2E','#316395','#994499','#22AA99','#AAAA11','#6633CC','#E67300','#8B0707','#329262','#5574A6','#3B3EAC'], - datalabels: { - anchor: 'end' - } - }], - labels: data.map(nc => nc.name) - }, - options: { - legend: { - display: false - }, - plugins: { - datalabels: { - backgroundColor: function(context) { - return context.dataset.backgroundColor; - }, - borderColor: 'white', - borderRadius: 25, - borderWidth: 2, - color: 'white', - display: function(context) { - var dataset = context.dataset; - var count = dataset.data.length; - var value = dataset.data[context.dataIndex]; - return value > count * 1.5; - }, - font: { - weight: 'bold' - }, - formatter: function(value, context) { - return context.chart.data.labels[context.dataIndex] + ": " + Math.round(value); - } - } - } - } - }); -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html deleted file mode 100644 index 64e4de7c4..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - chart.js - - - -
-

chart.js

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js deleted file mode 100644 index fb45222c7..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * chartjs-plugin-datalabels v2.0.0 - * https://chartjs-plugin-datalabels.netlify.app - * (c) 2017-2021 chartjs-plugin-datalabels contributors - * Released under the MIT license - */ -!function(t,e){(t="undefined"!=typeof globalThis?globalThis:t||self).ChartDataLabels=e(t.Chart.helpers,t.Chart)}(this,(function(t,e){"use strict";var r=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),a=function(e){var r,a=[];for(e=[].concat(e);e.length;)"string"==typeof(r=e.pop())?a.unshift.apply(a,r.split("\n")):Array.isArray(r)?e.push.apply(e,r):t.isNullOrUndef(e)||a.unshift(""+r);return a},o=function(t,e,r){var a,o=[].concat(e),n=o.length,i=t.font,l=0;for(t.font=r.string,a=0;ar.right&&(a|=2),er.bottom&&(a|=4),a}function u(t,e){var r,a,o=e.anchor,n=t;return e.clamp&&(n=function(t,e){for(var r,a,o,n=t.x0,i=t.y0,l=t.x1,u=t.y1,d=s(n,i,e),c=s(l,u,e);d|c&&!(d&c);)8&(r=d||c)?(a=n+(l-n)*(e.top-i)/(u-i),o=e.top):4&r?(a=n+(l-n)*(e.bottom-i)/(u-i),o=e.bottom):2&r?(o=i+(u-i)*(e.right-n)/(l-n),a=e.right):1&r&&(o=i+(u-i)*(e.left-n)/(l-n),a=e.left),r===d?d=s(n=a,i=o,e):c=s(l=a,u=o,e);return{x0:n,x1:l,y0:i,y1:u}}(n,e.area)),"start"===o?(r=n.x0,a=n.y0):"end"===o?(r=n.x1,a=n.y1):(r=(n.x0+n.x1)/2,a=(n.y0+n.y1)/2),function(t,e,r,a,o){switch(o){case"center":r=a=0;break;case"bottom":r=0,a=1;break;case"right":r=1,a=0;break;case"left":r=-1,a=0;break;case"top":r=0,a=-1;break;case"start":r=-r,a=-a;break;case"end":break;default:o*=Math.PI/180,r=Math.cos(o),a=Math.sin(o)}return{x:t,y:e,vx:r,vy:a}}(r,a,t.vx,t.vy,e.align)}var d=function(t,e){var r=(t.startAngle+t.endAngle)/2,a=Math.cos(r),o=Math.sin(r),n=t.innerRadius,i=t.outerRadius;return u({x0:t.x+a*n,y0:t.y+o*n,x1:t.x+a*i,y1:t.y+o*i,vx:a,vy:o},e)},c=function(t,e){var r=l(t,e.origin),a=r.x*t.options.radius,o=r.y*t.options.radius;return u({x0:t.x-a,y0:t.y-o,x1:t.x+a,y1:t.y+o,vx:r.x,vy:r.y},e)},h=function(t,e){var r=l(t,e.origin),a=t.x,o=t.y,n=0,i=0;return t.horizontal?(a=Math.min(t.x,t.base),n=Math.abs(t.base-t.x)):(o=Math.min(t.y,t.base),i=Math.abs(t.base-t.y)),u({x0:a,y0:o+i,x1:a+n,y1:o,vx:r.x,vy:r.y},e)},f=function(t,e){var r=l(t,e.origin);return u({x0:t.x,y0:t.y,x1:t.x,y1:t.y,vx:r.x,vy:r.y},e)},x=function(t){return Math.round(t*r)/r};function y(t,e){var r=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!r)return null;if(void 0!==r.xCenter&&void 0!==r.yCenter)return{x:r.xCenter,y:r.yCenter};var a=r.getBasePixel();return t.horizontal?{x:a,y:null}:{x:null,y:a}}function v(t,e,r){var a=r.backgroundColor,o=r.borderColor,n=r.borderWidth;(a||o&&n)&&(t.beginPath(),function(t,e,r,a,o,n){var i=Math.PI/2;if(n){var l=Math.min(n,o/2,a/2),s=e+l,u=r+l,d=e+a-l,c=r+o-l;t.moveTo(e,u),sr.x+r.w+2||t.y>r.y+r.h+2)},intersects:function(t){var e,r,a,o=this._points(),n=t._points(),i=[M(o[0],o[1]),M(o[0],o[3])];for(this._rotation!==t._rotation&&i.push(M(n[0],n[1]),M(n[0],n[3])),e=0;et.getProps([e],!0)[e]}),n=a.geometry(),i=$(l,a.model(),n),o._box.update(i,n,a.rotation()));(function(t,e){var r,a,o,n;for(r=t.length-1;r>=0;--r)for(o=t[r].$layout,a=r-1;a>=0&&o._visible;--a)(n=t[a].$layout)._visible&&o._box.intersects(n._box)&&e(o,n)})(t,(function(t,e){var r=t._hidable,a=e._hidable;r&&a||a?e._visible=!1:r&&(t._visible=!1)}))}(t)},lookup:function(t,e){var r,a;for(r=t.length-1;r>=0;--r)if((a=t[r].$layout)&&a._visible&&a._box.contains(e))return t[r];return null},draw:function(t,e){var r,a,o,n,i,l;for(r=0,a=e.length;r - - - - - - - chart.js - - - -
-

chart.js

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js deleted file mode 100644 index 39bfc9b23..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = counts => { - const $statsTable = api.$container.find('.stats-table'); - - addRow('total', counts.reduce((acc, cur) => acc + cur.count, 0)); - - for (const count of counts) { - addRow(count.name, count.count); - } - - function addRow(name, count) { - $statsTable.append( - $("") - .append($("").text(name)) - .append($("").text(count)) - ); - } -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html deleted file mode 100644 index 2932d9885..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows 100 largest notes, including their revisions and attachments.

- - - - - - -
NoteSize
-
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js deleted file mode 100644 index af10eb40a..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js +++ /dev/null @@ -1,47 +0,0 @@ -const notes = await api.runOnBackend(() => { - const blobSizes = api.sql.getMap(`SELECT blobId, LENGTH(content) FROM blobs`); - const noteBlobIds = api.sql.getRows(` - SELECT - notes.noteId, - notes.blobId, - GROUP_CONCAT(revisions.blobId) AS revisions_blobIds, - GROUP_CONCAT(note_attachments.blobId) AS note_attachments_blobIds, - GROUP_CONCAT(revision_attachments.blobId) AS revision_attachments_blobIds - FROM - notes - LEFT JOIN revisions USING (noteId) - LEFT JOIN attachments AS note_attachments ON notes.noteId = note_attachments.ownerId - LEFT JOIN attachments AS revision_attachments ON revisions.revisionId = revision_attachments.ownerId - GROUP BY noteId`); - - let noteSizes = []; - - for (const {noteId, blobId, revisions_blobIds, note_attachments_blobIds, revision_attachments_blobIds} of noteBlobIds) { - const blobIds = new Set(`${blobId},${revisions_blobIds},${note_attachments_blobIds},${revision_attachments_blobIds}`.split(',').filter(blobId => !!blobId)); - - const lengths = [...blobIds].map(blobId => blobSizes[blobId] || 0); - const totalLength = lengths.reduce((partialSum, a) => partialSum + a, 0); - - noteSizes.push({ noteId, size: totalLength }); - } - - noteSizes.sort((a, b) => a.size > b.size ? -1 : 1); - - noteSizes = noteSizes.splice(0, 100); - - return noteSizes; -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append( - $("").text(note.size + " bytes") - ) - ); -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html deleted file mode 100644 index 84d8504db..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html +++ /dev/null @@ -1,8 +0,0 @@ -
- - - - - -
NoteClone count
-
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js deleted file mode 100644 index 63c6f0ba5..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js +++ /dev/null @@ -1,26 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(branches.branchId) AS count - FROM notes - JOIN branches USING (noteId) - WHERE notes.isDeleted = 0 - AND branches.isDeleted = 0 - GROUP BY notes.noteId - HAVING count > 1 - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html deleted file mode 100644 index d60e28d8c..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows notes with most revisions

- - - - - - -
NoteRevision count
-
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js deleted file mode 100644 index e36d0e698..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js +++ /dev/null @@ -1,24 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(revisions.revisionId) AS count - FROM notes - JOIN revisions USING (noteId) - WHERE notes.isDeleted = 0 - GROUP BY notes.noteId - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html deleted file mode 100644 index fad5fae88..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows notes which are linked by other notes through relations

- - - - - - -
NoteRelation count
-
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js deleted file mode 100644 index 53ab6b1c9..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js +++ /dev/null @@ -1,26 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(attributes.attributeId) AS count - FROM notes - JOIN attributes ON attributes.value = notes.noteId - WHERE notes.isDeleted = 0 - AND attributes.isDeleted = 0 - AND attributes.type = 'relation' - GROUP BY notes.noteId - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template.html deleted file mode 100644 index 3cfe66481..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template.html +++ /dev/null @@ -1,13 +0,0 @@ -
- - -
- - - - - - - -
Note typeCount (not deleted)Count (deleted)
-
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js deleted file mode 100644 index 4a4eecb7b..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js +++ /dev/null @@ -1,20 +0,0 @@ -const noteCounts = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - type, - isDeleted, - SUM(CASE WHEN isDeleted=0 THEN 1 ELSE 0 END) AS countNotDeleted, - SUM(CASE WHEN isDeleted=1 THEN 1 ELSE 0 END) AS countDeleted - FROM notes - GROUP BY type - ORDER BY countNotDeleted DESC`); -}); - -renderPieChart(noteCounts.map(nc => { - return { - name: nc.type, - count: nc.countNotDeleted - }; -})); - -renderTable(noteCounts); \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html b/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html deleted file mode 100644 index d08203fb2..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - renderPieChart - - - -
-

renderPieChart

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js b/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js deleted file mode 100644 index 353653eae..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = counts => { - const $statsTable = api.$container.find('.stats-table'); - - addRow('total', - counts.reduce((acc, cur) => acc + cur.countNotDeleted, 0), - counts.reduce((acc, cur) => acc + cur.countDeleted, 0) - ); - - for (const count of counts) { - addRow(count.type, count.countNotDeleted, count.countDeleted); - } - - function addRow(type, countNotDeleted, countDeleted) { - $statsTable.append( - $("") - .append($("").text(type)) - .append($("").text(countNotDeleted)) - .append($("").text(countDeleted)) - ); - } -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager.html b/demo/Home/Trilium Demo/Scripting examples/Task manager.html deleted file mode 100644 index 0d84ae645..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Task manager - - - -
-

Task manager

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This is a simple TODO/Task manager. You can see some description and explanation - here: https://github.com/zadam/trilium/wiki/Task-manager - -

-

Please note that this is meant as scripting example only and feature/bug - support is very limited.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Create Launcher.js b/demo/Home/Trilium Demo/Scripting examples/Task manager/Create Launcher.js deleted file mode 100644 index 1fb4c4430..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Create Launcher.js +++ /dev/null @@ -1,10 +0,0 @@ -// will add a launcher to the left sidebar -api.createOrUpdateLauncher({ - id: 'taskmanager', - type: 'script', - title: 'New task', - icon: 'bx-task', - keyboardShortcut: 'alt+n', - scriptNoteId: api.currentNote.getRelationValue('createNewTask'), - isVisible: true -}); \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html deleted file mode 100644 index 7c1a17306..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - Buy a board game for Alice - - - -
-

Buy a board game for Alice

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg b/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg deleted file mode 100644 index f0135ec7b..000000000 Binary files a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg and /dev/null differ diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html deleted file mode 100644 index 203644d5e..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Dentist appointment - - - -
-

Dentist appointment

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html deleted file mode 100644 index 4eead86d7..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Get a gym membership - - - -
-

Get a gym membership

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Just in time for new years resolution!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css b/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css deleted file mode 100644 index 4d4b43b71..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css +++ /dev/null @@ -1,7 +0,0 @@ -span.fancytree-node.todo .fancytree-title { - color: red !important; -} - -span.fancytree-node.done .fancytree-title { - color: green !important; -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js b/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js deleted file mode 100644 index 56292594d..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js +++ /dev/null @@ -1,63 +0,0 @@ -if (!["task", "location", "tag", "todoDate", "doneDate"].includes(api.originEntity.name)) { - return; -} - -const tagRootNote = api.getNoteWithLabel('taskTagRoot'); -const doneRootNote = api.getNoteWithLabel('taskDoneRoot'); -const todoRootNote = api.getNoteWithLabel('taskTodoRoot'); - -if (!tagRootNote || !doneRootNote || !todoRootNote) { - console.log("One of the tagRootNote, doneRootNote or todoRootNote does not exist"); - return; -} - -const note = api.originEntity.getNote(); - -if (note.isDeleted) { - return; -} - -const attributes = note.getAttributes(); - -const todoDate = note.getLabelValue('todoDate'); -const doneDate = note.getLabelValue('doneDate'); - -function isWithinExpectedRange(date) { - if (!date) { - return true; - } - - const year = parseInt(date.substr(0, 4)); - - return year >= 2010 && year < 2050; -} - -if (!isWithinExpectedRange(todoDate) || !isWithinExpectedRange(doneDate)) { - console.log(`One or both dates - ${todoDate}, ${doneDate} - is outside of expected range`); - - return; -} - -const isTaskDone = !!doneDate; - -api.toggleNoteInParent(isTaskDone, note.noteId, doneRootNote.noteId); -api.toggleNoteInParent(!isTaskDone, note.noteId, todoRootNote.noteId); - -const location = note.getLabelValue('location'); -const locationRootNote = api.getNoteWithLabel('taskLocationRoot'); - -reconcileAssignments(note, locationRootNote, location ? [location] : [], 'taskLocationNote', isTaskDone); - -const tags = attributes.filter(attr => attr.type === 'label' && attr.name === 'tag').map(attr => attr.value); - -reconcileAssignments(note, tagRootNote, tags, 'taskTagNote', isTaskDone); - -note.toggleLabel(isTaskDone, "cssClass", "done"); - -const doneTargetNoteId = isTaskDone ? api.getDayNote(doneDate).noteId : null; -api.setNoteToParent(note.noteId, 'DONE', doneTargetNoteId); - -note.toggleLabel(!isTaskDone, "cssClass", "todo"); - -const todoTargetNoteId = (!isTaskDone && todoDate) ? api.getDayNote(todoDate).noteId : null; -api.setNoteToParent(note.noteId, 'TODO', todoTargetNoteId); \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js b/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js deleted file mode 100644 index bf3503987..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = function (note, categoryRootNote, assignedCategories, labelName, isTaskDone) { - const found = {}; - - for (const categoryNote of categoryRootNote.getChildNotes()) { - const label = categoryNote.getLabel(labelName); - - if (label) { - found[label.value] = !isTaskDone && assignedCategories.includes(label.value); - - api.toggleNoteInParent(found[label.value], note.noteId, categoryNote.noteId); - } - } - - if (!isTaskDone) { - for (const assignedCategory of assignedCategories) { - if (!found[assignedCategory]) { - const categoryNote = api.createTextNote(categoryRootNote.noteId, assignedCategory, "").note; - - categoryNote.addLabel(labelName, assignedCategory); - - api.ensureNoteIsPresentInParent(note.noteId, categoryNote.noteId); - } - } - } -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js b/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js deleted file mode 100644 index 9dd12721a..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js +++ /dev/null @@ -1,14 +0,0 @@ -// creating notes is backend (server) responsibility so we need to pass -// the control there -const taskNoteId = await api.runOnBackend(() => { - const todoRootNote = api.getNoteWithLabel('taskTodoRoot'); - const resp = api.createTextNote(todoRootNote.noteId, 'new task', ''); - - return resp.note.noteId; -}); - -// wait until the frontend is fully synced with the changes made on the backend above -await api.waitUntilSynced(); - -// we got an ID of newly created note and we want to immediatelly display it -await api.activateNewNote(taskNoteId); \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html deleted file mode 100644 index 59ae73922..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - task template - - - -
-

task template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/gym.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/gym.html deleted file mode 100644 index 4c4f1cc51..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/gym.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - gym - - - -
-

gym

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html deleted file mode 100644 index b219f2491..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bob likes to read popular science books so something like that ..

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html deleted file mode 100644 index 7c6196ecb..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - Maybe Black Swan? - - - -
-

Maybe Black Swan?

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable - -

-

 

-

The Black Swan: The Impact of the Highly Improbable is - a 2007 book by author and former options trader - Nassim Nicholas Taleb. The book focuses on the extreme impact of rare - and unpredictable outlier events - — and the human tendency to find simplistic explanations for these events, - retrospectively. Taleb calls this the Black Swan theory.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html deleted file mode 100644 index 94e4e1d46..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html deleted file mode 100644 index 571f970b4..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html deleted file mode 100644 index bbcd6f3cf..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html deleted file mode 100644 index b6c791688..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html deleted file mode 100644 index fd4df0179..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html deleted file mode 100644 index 8d8a86979..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html deleted file mode 100644 index 538a712d5..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/health.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/health.html deleted file mode 100644 index a5dee8524..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/health.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - health - - - -
-

health

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html deleted file mode 100644 index 538a712d5..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html b/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html deleted file mode 100644 index 8d8a86979..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html b/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html deleted file mode 100644 index 6966e949a..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html +++ /dev/null @@ -1,5 +0,0 @@ -
- See explanation here. - - -
\ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js b/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js deleted file mode 100644 index 3c514402a..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js +++ /dev/null @@ -1,46 +0,0 @@ -async function getChartData() { - const days = await api.runOnBackend(() => { - const notes = api.getNotesWithLabel('weight'); - const days = []; - - for (const note of notes) { - const date = note.getLabelValue('dateNote'); - const weight = parseFloat(note.getLabelValue('weight')); - - if (date && weight) { - days.push({ date, weight }); - } - } - - days.sort((a, b) => a.date > b.date ? 1 : -1); - - return days; - }); - - const datasets = [ - { - label: "Weight (kg)", - backgroundColor: 'red', - borderColor: 'red', - data: days.map(day => day.weight), - fill: false, - spanGaps: true, - datalabels: { - display: false - }, - tension: 0.3 - } - ]; - - return { - datasets: datasets, - labels: days.map(day => day.date) - }; -} - -const ctx = api.$container.find("canvas")[0].getContext("2d"); - -new chartjs.Chart(ctx, { - type: 'line', - data: await getChartData() -}); \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js b/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js deleted file mode 100644 index 07b5445e5..000000000 --- a/demo/Home/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * Chart.js v3.7.0 - * https://www.chartjs.org - * (c) 2021 Chart.js Contributors - * Released under the MIT License - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";const t="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function e(e,i,s){const n=s||(t=>Array.prototype.slice.call(t));let o=!1,a=[];return function(...s){a=n(s),o||(o=!0,t.call(window,(()=>{o=!1,e.apply(i,a)})))}}function i(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const s=t=>"start"===t?"left":"end"===t?"right":"center",n=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,o=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;var a=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=t.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}; -/*! - * @kurkle/color v0.1.9 - * https://github.com/kurkle/color#readme - * (c) 2020 Jukka Kurkela - * Released under the MIT License - */const r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},l="0123456789ABCDEF",h=t=>l[15&t],c=t=>l[(240&t)>>4]+l[15&t],d=t=>(240&t)>>4==(15&t);function u(t){var e=function(t){return d(t.r)&&d(t.g)&&d(t.b)&&d(t.a)}(t)?h:c;return t?"#"+e(t.r)+e(t.g)+e(t.b)+(t.a<255?e(t.a):""):t}function f(t){return t+.5|0}const g=(t,e,i)=>Math.max(Math.min(t,i),e);function p(t){return g(f(2.55*t),0,255)}function m(t){return g(f(255*t),0,255)}function x(t){return g(f(t/2.55)/100,0,1)}function b(t){return g(f(100*t),0,100)}const _=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const y=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function v(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function w(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function M(t,e,i){const s=v(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function k(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=n===e?(i-s)/h+(i>16&255,o>>8&255,255&o]}return t}(),T.transparent=[0,0,0,0]);const e=T[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}function R(t,e,i){if(t){let s=k(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=P(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function E(t,e){return t?Object.assign(e||{},t):t}function I(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=m(t[3]))):(e=E(t,{r:0,g:0,b:0,a:1})).a=m(e.a),e}function z(t){return"r"===t.charAt(0)?function(t){const e=_.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=255&(e[8]?p(t):255*t)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?p(i):i),s=255&(e[4]?p(s):s),n=255&(e[6]?p(n):n),{r:i,g:s,b:n,a:o}}}(t):C(t)}class F{constructor(t){if(t instanceof F)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=I(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*r[s[1]],g:255&17*r[s[2]],b:255&17*r[s[3]],a:5===o?17*r[s[4]]:255}:7!==o&&9!==o||(n={r:r[s[1]]<<4|r[s[2]],g:r[s[3]]<<4|r[s[4]],b:r[s[5]]<<4|r[s[6]],a:9===o?r[s[7]]<<4|r[s[8]]:255})),i=n||L(t)||z(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=E(this._rgb);return t&&(t.a=x(t.a)),t}set rgb(t){this._rgb=I(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${x(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):this._rgb;var t}hexString(){return this._valid?u(this._rgb):this._rgb}hslString(){return this._valid?function(t){if(!t)return;const e=k(t),i=e[0],s=b(e[1]),n=b(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${x(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):this._rgb}mix(t,e){const i=this;if(t){const s=i.rgb,n=t.rgb;let o;const a=e===o?.5:e,r=2*a-1,l=s.a-n.a,h=((r*l==-1?r:(r+l)/(1+r*l))+1)/2;o=1-h,s.r=255&h*s.r+o*n.r+.5,s.g=255&h*s.g+o*n.g+.5,s.b=255&h*s.b+o*n.b+.5,s.a=a*s.a+(1-a)*n.a,i.rgb=s}return i}clone(){return new F(this.rgb)}alpha(t){return this._rgb.a=m(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=f(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return R(this._rgb,2,t),this}darken(t){return R(this._rgb,2,-t),this}saturate(t){return R(this._rgb,1,t),this}desaturate(t){return R(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=k(t);i[0]=D(i[0]+e),i=P(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function B(t){return new F(t)}const V=t=>t instanceof CanvasGradient||t instanceof CanvasPattern;function W(t){return V(t)?t:B(t)}function N(t){return V(t)?t:B(t).saturate(.5).darken(.1).hexString()}function H(){}const j=function(){let t=0;return function(){return t++}}();function $(t){return null==t}function Y(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)}function U(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}const X=t=>("number"==typeof t||t instanceof Number)&&isFinite(+t);function q(t,e){return X(t)?t:e}function K(t,e){return void 0===t?e:t}const G=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:t/e,Z=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function J(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function Q(t,e,i,s){let n,o,a;if(Y(t))if(o=t.length,s)for(n=o-1;n>=0;n--)e.call(i,t[n],n);else for(n=0;ni;)t=t[e.substr(i,s-i)],i=s+1,s=rt(e,i);return t}function ht(t){return t.charAt(0).toUpperCase()+t.slice(1)}const ct=t=>void 0!==t,dt=t=>"function"==typeof t,ut=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function ft(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const gt=Object.create(null),pt=Object.create(null);function mt(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>N(e.backgroundColor),this.hoverBorderColor=(t,e)=>N(e.borderColor),this.hoverColor=(t,e)=>N(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return xt(this,t,e)}get(t){return mt(this,t)}describe(t,e){return xt(pt,t,e)}override(t,e){return xt(gt,t,e)}route(t,e,i,s){const n=mt(this,t),o=mt(this,i),a="_"+e;Object.defineProperties(n,{[a]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[a],e=o[s];return U(t)?Object.assign({},e,t):K(t,e)},set(t){this[a]=t}}})}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});const _t=Math.PI,yt=2*_t,vt=yt+_t,wt=Number.POSITIVE_INFINITY,Mt=_t/180,kt=_t/2,St=_t/4,Pt=2*_t/3,Dt=Math.log10,Ct=Math.sign;function Ot(t){const e=Math.round(t);t=Lt(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Dt(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function At(t){const e=[],i=Math.sqrt(t);let s;for(s=1;st-e)).pop(),e}function Tt(t){return!isNaN(parseFloat(t))&&isFinite(t)}function Lt(t,e,i){return Math.abs(t-e)=t}function Et(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function Ut(t){return!t||$(t.size)||$(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Xt(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function qt(t,e,i,s){let n=(s=s||{}).data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(n=s.data={},o=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let a=0;const r=i.length;let l,h,c,d,u;for(l=0;li.length){for(l=0;l0&&t.stroke()}}function Jt(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==o.strokeColor;let l,h;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);$(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,o),l=0;lt[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const re=(t,e,i)=>ae(t,i,(s=>t[s][e]ae(t,i,(s=>t[s][e]>=i));function he(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+ht(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function ue(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ce.forEach((e=>{delete t[e]})),delete t._chartjs)}function fe(t){const e=new Set;let i,s;for(i=0,s=t.length;iwindow.getComputedStyle(t,null);function be(t,e){return xe(t).getPropertyValue(e)}const _e=["top","right","bottom","left"];function ye(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=_e[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ve(t,e){const{canvas:i,currentDevicePixelRatio:s}=e,n=xe(i),o="border-box"===n.boxSizing,a=ye(n,"padding"),r=ye(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.native||t,s=i.touches,n=s&&s.length?s[0]:i,{offsetX:o,offsetY:a}=n;let r,l,h=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(o,a,i.target))r=o,l=a;else{const t=e.getBoundingClientRect();r=n.clientX-t.left,l=n.clientY-t.top,h=!0}return{x:r,y:l,box:h}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const we=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=xe(t),o=ye(n,"margin"),a=me(n.maxWidth,t,"clientWidth")||wt,r=me(n.maxHeight,t,"clientHeight")||wt,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=pe(t);if(o){const t=o.getBoundingClientRect(),a=xe(o),r=ye(a,"border","width"),l=ye(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=me(a.maxWidth,o,"clientWidth"),n=me(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||wt,maxHeight:n||wt}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=ye(n,"border","width"),e=ye(n,"padding");h-=e.width+t.width,c-=e.height+t.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=we(Math.min(h,a,l.maxWidth)),c=we(Math.min(c,r,l.maxHeight)),h&&!c&&(c=we(h/2)),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=n/s,t.width=o/s;const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Pe(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t,e){return"native"in t?{x:t.x,y:t.y}:ve(t,e)}function Ce(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&a&&o.length){const t=r._reversePixels?le:re;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n="function"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Oe(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[r](n[a],s)&&o.push({element:t,datasetIndex:e,index:i}),t.inRange(n.x,n.y,s)&&(l=!0)})),i.intersect&&!l?[]:o}var Ee={modes:{index(t,e,i,s){const n=De(e,t),o=i.axis||"x",a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s),r=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&r.push({element:i,datasetIndex:t.index,index:e})})),r):[]},dataset(t,e,i,s){const n=De(e,t),o=i.axis||"xy";let a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;tAe(t,De(e,t),i.axis||"xy",s),nearest:(t,e,i,s)=>Le(t,De(e,t),i.axis||"xy",i.intersect,s),x:(t,e,i,s)=>Re(t,e,{axis:"x",intersect:i.intersect},s),y:(t,e,i,s)=>Re(t,e,{axis:"y",intersect:i.intersect},s)}};const Ie=new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),ze=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function Fe(t,e){const i=(""+t).match(Ie);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function Be(t,e){const i={},s=U(e),n=s?Object.keys(e):e,o=U(t)?s?i=>K(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+o(t)||0;return i}function Ve(t){return Be(t,{top:"y",right:"x",bottom:"y",left:"x"})}function We(t){return Be(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Ne(t){const e=Ve(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function He(t,e){t=t||{},e=e||bt.font;let i=K(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=K(t.style,e.style);s&&!(""+s).match(ze)&&(console.warn('Invalid font style specified: "'+s+'"'),s="");const n={family:K(t.family,e.family),lineHeight:Fe(K(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:K(t.weight,e.weight),string:""};return n.string=Ut(n),n}function je(t,e,i,s){let n,o,a,r=!0;for(n=0,o=t.length;ni&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ye(t,e){return Object.assign(Object.create(t),e)}const Ue=["left","top","right","bottom"];function Xe(t,e){return t.filter((t=>t.pos===e))}function qe(t,e){return t.filter((t=>-1===Ue.indexOf(t.pos)&&t.box.axis===e))}function Ke(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ge(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ue.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function ei(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Ke(Xe(e,"left"),!0),n=Ke(Xe(e,"right")),o=Ke(Xe(e,"top"),!0),a=Ke(Xe(e,"bottom")),r=qe(e,"x"),l=qe(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xe(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;Q(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),u=Object.assign({},n);Je(u,Ne(s));const f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=Ge(l.concat(h),d);ei(r.fullSize,f,d,g),ei(l,f,d,g),ei(h,f,d,g)&&ei(l,f,d,g),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(f),si(r.leftAndTop,f,d,g),f.x+=f.w,f.y+=f.h,si(r.rightAndBottom,f,d,g),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},Q(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})}))}};function oi(t,e=[""],i=t,s,n=(()=>t[0])){ct(s)||(s=mi("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>oi([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>ci(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=mi(li(o,t),i),ct(n))return hi(t,n)?gi(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>xi(t).includes(e),ownKeys:t=>xi(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function ai(t,e,i,s){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:ri(t,s),setContext:e=>ai(t,e,i,s),override:n=>ai(t.override(n),e,i,s)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>ci(t,e,(()=>function(t,e,i){const{_proxy:s,_context:n,_subProxy:o,_descriptors:a}=t;let r=s[e];dt(r)&&a.isScriptable(e)&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),hi(t,e)&&(e=gi(n._scopes,n,t,e));return e}(e,r,t,i));Y(r)&&r.length&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_descriptors:r}=i;if(ct(o.index)&&s(t))e=e[o.index%e.length];else if(U(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=gi(s,n,t,l);e.push(ai(i,o,a&&a[t],r))}}return e}(e,r,t,a.isIndexable));hi(e,r)&&(r=ai(r,n,o&&o[e],a));return r}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function ri(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:dt(i)?i:()=>i,isIndexable:dt(s)?s:()=>s}}const li=(t,e)=>t?t+ht(e):e,hi=(t,e)=>U(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function ci(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function di(t,e,i){return dt(t)?t(e,i):t}const ui=(t,e)=>!0===t?e:"string"==typeof t?lt(e,t):void 0;function fi(t,e,i,s,n){for(const o of e){const e=ui(i,o);if(e){t.add(e);const o=di(e._fallback,i,n);if(ct(o)&&o!==i&&o!==s)return o}else if(!1===e&&ct(s)&&i!==s)return null}return!1}function gi(t,e,i,s){const n=e._rootScopes,o=di(e._fallback,i,s),a=[...t,...n],r=new Set;r.add(s);let l=pi(r,a,i,o||i,s);return null!==l&&((!ct(o)||o===i||(l=pi(r,a,o,l,s),null!==l))&&oi(Array.from(r),[""],n,o,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const n=s[e];if(Y(n)&&U(i))return i;return n}(e,i,s))))}function pi(t,e,i,s,n){for(;i;)i=fi(t,e,i,s,n);return i}function mi(t,e){for(const i of e){if(!i)continue;const e=i[t];if(ct(e))return e}}function xi(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}const bi=Number.EPSILON||1e-14,_i=(t,e)=>e"x"===t?"y":"x";function vi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=Vt(o,n),l=Vt(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function wi(t,e="x"){const i=yi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=_i(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)wi(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,Pi=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*yt/i),Di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*yt/i)+1,Ci={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*kt),easeOutSine:t=>Math.sin(t*kt),easeInOutSine:t=>-.5*(Math.cos(_t*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>Si(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>Si(t)?t:Pi(t,.075,.3),easeOutElastic:t=>Si(t)?t:Di(t,.075,.3),easeInOutElastic(t){const e=.1125;return Si(t)?t:t<.5?.5*Pi(2*t,e,.45):.5+.5*Di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-Ci.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*Ci.easeInBounce(2*t):.5*Ci.easeOutBounce(2*t-1)+.5};function Oi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Ai(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function Ti(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=Oi(t,n,i),r=Oi(n,o,i),l=Oi(o,e,i),h=Oi(a,r,i),c=Oi(r,l,i);return Oi(h,c,i)}const Li=new Map;function Ri(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=Li.get(i);return s||(s=new Intl.NumberFormat(t,e),Li.set(i,s)),s}(e,i).format(t)}function Ei(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ii(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function zi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Fi(t){return"angle"===t?{between:Ht,compare:Wt,normalize:Nt}:{between:Yt,compare:(t,e)=>t-e,normalize:t=>t}}function Bi({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Vi(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Fi(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Fi(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Bi({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Bi({start:_,end:d,loop:u,count:a,style:f})),g}function Wi(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Hi(t,[{start:a,end:r,loop:o}],i,e);return Hi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,rnull===t||""===t;const Gi=!!Se&&{passive:!0};function Zi(t,e,i){t.canvas.removeEventListener(e,i,Gi)}function Ji(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function Qi(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.addedNodes,s),e=e&&!Ji(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ts(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.removedNodes,s),e=e&&!Ji(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const es=new Map;let is=0;function ss(){const t=window.devicePixelRatio;t!==is&&(is=t,es.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ns(t,i,s){const n=t.canvas,o=n&&pe(n);if(!o)return;const a=e(((t,e)=>{const i=o.clientWidth;s(t,e),i{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||a(i,s)}));return r.observe(o),function(t,e){es.size||window.addEventListener("resize",ss),es.set(t,e)}(t,a),r}function os(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){es.delete(t),es.size||window.removeEventListener("resize",ss)}(t)}function as(t,i,s){const n=t.canvas,o=e((e=>{null!==t.ctx&&s(function(t,e){const i=qi[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,Gi)}(n,i,o),o}class rs extends Ui{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",Ki(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(Ki(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const s=i[t];$(s)?e.removeAttribute(t):e.setAttribute(t,s)}));const s=i.style||{};return Object.keys(s).forEach((t=>{e.style[t]=s[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:Qi,detach:ts,resize:ns}[e]||as;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:os,detach:os,resize:os}[e]||Zi)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=pe(t);return!(!e||!e.isConnected)}}function ls(t){return!ge()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Xi:rs}var hs=Object.freeze({__proto__:null,_detectPlatform:ls,BasePlatform:Ui,BasicPlatform:Xi,DomPlatform:rs});const cs="transparent",ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=W(t||cs),n=s.valid&&W(e||cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class us{constructor(t,e,i,s){const n=e[i];s=je([t.to,s,n,t.from]);const o=je([t.from,n,s]);this._active=!0,this._fn=t.fn||ds[t.type||typeof o],this._easing=Ci[t.easing]||Ci.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=je([t.to,e,s,t.from]),this._from=je([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),bt.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),bt.describe("animations",{_fallback:"animation"}),bt.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}});class gs{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!U(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const s=t[i];if(!U(s))return;const n={};for(const t of fs)n[t]=s[t];(Y(s.properties)&&s.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,n)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new us(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(a.add(this._chart,i),!0):void 0}}function ps(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function ms(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ms(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i]}}}const ks=t=>"reset"===t||"none"===t,Ss=(t,e)=>e?t:Object.assign({},t);class Ps{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=bs(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Ms(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=K(i.xAxisID,ws(t,"x")),o=e.yAxisID=K(i.yAxisID,ws(t,"y")),a=e.rAxisID=K(i.rAxisID,ws(t,"r")),r=e.indexAxis,l=e.iAxisID=s(r,n,o,a),h=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&ue(this._data,this),t._stacked&&Ms(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(U(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,h=s;else{h=Y(s[t])?this.parseArrayData(i,s,t,e):U(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const n=()=>null===l[a]||d&&l[a]t&&!e.hidden&&e._stacked&&{keys:ms(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:c}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(a);let d,u;function f(){u=s[d];const e=u[a.axis];return!X(u[t.axis])||h>e||c=0;--d)if(!f()){this.updateRangeFromParsed(l,t,u,r);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ss(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new gs(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ks(t)||this.chart._animationsDisabled}updateElement(t,e,i,s){ks(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!ks(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}Ds.defaults={},Ds.defaultRoutes=void 0;const Cs={values:t=>Y(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=Dt(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Ri(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=t/Math.pow(10,Math.floor(Dt(t)));return 1===s||2===s||5===s?Cs.numeric.call(this,t,e,i):""}};var Os={formatters:Cs};function As(t,e){const i=t.options.ticks,s=i.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),n=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;is)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(n,e,s);if(o>0){let t,i;const s=o>1?Math.round((r-a)/(o-1)):null;for(Ts(e,l,h,$(s)?0:a-s,a),t=0,i=o-1;te.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Os.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),bt.route("scale.ticks","color","","color"),bt.route("scale.grid","color","","borderColor"),bt.route("scale.grid","borderColor","","borderColor"),bt.route("scale.title","color","","color"),bt.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t}),bt.describe("scales",{_fallback:"scale"}),bt.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t});const Ls=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function Rs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Is(t){return t.drawTicks?t.tickLength:0}function zs(t,e){if(!t.display)return 0;const i=He(t.font,e),s=Ne(t.padding);return(Y(t.text)?t.text.length:1)*i.lineHeight+s.height}function Fs(t,e,i){let n=s(t);return(i&&"right"!==e||!i&&"right"===e)&&(n=(t=>"left"===t?"right":"right"===t?"left":t)(n)),n}class Bs extends Ds{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),i=q(i,Number.POSITIVE_INFINITY),s=q(s,Number.NEGATIVE_INFINITY),{min:q(t,i),max:q(e,s),minDefined:X(t),maxDefined:X(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:q(i,q(s,i)),max:q(s,q(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){J(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=$e(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=jt(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Is(t.grid)-e.padding-zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=zt(Math.min(Math.asin(jt((h.highest.height+6)/o,-1,1)),Math.asin(jt(a/r,-1,1))-Math.asin(jt(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){J(this.options.afterCalculateLabelRotation,[this])}beforeFit(){J(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Is(n)+o):(t.height=this.maxHeight,t.width=Is(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=It(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){J(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:n[t]||0,height:o[t]||0});return{first:v(0),last:v(e-1),widest:v(_),highest:v(y),widths:n,heights:o}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return $t(this._alignToPixels?Kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:o}=s,a=n.offset,r=this.isHorizontal(),l=this.ticks.length+(a?1:0),h=Is(n),c=[],d=n.setContext(this.getContext()),u=d.drawBorder?d.borderWidth:0,f=u/2,g=function(t){return Kt(i,t,u)};let p,m,x,b,_,y,v,w,M,k,S,P;if("top"===o)p=g(this.bottom),y=this.bottom-h,w=p-f,k=g(t.top)+f,P=t.bottom;else if("bottom"===o)p=g(this.top),k=t.top,P=g(t.bottom)-f,y=p+f,w=this.top+h;else if("left"===o)p=g(this.right),_=this.right-h,v=p-f,M=g(t.left)+f,S=t.right;else if("right"===o)p=g(this.left),M=t.left,S=g(t.right)-f,_=p+f,v=this.left+h;else if("x"===e){if("center"===o)p=g((t.top+t.bottom)/2+.5);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}k=t.top,P=t.bottom,y=p+f,w=y+h}else if("y"===e){if("center"===o)p=g((t.left+t.right)/2);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}_=p-f,v=_-h,M=t.left,S=t.right}const D=K(s.ticks.maxTicksLimit,l),C=Math.max(1,Math.ceil(l/D));for(m=0;me.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");bt.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&bt.describe(e,t.descriptors)}(t,o,i),this.override&&bt.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in bt[s]&&(delete bt[s][i],this.override&&delete gt[i])}}var Ws=new class{constructor(){this.controllers=new Vs(Ps,"datasets",!0),this.elements=new Vs(Ds,"elements"),this.plugins=new Vs(Object,"plugins"),this.scales=new Vs(Bs,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):Q(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=ht(t);J(i["before"+s],[],i),e[t](i),J(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function Hs(t,e){return e||!1!==t?!0===t?{}:t:null}function js(t,e,i,s){const n=t.pluginScopeKeys(e),o=t.getOptionScopes(i,n);return t.createResolver(o,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function $s(t,e){const i=bt.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Ys(t,e){return"x"===t||"y"===t?t:e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.charAt(0).toLowerCase();var i}function Us(t){const e=t.options||(t.options={});e.plugins=K(e.plugins,{}),e.scales=function(t,e){const i=gt[t.type]||{scales:{}},s=e.scales||{},n=$s(t.type,e),o=Object.create(null),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!U(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=Ys(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,n),h=i.scales||{};o[r]=o[r]||t,a[t]=ot(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,r=i.indexAxis||$s(n,e),l=(gt[n]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||o[e]||e;a[n]=a[n]||Object.create(null),ot(a[n],[{axis:e},s[n],l[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];ot(e,[bt.scales[e.type],bt.scale])})),a}(t,e)}function Xs(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const qs=new Map,Ks=new Set;function Gs(t,e){let i=qs.get(t);return i||(i=e(),qs.set(t,i),Ks.add(i)),i}const Zs=(t,e,i)=>{const s=lt(e,i);void 0!==s&&t.add(s)};class Js{constructor(t){this._config=function(t){return(t=t||{}).data=Xs(t.data),Us(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Xs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Us(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Gs(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Gs(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Gs(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return Gs(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Zs(r,t,e)))),e.forEach((t=>Zs(r,s,t))),e.forEach((t=>Zs(r,gt[n]||{},t))),e.forEach((t=>Zs(r,bt,t))),e.forEach((t=>Zs(r,pt,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),Ks.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,gt[e]||{},bt.datasets[e]||{},{type:e},bt,pt]}resolveNamedOptions(t,e,i,s=[""]){const n={$shared:!0},{resolver:o,subPrefixes:a}=Qs(this._resolverCache,t,s);let r=o;if(function(t,e){const{isScriptable:i,isIndexable:s}=ri(t);for(const n of e){const e=i(n),o=s(n),a=(o||e)&&t[n];if(e&&(dt(a)||tn(a))||o&&Y(a))return!0}return!1}(o,e)){n.$shared=!1;r=ai(o,i=dt(i)?i():i,this.createResolver(t,i,a))}for(const t of e)n[t]=r[t];return n}createResolver(t,e,i=[""],s){const{resolver:n}=Qs(this._resolverCache,t,i);return U(e)?ai(n,e,void 0,s):n}}function Qs(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:oi(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const tn=t=>U(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||dt(t[i])),!1);const en=["top","bottom","left","right","chartArea"];function sn(t,e){return"top"===t||"bottom"===t||-1===en.indexOf(t)&&"x"===e}function nn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function on(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),J(i&&i.onComplete,[t],e)}function an(t){const e=t.chart,i=e.options.animation;J(i&&i.onProgress,[t],e)}function rn(t){return ge()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const ln={},hn=t=>{const e=rn(t);return Object.values(ln).filter((t=>t.canvas===e)).pop()};function cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class dn{constructor(t,e){const s=this.config=new Js(e),n=rn(t),o=hn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas can be reused.");const r=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ls(n)),this.platform.updateConfig(s);const l=this.platform.acquireContext(n,r.aspectRatio),h=l&&l.canvas,c=h&&h.height,d=h&&h.width;this.id=j(),this.ctx=l,this.canvas=h,this.width=d,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ns,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=i((t=>this.update(t)),r.resizeDelay||0),this._dataChanges=[],ln[this.id]=this,l&&h?(a.listen(this,"complete",on),a.listen(this,"progress",an),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:n}=this;return $(t)?e&&n?n:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Gt(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),J(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){Q(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=Ys(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),Q(n,(e=>{const n=e.options,o=n.id,a=Ys(o,n),r=K(n.type,e.dtype);void 0!==n.position&&sn(n.position,a)===sn(e.dposition)||(n.position=e.dposition),s[o]=!0;let l=null;if(o in i&&i[o].type===r)l=i[o];else{l=new(Ws.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)})),Q(s,((t,e)=>{t||delete i[e]})),Q(i,(t=>{ni.configure(this,t,t.options),ni.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(nn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){Q(this.scales,(t=>{ni.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);ut(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){cn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ni.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],Q(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Qt(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&te(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}getElementsAtEventForMode(t,e,i,s){const n=Ee.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ye(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);ct(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),a.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};Q(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){Q(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},Q(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!tt(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:Jt(t,this.chartArea,this._minPadding)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=ft(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,J(n.onHover,[t,a,this],this),r&&J(n.onClick,[t,a,this],this));const h=!tt(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}const un=()=>Q(dn.instances,(t=>t._plugins.invalidate())),fn=!0;function gn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}Object.defineProperties(dn,{defaults:{enumerable:fn,value:bt},instances:{enumerable:fn,value:ln},overrides:{enumerable:fn,value:gt},registry:{enumerable:fn,value:Ws},version:{enumerable:fn,value:"3.7.0"},getChart:{enumerable:fn,value:hn},register:{enumerable:fn,value:(...t)=>{Ws.add(...t),un()}},unregister:{enumerable:fn,value:(...t)=>{Ws.remove(...t),un()}}});class pn{constructor(t){this.options=t||{}}formats(){return gn()}parse(t,e){return gn()}format(t,e){return gn()}add(t,e,i){return gn()}diff(t,e,i){return gn()}startOf(t,e,i){return gn()}endOf(t,e){return gn()}}pn.override=function(t){Object.assign(pn.prototype,t)};var mn={_date:pn};function xn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(ct(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function _n(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base=i?1:-1)}(c,e,o)*n,d===o&&(p-=c/2),h=p+c),p===e.getPixelForValue(o)){const t=Ct(c)*e.getLineWidthForValue(o)/2;p+=t,c-=t}return{size:c,base:p,head:h,center:h+c/2}}_calculateBarIndexPixels(t,e){const i=e.scale,s=this.options,n=s.skipNull,o=K(s.maxBarThickness,1/0);let a,r;if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,l="flex"===s.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:s}=e,n=this.getParsed(t),o=i.getLabelForValue(n.x),a=s.getLabelForValue(n.y),r=n._custom;return{label:e.label,value:"("+o+", "+a+(r?", "+r:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,r=this.resolveDataElementOptions(e,s),l=this.getSharedOptions(r),h=this.includeOptions(s,l),c=o.axis,d=a.axis;for(let r=e;r""}}}};class Dn extends Ps{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,o,a=t=>+i[t];if(U(i[t])){const{key:t="value"}=this._parsing;a=e=>+lt(i[e],t)}for(n=t,o=t+e;nHt(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Ht(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(kt,c,u),x=g(_t,h,d),b=g(_t+kt,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(c,h,r),p=(i.width-o)/d,m=(i.height-o)/u,x=Math.max(Math.min(p,m)/2,0),b=Z(this.options.radius,x),_=(b-Math.max(b*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=f*b,this.offsetY=g*b,s.total=this.calculateTotal(),this.outerRadius=b-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/yt)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,f=this.resolveDataElementOptions(e,s),g=this.getSharedOptions(f),p=this.includeOptions(s,g);let m,x=this._getRotation();for(m=0;m0&&!isNaN(t)?yt*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s"spacing"!==t,_indexable:t=>"spacing"!==t},Dn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label(t){let e=t.label;const i=": "+t.formattedValue;return Y(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class Cn extends Ps{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=function(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=jt(Math.min(re(r,a.axis,h).lo,i?s:re(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?jt(Math.max(re(r,a.axis,c).hi+1,i?0:re(e,l,a.getPixelForValue(c)).hi+1),n,s)-n:s-n}return{start:n,count:o}}(e,s,o);this._drawStart=a,this._drawCount=r,function(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a,_stacked:r,_dataset:l}=this._cachedMeta,h=this.resolveDataElementOptions(e,s),c=this.getSharedOptions(h),d=this.includeOptions(s,c),u=o.axis,f=a.axis,{spanGaps:g,segment:p}=this.options,m=Tt(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||n||"none"===s;let b=e>0&&this.getParsed(e-1);for(let h=e;h0&&i[u]-b[u]>m,p&&(g.parsed=i,g.raw=l.data[h]),d&&(g.options=c||this.resolveDataElementOptions(h,e.active?"active":s)),x||this.updateElement(e,h,g,s),b=i}this.updateSharedOptions(c,s,h)}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}Cn.id="line",Cn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},Cn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class On extends Ps{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=this.getDataset(),r=o.options.animation,l=this._cachedMeta.rScale,h=l.xCenter,c=l.yCenter,d=l.getIndexAngle(0)-.5*_t;let u,f=d;const g=360/this.countVisibleElements();for(u=0;u{!isNaN(t.data[s])&&this.chart.getDataVisibility(s)&&i++})),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?It(this.resolveDataElementOptions(t,e).angle||i):0}}On.id="polarArea",On.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},On.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label:t=>t.chart.data.labels[t.dataIndex]+": "+t.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class An extends Dn{}An.id="pie",An.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Tn extends Ps{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this.getDataset(),o=this._cachedMeta.rScale,a="reset"===s;for(let r=e;r"",label:t=>"("+t.label+", "+t.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var Rn=Object.freeze({__proto__:null,BarController:Sn,BubbleController:Pn,DoughnutController:Dn,LineController:Cn,PolarAreaController:On,PieController:An,RadarController:Tn,ScatterController:Ln});function En(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+kt,s-kt),t.closePath(),t.clip()}function In(t,e,i,s){const n=Be(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return jt(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:jt(n.innerStart,0,a),innerEnd:jt(n.innerEnd,0,a)}}function zn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Fn(t,e,i,s,n){const{x:o,y:a,startAngle:r,pixelMargin:l,innerRadius:h}=e,c=Math.max(e.outerRadius+s+i-l,0),d=h>0?h+s+i+l:0;let u=0;const f=n-r;if(s){const t=((h>0?h-s:0)+(c>0?c-s:0))/2;u=(f-(0!==t?f*t/(t+s):f))/2}const g=(f-Math.max(.001,f*c-i/_t)/c)/2,p=r+g+u,m=n-g-u,{outerStart:x,outerEnd:b,innerStart:_,innerEnd:y}=In(e,d,c,m-p),v=c-x,w=c-b,M=p+x/v,k=m-b/w,S=d+_,P=d+y,D=p+_/S,C=m-y/P;if(t.beginPath(),t.arc(o,a,c,M,k),b>0){const e=zn(w,k,o,a);t.arc(e.x,e.y,b,k,m+kt)}const O=zn(P,m,o,a);if(t.lineTo(O.x,O.y),y>0){const e=zn(P,C,o,a);t.arc(e.x,e.y,y,m+kt,C+Math.PI)}if(t.arc(o,a,d,m-y/d,p+_/d,!0),_>0){const e=zn(S,D,o,a);t.arc(e.x,e.y,_,D+Math.PI,p-kt)}const A=zn(v,p,o,a);if(t.lineTo(A.x,A.y),x>0){const e=zn(v,M,o,a);t.arc(e.x,e.y,x,p-kt,M)}t.closePath()}function Bn(t,e,i,s,n){const{options:o}=e,{borderWidth:a,borderJoinStyle:r}=o,l="inner"===o.borderAlign;a&&(l?(t.lineWidth=2*a,t.lineJoin=r||"round"):(t.lineWidth=a,t.lineJoin=r||"bevel"),e.fullCircles&&function(t,e,i){const{x:s,y:n,startAngle:o,pixelMargin:a,fullCircles:r}=e,l=Math.max(e.outerRadius-a,0),h=e.innerRadius+a;let c;for(i&&En(t,e,o+yt),t.beginPath(),t.arc(s,n,h,o+yt,o,!0),c=0;c=yt||Ht(n,a,r),f=Yt(o,l+d,h+d);return u&&f}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/2,n=(e.spacing||0)/2;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>yt?Math.floor(i/yt):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let o=0;if(s){o=s/2;const e=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(e)*o,Math.sin(e)*o),this.circumference>=_t&&(o=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;const a=function(t,e,i,s){const{fullCircles:n,startAngle:o,circumference:a}=e;let r=e.endAngle;if(n){Fn(t,e,i,s,o+yt);for(let e=0;er&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function Yn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?$n:jn}Vn.id="arc",Vn.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},Vn.defaultRoutes={backgroundColor:"backgroundColor"};const Un="function"==typeof Path2D;function Xn(t,e,i,s){Un&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Wn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=Yn(e);for(const r of n)Wn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class qn extends Ds{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;ki(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ni(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Wi(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?Ai:t.tension||"monotone"===t.cubicInterpolationMode?Ti:Oi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t&&"fill"!==t};class Gn extends Ds{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2){oo(t)}))}var ro={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void ao(t);const s=t.width;t.data.datasets.forEach(((e,n)=>{const{_data:o,indexAxis:a}=e,r=t.getDatasetMeta(n),l=o||e.data;if("y"===je([a,t.options.indexAxis]))return;if("line"!==r.type)return;const h=t.scales[r.xAxisID];if("linear"!==h.type&&"time"!==h.type)return;if(t.options.parsing)return;let{start:c,count:d}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=jt(re(e,o.axis,a).lo,0,i-1)),s=h?jt(re(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(r,l);if(d<=(i.threshold||4*s))return void oo(e);let u;switch($(o)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(l,c,d,s,i);break;case"min-max":u=function(t,e,i,s){let n,o,a,r,l,h,c,d,u,f,g=0,p=0;const m=[],x=e+i-1,b=t[e].x,_=t[x].x-b;for(n=e;nf&&(f=r,c=n),g=(p*g+o.x)/++p;else{const i=n-1;if(!$(h)&&!$(c)){const e=Math.min(h,c),s=Math.max(h,c);e!==d&&e!==i&&m.push({...t[e],x:g}),s!==d&&s!==i&&m.push({...t[s],x:g})}n>0&&i!==d&&m.push(t[i]),m.push(o),l=e,p=0,u=f=r,h=c=d=n}}return m}(l,c,d,s);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u}))},destroy(t){ao(t)}};function lo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=K(i&&i.target,i);return void 0===s&&(s=!!e.backgroundColor),!1!==s&&null!==s&&(!0===s?"origin":s)}(t);if(U(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return X(n)&&Math.floor(n)===n?("-"!==s[0]&&"+"!==s[0]||(n=e+n),!(n===e||n<0||n>=i)&&n):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}class ho{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:yt},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function co(t){return(t.scale||{}).getPointPositionForValue?function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,o=[],a=s.reverse?e.max:e.min,r=s.reverse?e.min:e.max;let l,h,c;if(c="start"===i?a:"end"===i?r:U(i)?i.value:e.getBaseValue(),s.grid.circular)return h=e.getPointPositionForValue(0,a),new ho({x:h.x,y:h.y,radius:e.getDistanceFromCenterForValue(c)});for(l=0;lt;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function fo(t,e,i){const s=[];for(let n=0;n{e=uo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new qn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function xo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!X(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function bo(t,e,i){t.beginPath(),e.path(t),t.lineTo(e.last().x,i),t.lineTo(e.first().x,i),t.closePath(),t.clip()}function _o(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=Nt(n),o=Nt(o)),{property:t,start:n,end:o}}function yo(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function vo(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};"x"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function wo(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}function Mo(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=uo(s,r,n);const l=_o(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Wi(e,l);for(const e of h){const s=_o(i,o[e.start],o[e.end],e.loop),r=Vi(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:yo(l,s,"start",Math.max)},end:{[i]:yo(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,vo(t,a,d&&_o(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():wo(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||wo(t,s,h,n)}t.closePath(),t.fill(f?"evenodd":"nonzero"),t.restore()}}function ko(t,e,i){const s=po(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Qt(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&o!==n&&(bo(t,s,a.top),Mo(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),bo(t,s,a.bottom)),Mo(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),te(t))}var So={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&ko(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;i&&ko(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;s&&!1!==s.fill&&"beforeDatasetDraw"===i.drawTime&&ko(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Po=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class Do extends Ds{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=J(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=He(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=Po(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,n,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const p=i+e/2+n.measureText(t.text).width;o>0&&u+s+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:s},d=Math.max(d,p),u+=s+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:o}}=this,a=Ei(o,this.left,this.width);if(this.isHorizontal()){let o=0,r=n(i,this.left+s,this.right-this.lineWidths[o]);for(const l of e)o!==l.row&&(o=l.row,r=n(i,this.left+s,this.right-this.lineWidths[o])),l.top+=this.top+t+s,l.left=a.leftForLtr(a.x(r),l.width),r+=l.width+s}else{let o=0,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height);for(const l of e)l.col!==o&&(o=l.col,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height)),l.top=r,l.left+=this.left+s,l.left=a.leftForLtr(a.x(l.left),l.width),r+=l.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Qt(t,this),this._draw(),te(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:a,labels:r}=t,l=bt.color,h=Ei(t.rtl,this.left,this.width),c=He(r.font),{color:d,padding:u}=r,f=c.size,g=f/2;let p;this.drawTitle(),s.textAlign=h.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:m,boxHeight:x,itemHeight:b}=Po(r,f),_=this.isHorizontal(),y=this._computeTitleHeight();p=_?{x:n(a,this.left+u,this.right-i[0]),y:this.top+u+y,line:0}:{x:this.left+u,y:n(a,this.top+y+u,this.bottom-e[0].height),line:0},Ii(this.ctx,t.textDirection);const v=b+u;this.legendItems.forEach(((w,M)=>{s.strokeStyle=w.fontColor||d,s.fillStyle=w.fontColor||d;const k=s.measureText(w.text).width,S=h.textAlign(w.textAlign||(w.textAlign=r.textAlign)),P=m+g+k;let D=p.x,C=p.y;h.setWidth(this.width),_?M>0&&D+P+u>this.right&&(C=p.y+=v,p.line++,D=p.x=n(a,this.left+u,this.right-i[p.line])):M>0&&C+v>this.bottom&&(D=p.x=D+e[p.line].width+u,p.line++,C=p.y=n(a,this.top+y+u,this.bottom-e[p.line].height));!function(t,e,i){if(isNaN(m)||m<=0||isNaN(x)||x<0)return;s.save();const n=K(i.lineWidth,1);if(s.fillStyle=K(i.fillStyle,l),s.lineCap=K(i.lineCap,"butt"),s.lineDashOffset=K(i.lineDashOffset,0),s.lineJoin=K(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=K(i.strokeStyle,l),s.setLineDash(K(i.lineDash,[])),r.usePointStyle){const o={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},a=h.xPlus(t,m/2);Zt(s,o,a,e+g)}else{const o=e+Math.max((f-x)/2,0),a=h.leftForLtr(t,m),r=We(i.borderRadius);s.beginPath(),Object.values(r).some((t=>0!==t))?oe(s,{x:a,y:o,w:m,h:x,radius:r}):s.rect(a,o,m,x),s.fill(),0!==n&&s.stroke()}s.restore()}(h.x(D),C,w),D=o(S,D+m+g,_?D+P:this.right,t.rtl),function(t,e,i){se(s,i.text,t,e+b/2,c,{strikethrough:i.hidden,textAlign:h.textAlign(i.textAlign)})}(h.x(D),C,w),_?p.x+=P+u:p.y+=v})),zi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=He(e.font),o=Ne(e.padding);if(!e.display)return;const a=Ei(t.rtl,this.left,this.width),r=this.ctx,l=e.position,h=i.size/2,c=o.top+h;let d,u=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),d=this.top+c,u=n(t.align,u,this.right-f);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);d=c+n(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const g=n(l,u,u+f);r.textAlign=a.textAlign(s(l)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=i.string,se(r,e.text,g,d,i)}_computeTitleHeight(){const t=this.options.title,e=He(t.font),i=Ne(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(Yt(t,this.left,this.right)&&Yt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const a=t.controller.getStyle(i?0:void 0),r=Ne(a.borderWidth);return{text:e[t.index].label,fillStyle:a.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(r.width+r.height)/4,strokeStyle:a.borderColor,pointStyle:s||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Oo extends Ds{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=Y(i.text)?i.text.length:1;this._padding=Ne(i.padding);const n=s*He(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:o,options:a}=this,r=a.align;let l,h,c,d=0;return this.isHorizontal()?(h=n(r,i,o),c=e+t,l=o-i):("left"===a.position?(h=i+t,c=n(r,s,e),d=-.5*_t):(h=o-t,c=n(r,e,s),d=.5*_t),l=s-e),{titleX:h,titleY:c,maxWidth:l,rotation:d}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=He(e.font),n=i.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:r,rotation:l}=this._drawArgs(n);se(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:l,textAlign:s(e.align),textBaseline:"middle",translation:[o,a]})}}var Ao={id:"title",_element:Oo,start(t,e,i){!function(t,e){const i=new Oo({ctx:t.ctx,options:e,chart:t});ni.configure(t,i,e),ni.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ni.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const To=new WeakMap;var Lo={id:"subtitle",start(t,e,i){const s=new Oo({ctx:t.ctx,options:i,chart:t});ni.configure(t,s,i),ni.addBox(t,s),To.set(t,s)},stop(t){ni.removeBox(t,To.get(t)),To.delete(t)},beforeUpdate(t,e,i){const s=To.get(t);ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Ro={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function zo(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Fo(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=He(e.bodyFont),h=He(e.titleFont),c=He(e.footerFont),d=o.length,u=n.length,f=s.length,g=Ne(e.padding);let p=g.height,m=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(p+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){p+=f*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-f)*l.lineHeight+(x-1)*e.bodySpacing}u&&(p+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let b=0;const _=function(t){m=Math.max(m,i.measureText(t).width+b)};return i.save(),i.font=h.string,Q(t.title,_),i.font=l.string,Q(t.beforeBody.concat(t.afterBody),_),b=e.displayColors?a+2+e.boxPadding:0,Q(s,(t=>{Q(t.before,_),Q(t.lines,_),Q(t.after,_)})),b=0,i.font=c.string,Q(t.footer,_),i.restore(),m+=g.width,{width:m,height:p}}function Bo(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Vo(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Bo(t,e,i,s),yAlign:s}}function Wo(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=We(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:jt(g,0,s.width-e.width),y:jt(p,0,s.height-e.height)}}function No(t,e,i){const s=Ne(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ho(t){return Eo([],Io(t))}function jo(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class $o extends Ds{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new gs(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ye(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),n=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}getBeforeBody(t,e){return Ho(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:i}=e,s=[];return Q(t,(t=>{const e={before:[],lines:[],after:[]},n=jo(i,t);Eo(e.before,Io(n.beforeLabel.call(this,t))),Eo(e.lines,n.label.call(this,t)),Eo(e.after,Io(n.afterLabel.call(this,t))),s.push(e)})),s}getAfterBody(t,e){return Ho(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),n=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),Q(l,(e=>{const i=jo(t.callbacks,e);s.push(i.labelColor.call(this,e)),n.push(i.labelPointStyle.call(this,e)),o.push(i.labelTextColor.call(this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Ro[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Fo(this,i),a=Object.assign({},t,e),r=Vo(this.chart,i,a),l=Wo(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=We(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Ei(i.rtl,this.x,this.width);for(t.x=No(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=He(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,oe(t,{x:e,y:g,w:l,h:r,radius:a}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),oe(t,{x:i,y:g+1,w:l-2,h:r-2,radius:a}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,l,r),t.strokeRect(e,g,l,r),t.fillStyle=o.backgroundColor,t.fillRect(i,g+1,l-2,r-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=He(i.bodyFont);let d=c.lineHeight,u=0;const f=Ei(i.rtl,this.x,this.width),g=function(i){e.fillText(i,f.x(t.x+u),t.y+d/2),t.y+=d+n},p=f.textAlign(o);let m,x,b,_,y,v,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=No(this,p,i),e.fillStyle=i.bodyColor,Q(this.beforeBody,g),u=a&&"right"!==p?"center"===o?l/2+h:l+2+h:0,_=0,v=s.length;_0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Ro[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Fo(this,t),a=Object.assign({},i,this._size),r=Vo(e,t,a),l=Wo(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Ne(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ii(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),zi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!tt(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!tt(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Ro[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}$o.positioners=Ro;var Yo={id:"tooltip",_element:$o,positioners:Ro,afterInit(t,e,i){i&&(t.tooltip=new $o({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip,i={tooltip:e};!1!==t.notifyPlugins("beforeTooltipDraw",i)&&(e&&e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i))},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:H,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Uo=Object.freeze({__proto__:null,Decimation:ro,Filler:So,Legend:Co,SubTitle:Lo,Title:Ao,Tooltip:Yo});function Xo(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}class qo extends Bs{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if($(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:jt(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:Xo(i,t,K(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function Ko(t,e,{horizontal:i,minRotation:s}){const n=It(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}qo.id="category",qo.defaults={ticks:{callback:qo.prototype.getLabelForValue}};class Go extends Bs{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return $(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=Ct(s),e=Ct(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=1;(n>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(e=Math.abs(.05*n)),a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function(t,e){const i=[],{bounds:s,step:n,min:o,max:a,precision:r,count:l,maxTicks:h,maxDigits:c,includeBounds:d}=t,u=n||1,f=h-1,{min:g,max:p}=e,m=!$(o),x=!$(a),b=!$(l),_=(p-g)/(c+1);let y,v,w,M,k=Ot((p-g)/f/u)*u;if(k<1e-14&&!m&&!x)return[{value:g},{value:p}];M=Math.ceil(p/k)-Math.floor(g/k),M>f&&(k=Ot(M*k/f/u)*u),$(r)||(y=Math.pow(10,r),k=Math.ceil(k*y)/y),"ticks"===s?(v=Math.floor(g/k)*k,w=Math.ceil(p/k)*k):(v=g,w=p),m&&x&&n&&Rt((a-o)/n,k/1e3)?(M=Math.round(Math.min((a-o)/k,h)),k=(a-o)/M,v=o,w=a):b?(v=m?o:v,w=x?a:w,M=l-1,k=(w-v)/M):(M=(w-v)/k,M=Lt(M,Math.round(M),k/1e3)?Math.round(M):Math.ceil(M));const S=Math.max(Ft(k),Ft(v));y=Math.pow(10,$(r)?S:r),v=Math.round(v*y)/y,w=Math.round(w*y)/y;let P=0;for(m&&(d&&v!==o?(i.push({value:o}),v0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=X(t)?Math.max(0,t):null,this.max=X(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t,a=(t,e)=>Math.pow(10,Math.floor(Dt(t))+e);i===s&&(i<=0?(n(1),o(10)):(n(a(i,-1)),o(a(s,1)))),i<=0&&n(a(s,-1)),s<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&n(a(i,-1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=function(t,e){const i=Math.floor(Dt(e.max)),s=Math.ceil(e.max/Math.pow(10,i)),n=[];let o=q(t.min,Math.pow(10,Math.floor(Dt(e.min)))),a=Math.floor(Dt(o)),r=Math.floor(o/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{n.push({value:o,major:Jo(o)}),++r,10===r&&(r=1,++a,l=a>=0?1:l),o=Math.round(r*Math.pow(10,a)*l)/l}while(an?{start:e-i,end:e}:{start:e,end:e+i}}function ia(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],n=[],o=t._pointLabels.length,a=t.options.pointLabels,r=a.centerPointLabels?_t/o:0;for(let d=0;de.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function na(t){return 0===t||180===t?"center":t<180?"left":"right"}function oa(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function aa(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function ra(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,yt);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o{const i=J(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?ia(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return Nt(t*(yt/(this._pointLabels.length||1))+It(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if($(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if($(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=s.setContext(t.getPointLabelContext(n)),o=He(e.font),{x:a,y:r,textAlign:l,left:h,top:c,right:d,bottom:u}=t._pointLabelItems[n],{backdropColor:f}=e;if(!$(f)){const t=Ne(e.backdropPadding);i.fillStyle=f,i.fillRect(h-t.left,c-t.top,d-h+t.width,u-c+t.height)}se(i,t._pointLabels[n],a,r+o.lineHeight/2,o,{color:e.color,textAlign:l,textBaseline:"middle"})}}(this,n),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e){a=this.getDistanceFromCenterForValue(t.value);!function(t,e,i,s){const n=t.ctx,o=e.circular,{color:a,lineWidth:r}=e;!o&&!s||!a||!r||i<0||(n.save(),n.strokeStyle=a,n.lineWidth=r,n.setLineDash(e.borderDash),n.lineDashOffset=e.borderDashOffset,n.beginPath(),ra(t,i,o,s),n.closePath(),n.stroke(),n.restore())}(this,s.setContext(this.getContext(e-1)),a,n)}})),i.display){for(t.save(),o=n-1;o>=0;o--){const s=i.setContext(this.getPointLabelContext(o)),{color:n,lineWidth:l}=s;l&&n&&(t.lineWidth=l,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,a=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),r=this.getPointPosition(o,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(r.x,r.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=He(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Ne(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}se(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}la.id="radialLinear",la.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Os.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}},la.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},la.descriptors={angleLines:{_fallback:"grid"}};const ha={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ca=Object.keys(ha);function da(t,e){return t-e}function ua(t,e){if($(e))return null;const i=t._adapter,{parser:s,round:n,isoWeekday:o}=t._parseOpts;let a=e;return"function"==typeof s&&(a=s(a)),X(a)||(a="string"==typeof s?i.parse(a,s):i.parse(a)),null===a?null:(n&&(a="week"!==n||!Tt(o)&&!0!==o?i.startOf(a,n):i.startOf(a,"isoWeek",o)),+a)}function fa(t,e,i,s){const n=ca.length;for(let o=ca.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function pa(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class ma extends Bs{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const i=t.time||(t.time={}),s=this._adapter=new mn._date(t.adapters.date);ot(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:ua(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:a}=this.getUserBounds();function r(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),a||isNaN(t.max)||(n=Math.max(n,t.max))}o&&a||(r(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||r(this.getMinMax(!1))),s=X(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=X(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=he(s,n,this.max);return this._unit=e.unit||(i.autoSkip?fa(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=ca.length-1;o>=ca.indexOf(i);o--){const i=ca[o];if(ha[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return ca[i?ca.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=ca.indexOf(t)+1,i=ca.length;e1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const f="data"===s.ticks.source&&this.getDataTimestamps();for(c=u,d=0;ct-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.time.displayFormats,a=this._unit,r=this._majorUnit,l=a&&o[a],h=r&&o[r],c=i[e],d=r&&h&&c&&c.major,u=this._adapter.format(t,s||(d?h:l)),f=n.ticks.callback;return f?J(f,[u,e,i],this):u}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=re(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=re(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}ma.id="time",ma.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class ba extends ma{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=xa(e,this.min),this._tableRange=xa(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o - Word count: - - -   - - Character count: - -`; - -class WordCountWidget extends api.NoteContextAwareWidget { - get position() { return 100; } // higher value means position towards the bottom/right - - get parentWidget() { return 'center-pane'; } - - isEnabled() { - return super.isEnabled() - && this.note.type === 'text' - && this.note.hasLabel('wordCount'); - } - - doRender() { - this.$widget = $(TPL); - this.$wordCount = this.$widget.find('.word-count'); - this.$characterCount = this.$widget.find('.character-count'); - return this.$widget; - } - - async refreshWithNote(note) { - const {content} = await note.getNoteComplement(); - - const text = $(content).text(); // get plain text only - - const counts = this.getCounts(text); - - this.$wordCount.text(counts.words); - this.$characterCount.text(counts.characters); - } - - getCounts(text) { - const chunks = text - .split(/[\s-+:,/\\]+/) - .filter(chunk => chunk !== ''); - - let words; - - if (chunks.length === 1 && chunks[0] === '') { - words = 0; - } - else { - words = chunks.length; - } - - const characters = chunks.join('').length; - - return {words, characters}; - } - - async entitiesReloadedEvent({loadResults}) { - if (loadResults.isNoteContentReloaded(this.noteId)) { - this.refresh(); - } - } -} - -module.exports = new WordCountWidget(); \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Steel Blue.css b/demo/Home/Trilium Demo/Steel Blue.css deleted file mode 100644 index 56f3dec40..000000000 --- a/demo/Home/Trilium Demo/Steel Blue.css +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This is a demo of how you can create custom theme for Trilium. You can activate it by going - * into options (top-right corner) in first tab "Appearance". - * - * You can read some details on theming here: http://github.com/zadam/trilium/wiki/Themes - */ - -@font-face { /* This will be used as main UI font (see below) */ - font-family: 'Raleway'; - font-style: normal; - font-weight: 400; - src: url('../../../custom/fonts/raleway.woff2') format('woff2'); -} - -@font-face { /* This will be used as text content font (see below) */ - font-family: 'Garamond'; - font-style: normal; - font-weight: 400; - src: url('../../../custom/fonts/garamond.woff2') format('woff2'); -} - -:root { - --theme-style: light; - - --main-font-family: 'Raleway'; - --main-font-size: normal; - - --tree-font-family: 'Raleway'; - --tree-font-size: normal; - - --detail-font-family: 'Raleway'; - --detail-font-size: normal; - - --monospace-font-family: 'Monospace'; - --monospace-font-size: normal; - - --main-background-color: #404552; - --main-text-color: #AFB8C6; - --main-border-color: #AFB8C6; - - --accented-background-color: #383C4A; - --more-accented-background-color: #2F343F; - - --button-text-color: #AFB8C6; - --button-background-color: #2F343F; - --button-disabled-text-color: #86919F; - --button-disabled-background-color: #404552; - --button-border-color: #333; - --button-border-radius: 2px; - - --primary-button-background-color: #6c757d; - --primary-button-text-color: white; - --primary-button-border-color: #6c757d; - - --muted-text-color: #86919F; - - --input-text-color: #AFB8C6; - --input-background-color: #404552; - - --hover-item-text-color: white; - --hover-item-background-color: #4877B1; - - --active-item-text-color: white; - --active-item-background-color: #4877B1; - - --menu-text-color: #AFB8C6; - --menu-background-color: #383C4A; - - --modal-background-color: #404552; - --modal-backdrop-color: black; - - --left-pane-background-color: #2F343F; - --left-pane-text-color: #AFB8C6; - - --launcher-pane-background-color: #2F343F; - --launcher-pane-text-color: #AFB8C6; - - --active-tab-background-color: #2F343F; - --active-tab-text-color: #AFB8C6; - - --inactive-tab-background-color: #404552; - --inactive-tab-text-color: #AFB8C6; - - --scrollbar-border-color: rgba(175, 184, 198, 0.5); - --tooltip-background-color: #383C4A; - --link-color: lightskyblue; - - --mermaid-theme: forest; -} - -body .global-menu-button { - background-image: url("../../../assets/vX/images/icon-grey.png"); -} - -body .note-detail-editable-text, body .note-detail-readonly-text { - font-size: 120%; /* Garamond is subjectively smaller */ -} - -body .CodeMirror { - filter: invert(100%) hue-rotate(180deg); -} \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 b/demo/Home/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 deleted file mode 100644 index c36dcecbb..000000000 Binary files a/demo/Home/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 and /dev/null differ diff --git a/demo/Home/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 b/demo/Home/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 deleted file mode 100644 index eba29a9ab..000000000 Binary files a/demo/Home/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 and /dev/null differ diff --git a/demo/Home/Trilium Demo/Tech.html b/demo/Home/Trilium Demo/Tech.html deleted file mode 100644 index 46f63123b..000000000 --- a/demo/Home/Trilium Demo/Tech.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Tech - - - -
-

Tech

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Expand note on the left pane to see content.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Linux/Bash scripting.html b/demo/Home/Trilium Demo/Tech/Linux/Bash scripting.html deleted file mode 100644 index 308596e2b..000000000 --- a/demo/Home/Trilium Demo/Tech/Linux/Bash scripting.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - Bash scripting - - - -
-

Bash scripting

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bash is a Unix shell and - command languagewritten by Brian Fox for - the GNU Project as - a free software replacement - for the Bourne shell. - First released in 1989, it has been distributed widely as the default - loginshell for most Linux distributions - and Apple's macOS (formerly - OS X). A version is also available for Windows 10.

-

Bash on Wikipedia - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html b/demo/Home/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html deleted file mode 100644 index 76c37bd81..000000000 --- a/demo/Home/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - Bash startup modes - - - -
-

Bash startup modes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Login shell

- -

As a "login shell", Bash reads and sets (executes) the user's profile - from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile - (in that order, using the first one that's readable!).

-

When a login shell exits, Bash reads and executes commands from the file - ~/.bash_logout, if it exists.

-

Why an extra login shell mode? There are many actions and variable sets - that only make sense for the initial user login. That's why all UNIX® shells - have (should have) a "login" mode.

-

Methods to start Bash as a login shell: - -

-
    -
  • the first character of argv[0] is - (a hyphen): traditional UNIX® shells - start from the login binary
  • -
  • Bash is started with the -l option
  • -
  • Bash is started with the --login option
  • -
-

Methods to test for login shell mode: - -

- -

Related switches: - -

-
    -
  • --noprofile disables reading of all profile files
  • -
- -

Interactive shell

- -

When Bash starts as an interactive non-login shell, it reads and executes - commands from ~/.bashrc. This file should contain, for example, aliases, - since they need to be defined in every shell as they're not inherited from - the parent shell.

-

The feature to have a system-wide /etc/bash.bashrc or a similar system-wide - rc-file is specific to vendors and distributors that ship their own, patched variant of Bash. - The classic way to have a system-wide rc file is to source /etc/bashrc - from every user's ~/.bashrc.

-

Methods to test for interactive-shell mode: - -

-
    -
  • the special parameter $- contains the letter i (lowercase I)
  • -
-

Related switches: - -

-
    -
  • -i forces the interactive mode
  • -
  • --norc disables reading of the startup files (e.g. /etc/bash.bashrc if - supported) and ~/.bashrc
  • -
  • --rcfile defines another startup file (instead of /etc/bash.bashrc and - ~/.bashrc)
  • -
- -

SH mode

- -

When Bash starts in SH compatiblity mode, it tries to mimic the startup - behaviour of historical versions of sh as closely as possible, while conforming - to the POSIX® standard as well. The profile files read are /etc/profile - and ~/.profile, if it's a login shell.

-

If it's not a login shell, the environment variable ENV is - evaluated and the resulting filename is used as the name of the startup - file.

-

After the startup files are read, Bash enters the POSIX(r) compatiblity mode (for running, not for starting!).

-

Bash starts in sh compatiblity mode when: - -

-
    -
  • the base filename in argv[0] is sh ( -
    - -
     NB: /bin/sh may be linked to /bin/bash, but that doesn't mean it acts - like /bin/bash  -
    - -
    )
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Linux/Bash scripting/While loop.html b/demo/Home/Trilium Demo/Tech/Linux/Bash scripting/While loop.html deleted file mode 100644 index 7c50b2977..000000000 --- a/demo/Home/Trilium Demo/Tech/Linux/Bash scripting/While loop.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - While loop - - - -
-

While loop

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Documentation: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html - -

#!/bin/bash
-# This script opens 4 terminal windows.
-
-i="0"
-while [ $i -lt 4 ]
-do
-    xterm &
-
-    i=$[$i+1]
-done
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Linux/History.html b/demo/Home/Trilium Demo/Tech/Linux/History.html deleted file mode 100644 index e212d7136..000000000 --- a/demo/Home/Trilium Demo/Tech/Linux/History.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - History - - - -
-

History

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

The history of Linux began in 1991 with the commencement - of a personal project by Finnish student - Linus Torvaldsto create a new free operating system kernel. Since - then, the resulting Linux kernel has - been marked by constant growth throughout its history. Since the initial - release of its source code in - 1991, it has grown from a small number of C files - under a license prohibiting commercial distribution to the 4.2.3 version - in 2015 with more than 18 million lines of source code under the GNU General Public License v2.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Linux/Ubuntu.html b/demo/Home/Trilium Demo/Tech/Linux/Ubuntu.html deleted file mode 100644 index d7144c5fb..000000000 --- a/demo/Home/Trilium Demo/Tech/Linux/Ubuntu.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Ubuntu - - - -
-

Ubuntu

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Expand note on the left pane to see content.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html b/demo/Home/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html deleted file mode 100644 index 2666d1c74..000000000 --- a/demo/Home/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - Unity shortcuts - - - -
-

Unity shortcuts

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
    -
  • Hold Super - Invoke the Launcher and display the shortcuts
  • -
  • Hold Super, then press 1 or 2 or 3 and so on until 0 to open or focus - an application. The number corresponds to the location of the icon on the - launcher from top to bottom. -
      -
    • Adding Shift will open a new instance of the application if it's already - open.
    • -
    • Holding the key is also useful when you want to get to the Launcher but - do not want to invoke the Dash.
    • -
    -
  • -
  • Super + T - Open the rubbish bin/trash can.
  • -
  • Alt + F1 - Put keyboard focus on the Launcher, use arrow keys to navigate, - Enter launches an application, Right arrow exposes the quicklists if an - application has them.
  • -
  • Ctrl + Alt + T - Launch a terminal window.
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Programming/Bash scripting.clone.html b/demo/Home/Trilium Demo/Tech/Programming/Bash scripting.clone.html deleted file mode 100644 index e82fc6a4b..000000000 --- a/demo/Home/Trilium Demo/Tech/Programming/Bash scripting.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Bash scripting - - - -
-

Bash scripting

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Programming/Java.html b/demo/Home/Trilium Demo/Tech/Programming/Java.html deleted file mode 100644 index 1fb99a980..000000000 --- a/demo/Home/Trilium Demo/Tech/Programming/Java.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Java - - - -
-

Java

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/Security/Trusted timestamping.clone.html b/demo/Home/Trilium Demo/Tech/Security/Trusted timestamping.clone.html deleted file mode 100644 index 960727f12..000000000 --- a/demo/Home/Trilium Demo/Tech/Security/Trusted timestamping.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Trusted timestamping - - - -
-

Trusted timestamping

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/node.js/Intro.html b/demo/Home/Trilium Demo/Tech/node.js/Intro.html deleted file mode 100644 index d0c1c168f..000000000 --- a/demo/Home/Trilium Demo/Tech/node.js/Intro.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - Intro - - - -
-

Intro

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js is an open-source, - cross-platform, JavaScript - runtime environmentthat executes JavaScript code outside of a browser. - Node.js lets developers use JavaScript to write command line tools and - for server-side scripting—running - scripts server-side to produce dynamic web page content - before the page is sent to the user's web browser. 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/node.js/Overview.html b/demo/Home/Trilium Demo/Tech/node.js/Overview.html deleted file mode 100644 index a76fefef3..000000000 --- a/demo/Home/Trilium Demo/Tech/node.js/Overview.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - Overview - - - -
-

Overview

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js allows the creation of Web servers and - networking tools using JavaScript and - a collection of "modules" that handle various core functionalities.[28] - - [31][44] - - [45][46] Modules - are provided for file system I/O, - networking (DNS, - HTTP, TCP, - TLS/SSL, or UDP), - binarydata (buffers), cryptography functions, - data streams, and other core functions.[31] - - [45][47] Node.js's - modules use an API designed to reduce the complexity of writing server - applications.[31] - - [45] -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/node.js/Overview/History.html b/demo/Home/Trilium Demo/Tech/node.js/Overview/History.html deleted file mode 100644 index 617de2b07..000000000 --- a/demo/Home/Trilium Demo/Tech/node.js/Overview/History.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - History - - - -
-

History

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js was written initially by Ryan Dahl in - 2009,[24] about - thirteen years after the introduction of the first server-side JavaScript - environment, Netscape's LiveWire Pro Web.[25] The - initial release supported only Linux and Mac OS X. Its development and - maintenance was led by Dahl and later sponsored by Joyent. - [26] -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/node.js/Overview/Industry support.html b/demo/Home/Trilium Demo/Tech/node.js/Overview/Industry support.html deleted file mode 100644 index 244365e9d..000000000 --- a/demo/Home/Trilium Demo/Tech/node.js/Overview/Industry support.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - Industry support - - - -
-

Industry support

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

There are thousands of open-source libraries for Node.js, most of them - hosted on the npm website. - The Node.js developer community has two main mailing lists and the IRC channel - #node.js on freenode

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/node.js/Overview/Platform architecture.html b/demo/Home/Trilium Demo/Tech/node.js/Overview/Platform architecture.html deleted file mode 100644 index 70a739fc7..000000000 --- a/demo/Home/Trilium Demo/Tech/node.js/Overview/Platform architecture.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - Platform architecture - - - -
-

Platform architecture

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js brings event-driven programming to - web servers, enabling development of fast web servers in JavaScript. - [31]Developers can create scalable servers without using threading, - by using a simplified model of event-driven programming that - uses callbacks to signal the completion of a task.[31] - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Tech/node.js/Releases.html b/demo/Home/Trilium Demo/Tech/node.js/Releases.html deleted file mode 100644 index 6f7a90581..000000000 --- a/demo/Home/Trilium Demo/Tech/node.js/Releases.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Releases - - - -
-

Releases

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

New major releases of Node.js are cut from the GitHub master - branch every six months. Even-numbered versions are cut in April and odd-numbered - versions are cut in October. When a new odd version is released, the previous - even version undergoes transition to Long Term Support (LTS), which gives - that version 18 months of active support from the date it is designated - LTS.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Work/HR.html b/demo/Home/Trilium Demo/Work/HR.html deleted file mode 100644 index ae4121060..000000000 --- a/demo/Home/Trilium Demo/Work/HR.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - HR - - - -
-

HR

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

HR stuff 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Work/Processes.html b/demo/Home/Trilium Demo/Work/Processes.html deleted file mode 100644 index 00a6f1d99..000000000 --- a/demo/Home/Trilium Demo/Work/Processes.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Processes - - - -
-

Processes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

bla bla ...

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo/Work/Projects.html b/demo/Home/Trilium Demo/Work/Projects.html deleted file mode 100644 index 4b2b2376d..000000000 --- a/demo/Home/Trilium Demo/Work/Projects.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Projects - - - -
-

Projects

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Here I'd keep various notes related to my work's projects etc.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/Home/Trilium Demo_trilium-icon.png b/demo/Home/Trilium Demo_trilium-icon.png deleted file mode 100644 index 8208b2ced..000000000 Binary files a/demo/Home/Trilium Demo_trilium-icon.png and /dev/null differ diff --git a/demo/User Guide.html b/demo/User Guide.html deleted file mode 100644 index 8c1841492..000000000 --- a/demo/User Guide.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - User Guide - - - -
-

User Guide

- -
-
-
-
-
The sub-children of this note are automatically synced.
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Journal.dat b/demo/User Guide/Journal.dat deleted file mode 100644 index e69de29bb..000000000 diff --git a/demo/User Guide/Journal.html b/demo/User Guide/Journal.html deleted file mode 100644 index eb819ded1..000000000 --- a/demo/User Guide/Journal.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - Journal - - - -
-

Journal

- -
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo.html b/demo/User Guide/Trilium Demo.html deleted file mode 100644 index d9fe89a84..000000000 --- a/demo/User Guide/Trilium Demo.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Trilium Demo - - - -
-

Trilium Demo

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-

Welcome to TriliumNext Notes! - -

-

This is initial "demo" document provided by TriliumNext by default to - showcase some of its features and also give you some ideas how you might - structure your notes. You can play with it, modify note content and tree - structure as you wish.

-

If you need any help, visit TriliumNext website: https://github.com/TriliumNext - -

-

Cleanup

- -

Once you're finished with experimenting and want to cleanup these pages, - you can simply delete them all.

-
 
-

Formatting

- -

TriliumNext supports classic formatting like italic, bold, bold and italic. - Of course you can add links like this one pointing to google.com - -

-

Lists

-

Ordered: - -

-
    -
  1. First Item
  2. -
  3. Second item -
      -
    1. First sub-item -
        -
      1. sub-sub-item
      2. -
      -
    2. -
    -
  4. -
-

Unordered: - -

-
    -
  • Item
  • -
  • Another item -
      -
    • Sub-item
    • -
    -
  • -
-

Block quotes

-
-

Whereof one cannot speak, thereof one must be silent”

-

– Ludwig Wittgenstein

-
-

Checkout also other examples like tables, - checkbox lists, highlighting, - code blocksand math examples.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Books/Book template.html b/demo/User Guide/Trilium Demo/Books/Book template.html deleted file mode 100644 index 1a183d333..000000000 --- a/demo/User Guide/Trilium Demo/Books/Book template.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - Book template - - - -
-

Book template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -

Main characters

- -

… here put main characters …

-

 

-

Plot

- -

… describe main plot lines …

-

 

-

Tone

- -

 

-

Genre

- -

scifi / drama / romance

-

 

-

Similar books

- -
    -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Books/Book template/Highlights.html b/demo/User Guide/Trilium Demo/Books/Book template/Highlights.html deleted file mode 100644 index 4cd96a73a..000000000 --- a/demo/User Guide/Trilium Demo/Books/Book template/Highlights.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - Highlights - - - -
-

Highlights

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

highlght 1

-
-

my comment

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Books/Reviews/The Mechanical.clone.html b/demo/User Guide/Trilium Demo/Books/Reviews/The Mechanical.clone.html deleted file mode 100644 index cbaf13765..000000000 --- a/demo/User Guide/Trilium Demo/Books/Reviews/The Mechanical.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - The Mechanical - - - -
-

The Mechanical

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Books/To read.html b/demo/User Guide/Trilium Demo/Books/To read.html deleted file mode 100644 index 27c12d978..000000000 --- a/demo/User Guide/Trilium Demo/Books/To read.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - To read - - - -
-

To read

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Checkout Kindle daily deals: https://www.amazon.com/gp/feature.html?docId=1000677541 - -

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Canvas note.json b/demo/User Guide/Trilium Demo/Canvas note.json deleted file mode 100644 index 0f334778c..000000000 --- a/demo/User Guide/Trilium Demo/Canvas note.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"excalidraw","version":2,"elements":[{"type":"rectangle","version":234,"versionNonce":2115983107,"isDeleted":false,"id":"Nx_6ACJaaueNh0fTsVZeh","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":14.66796875,"y":8.13671875,"strokeColor":"#000000","backgroundColor":"#fa5252","width":247,"height":138,"seed":679323330,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1701078794806,"link":null},{"type":"arrow","version":142,"versionNonce":265248388,"isDeleted":false,"id":"2bmK1AKg9yVMP6CO_U6Ke","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":216,"y":67,"strokeColor":"#000000","backgroundColor":"#fa5252","width":289,"height":46,"seed":1265574494,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[289,46]]},{"type":"ellipse","version":162,"versionNonce":507427772,"isDeleted":false,"id":"TOmE_26Ye9b_m_TKfWU45","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":441,"y":31,"strokeColor":"#000000","backgroundColor":"#228be6","width":203,"height":191,"seed":77588894,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"text","version":206,"versionNonce":1401811460,"isDeleted":false,"id":"K5CjVJa8vYzQ8LDOdH-av","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":319.5,"y":20,"strokeColor":"#000000","backgroundColor":"#228be6","width":71.75,"height":null,"seed":317664926,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":1,"text":"convert","baseline":18,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"convert"},{"type":"diamond","version":139,"versionNonce":2062017596,"isDeleted":false,"id":"rZ0DKhdiE-mys9orY2M7Y","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":335,"y":67,"strokeColor":"#000000","backgroundColor":"#228be6","width":31,"height":37,"seed":401619102,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"line","version":202,"versionNonce":1931775364,"isDeleted":false,"id":"gWzx0Ka27J2gQYsjliI5u","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":1,"opacity":100,"angle":0,"x":147,"y":142,"strokeColor":"#000000","backgroundColor":"#228be6","width":124,"height":113,"seed":668475458,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371094,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[124,113]]},{"type":"rectangle","version":182,"versionNonce":693632188,"isDeleted":false,"id":"vPXlTlCV6XiWRo8z596tY","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0,"x":269,"y":240,"strokeColor":"#2b8a3e","backgroundColor":"#e6ffc8","width":144,"height":115,"seed":1313295006,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"text","version":316,"versionNonce":1778720828,"isDeleted":false,"id":"NlWoiu7QFiUGoGhxxFDQz","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":290,"y":247,"strokeColor":"#2b8a3e","backgroundColor":"#228be6","width":53.36666488647461,"height":null,"seed":146698370,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":1,"text":"List :\n- one\n- two","baseline":70,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"List :\n- one\n- two"},{"type":"diamond","version":220,"versionNonce":858850620,"isDeleted":false,"id":"4tqMpG7kcfLvu81ba12UQ","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.899784582143685,"x":283.37319488867206,"y":123.6942301852414,"strokeColor":"#000000","backgroundColor":"#fa5252","width":104.0405522208337,"height":74.00000000000001,"seed":1677737711,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371094,"link":null},{"type":"rectangle","version":277,"versionNonce":406453380,"isDeleted":false,"id":"79D3L3LhxNNySkbKD3Bia","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.42451911970089906,"x":479.7715111234793,"y":259.96655309088374,"strokeColor":"#000000","backgroundColor":"#fa5252","width":128.50676566765082,"height":63,"seed":1447260752,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"diamond","version":362,"versionNonce":500497852,"isDeleted":false,"id":"ffrisBNjK3DyL4MRqDVUM","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.3893167218331426,"x":21.865547135620886,"y":174.8538070033551,"strokeColor":"#000000","backgroundColor":"#15aabf","width":87.26890572875811,"height":46.29238599328972,"seed":63592112,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"rectangle","version":518,"versionNonce":340773892,"isDeleted":false,"id":"wxvV5tzdo2p3m4nBQf_fI","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.997855886997452,"x":90.74789364500919,"y":293.3561760950281,"strokeColor":"#000000","backgroundColor":"#fab005","width":123.50421270998135,"height":35.287647809943806,"seed":1439819952,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"line","version":166,"versionNonce":1610279598,"isDeleted":false,"id":"i2pQf0tOL1I7RZA6fHNXy","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0.3264344116289468,"x":129,"y":177,"strokeColor":"#a61e4d","backgroundColor":"#fab005","width":71,"height":80,"seed":969735782,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[2,16],[12,40],[20,51],[36,64],[71,80]]},{"type":"line","version":175,"versionNonce":1006611332,"isDeleted":false,"id":"zTcY1DmmmEqtM7iaFOjI2","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":24,"y":282,"strokeColor":"#087f5b","backgroundColor":"#fab005","width":81,"height":33,"seed":1314441594,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[6,-22],[12,-29],[21,-30],[24,-29],[33,-17],[36,1],[37,2],[45,-29],[48,-29],[53,-31],[58,-31],[72,-23],[81,-8],[81,-4]]},{"type":"rectangle","version":467,"versionNonce":1170587324,"isDeleted":false,"id":"UqrOMUkW8i5NCxQf_EDc9","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0.11809202841909539,"x":190.3330910264575,"y":373.66279952417335,"strokeColor":"#000000","backgroundColor":"#be4bdb","width":90.33381794708485,"height":87.67440095165314,"seed":1466118630,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"diamond","version":459,"versionNonce":830970628,"isDeleted":false,"id":"06wK4k0VHVo3nl3maFgBt","fillStyle":"solid","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.137516099543635,"x":353.41738815890335,"y":394.61371445798545,"strokeColor":"#000000","backgroundColor":"#4c6ef5","width":80.89200154670186,"height":77.42001777890613,"seed":1789348282,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null},{"type":"text","version":194,"versionNonce":2089357700,"isDeleted":false,"id":"FExeJRXagFlMKEpW4ApvL","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":5.9094584872140326,"x":35.78896794074159,"y":386.2393022458574,"strokeColor":"#d9480f","backgroundColor":"#4c6ef5","width":106.3499984741211,"height":null,"seed":152285754,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828824,"link":null,"fontSize":20,"fontFamily":2,"text":"Rotated text","baseline":23,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Rotated text"},{"type":"arrow","version":363,"versionNonce":526752388,"isDeleted":false,"id":"n7nmJZmGCpL1a6l1TdMeX","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":520.1576551164967,"y":338.6957163378038,"strokeColor":"#000000","backgroundColor":"#fa5252","width":78.65765511649664,"height":75.30428366219626,"seed":925954106,"groupIds":[],"strokeSharpness":"round","boundElements":[],"updated":1655641371095,"link":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-78.65765511649664,75.30428366219626]]},{"type":"text","version":184,"versionNonce":963492028,"isDeleted":false,"id":"lU3Msnm2CTXBHi8Pzef0C","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"dotted","roughness":1,"opacity":100,"angle":0,"x":509.5,"y":392,"strokeColor":"#000000","backgroundColor":"#4c6ef5","width":128.88333129882812,"height":null,"seed":1839996922,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828826,"link":null,"fontSize":20,"fontFamily":3,"text":"> some code","baseline":20,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"> some code"},{"type":"text","version":510,"versionNonce":670318852,"isDeleted":false,"id":"CdlqC6FutWnAhFgUa4-tK","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":34.326958955223915,"y":31.00810810810811,"strokeColor":"#c92a2a","backgroundColor":"#228be6","width":165.3333282470703,"height":null,"seed":168503609,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1725306828827,"link":null,"fontSize":39.25486991656494,"fontFamily":1,"text":"Big text","baseline":35,"textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Big text"},{"type":"ellipse","version":305,"versionNonce":1795300462,"isDeleted":false,"id":"lQb2o3G3uO-OSzJlv7dQf","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":5.987365538640589,"x":483.5,"y":118.5,"strokeColor":"#000000","backgroundColor":"#7950f2","width":133.00000000000003,"height":58.00000000000001,"seed":617054574,"groupIds":[],"strokeSharpness":"sharp","boundElements":[],"updated":1655641371095,"link":null}],"files":{},"appState":{"scrollX":255.921875,"scrollY":295.91526179206426,"zoom":{"value":1}}} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Canvas note_canvas-export.svg b/demo/User Guide/Trilium Demo/Canvas note_canvas-export.svg deleted file mode 100644 index f5bb7a3e6..000000000 --- a/demo/User Guide/Trilium Demo/Canvas note_canvas-export.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - convertList :- one- twoRotated text> some codeBig text \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Formatting examples/Checkbox lists.html b/demo/User Guide/Trilium Demo/Formatting examples/Checkbox lists.html deleted file mode 100644 index f866d0a80..000000000 --- a/demo/User Guide/Trilium Demo/Formatting examples/Checkbox lists.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - Checkbox lists - - - -
-

Checkbox lists

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Create easy TODO-lists with checkboxes:

-
    -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Formatting examples/Code blocks.html b/demo/User Guide/Trilium Demo/Formatting examples/Code blocks.html deleted file mode 100644 index feeb47266..000000000 --- a/demo/User Guide/Trilium Demo/Formatting examples/Code blocks.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - Code blocks - - - -
-

Code blocks

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Code blocks are useful to add short snippets of code blocks inside text - notes. Depending on your preference, it's possible to enable or disable - word wrapping for these code blocks.

-

We added syntax highlighting to code blocks as well. When a code block - is first created it will try to automatically determine the programming - language, should that fail it is possible to manually adjust it. The color - scheme for the syntax highlighting is adjustable in settings. 

function helloWorld() {
-	alert("Hello world");
-}
- -

For larger pieces of code it is better to use a code note, which uses - a fully-fledged code editor (CodeMirror). For an example of a code note, - see Custom request handler.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Formatting examples/Highlighting.html b/demo/User Guide/Trilium Demo/Formatting examples/Highlighting.html deleted file mode 100644 index 82ee34fb6..000000000 --- a/demo/User Guide/Trilium Demo/Formatting examples/Highlighting.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - Highlighting - - - -
-

Highlighting

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Space Shuttle Discovery (Orbiter Vehicle - Designation: OV-103) is one of the orbiters from NASA's Space - Shuttle program and the third of five fully operational orbiters to be - built. Its first mission, STS-41-D, flew from August 30 to September 5, - 1984. Over 27 years of service it launched and landed 39 times, - gathering more spaceflights than any other spacecraft to date. The shuttle - has three main components: the Space Shuttle orbiter, a central fuel tank, - and two rocket boosters. Nearly 25,000 heat resistant tiles cover - the orbiter to protect it from high temperatures on re-entry.

-

Discovery became the third operational orbiter to enter service, preceded - by Columbia and Challenger. It embarked on its last mission, STS-133, on February 24, 2011 and - touched down for the final time at Kennedy Space Center on March 9, having - spent a cumulative total of almost a full year in space. Discovery performed - both research and International Space Station (ISS) assembly missions, - and also carried the Hubble Space Telescope into orbit.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Formatting examples/Math.html b/demo/User Guide/Trilium Demo/Formatting examples/Math.html deleted file mode 100644 index e4d254377..000000000 --- a/demo/User Guide/Trilium Demo/Formatting examples/Math.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - Math - - - -
-

Math

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty     \f\hat\xi\,e^{2 \pi i \xi x}     \,d\xi\)Some - math examples:

\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\] - -

Another:

\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\] - -

Inline math is also possible: \(c^2 = a^2 + b^2\) Neat!

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Formatting examples/School schedule.html b/demo/User Guide/Trilium Demo/Formatting examples/School schedule.html deleted file mode 100644 index 7571542af..000000000 --- a/demo/User Guide/Trilium Demo/Formatting examples/School schedule.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - School schedule - - - -
-

School schedule

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 MondayTuesdayWednesdayThursdayFriday
9:00-10:30P.E. MathComputer Science 
11:00-12:30HistoryEnglish PhysicsMath
13:00-14:30 Computer ScienceChemistryPhysics LabGeography
15:00-16:30Computer Science Latin  
-
School schedule
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Inbox.html b/demo/User Guide/Trilium Demo/Inbox.html deleted file mode 100644 index 449f89f37..000000000 --- a/demo/User Guide/Trilium Demo/Inbox.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - Inbox - - - -
-

Inbox

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This is a place I use to put notes waiting for better categorization

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Inbox/Book to read.html b/demo/User Guide/Trilium Demo/Inbox/Book to read.html deleted file mode 100644 index e80274fc0..000000000 --- a/demo/User Guide/Trilium Demo/Inbox/Book to read.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - Book to read - - - -
-

Book to read

- -
- -
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Inbox/Grocery list for today.html b/demo/User Guide/Trilium Demo/Inbox/Grocery list for today.html deleted file mode 100644 index d1e32e394..000000000 --- a/demo/User Guide/Trilium Demo/Inbox/Grocery list for today.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - Grocery list for today - - - -
-

Grocery list for today

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
    -
  • cucumber
  • -
  • cheese
  • -
  • beer
  • -
-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Inbox/The Last Question.html b/demo/User Guide/Trilium Demo/Inbox/The Last Question.html deleted file mode 100644 index 8901024a1..000000000 --- a/demo/User Guide/Trilium Demo/Inbox/The Last Question.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - The Last Question - - - -
-

The Last Question

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

"The Last Question" is a science fiction - short storyby American writer Isaac Asimov. - It first appeared in the November 1956 issue of Science Fiction Quarterly.

-
 
-

This page demonstrates two things:

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf b/demo/User Guide/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf deleted file mode 100644 index 717a69943..000000000 Binary files a/demo/User Guide/Trilium Demo/Inbox/The Last Question/The Last Question by Issac.pdf and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal.html b/demo/User Guide/Trilium Demo/Journal.html deleted file mode 100644 index d8f03adc1..000000000 --- a/demo/User Guide/Trilium Demo/Journal.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Journal - - - -
-

Journal

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

You can read some explanation on how this journal works here: https://github.com/zadam/trilium/wiki/Day-notes - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html b/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html deleted file mode 100644 index 4d9ac83a6..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 28 - Tuesday - - - -
-

28 - Tuesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html b/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html deleted file mode 100644 index a27bba7b7..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - Christmas gift ideas - - - -
-

Christmas gift ideas

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html b/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html deleted file mode 100644 index abdfe9817..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Phone call about work project - - - -
-

Phone call about work project

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bla bla bla ....

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html b/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html deleted file mode 100644 index aa1afe44a..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - Trusted timestamping - - - -
-

Trusted timestamping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Wiki: https://en.wikipedia.org/wiki/Trusted_timestamping - -

-

Bozho: https://techblog.bozho.net/using-trusted-timestamping-java/ - -

-

Trusted timestamping is the process of securely keeping - track of the creation and modification time of a document. Security here - means that no one—not even the owner of the document—should be able to - change it once it has been recorded provided that the timestamper's integrity - is never compromised.

-

The administrative aspect involves setting up a publicly available, trusted - timestamp management infrastructure to collect, process and renew timestamps.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday.html deleted file mode 100644 index 76e0a10fa..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - 18 - Monday - - - -
-

18 - Monday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Miscellaneous notes done on monday ...

-

 

-

Interesting video: https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be - -

-

 

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html deleted file mode 100644 index f2acf626d..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Meeting minutes - - - -
-

Meeting minutes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

bla bla bla ...

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg deleted file mode 100644 index 526922538..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/01.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg deleted file mode 100644 index a6bd590e4..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/02.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg deleted file mode 100644 index 8d6ee7003..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/03.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg deleted file mode 100644 index 65dcff9f0..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/04.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg deleted file mode 100644 index 56dad904f..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/05.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg deleted file mode 100644 index afae674d8..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/06.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg deleted file mode 100644 index 1a4177f45..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/07.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg deleted file mode 100644 index eaa57bfbf..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/08.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg deleted file mode 100644 index 3266325f2..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/09.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg deleted file mode 100644 index 0ecdcc360..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/10.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg deleted file mode 100644 index 24fb1fc9e..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/11.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg deleted file mode 100644 index ccded29c7..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/Photos from the trip/12.jpeg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html deleted file mode 100644 index 519a95c8a..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html deleted file mode 100644 index ea53cdaa9..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 19 - Tuesday - - - -
-

19 - Tuesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html deleted file mode 100644 index be80e402e..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Dentist appointment - - - -
-

Dentist appointment

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html deleted file mode 100644 index a13075559..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 20 - Wednesday - - - -
-

20 - Wednesday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html deleted file mode 100644 index bc64f9db2..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 21 - Thursday - - - -
-

21 - Thursday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html deleted file mode 100644 index 8a2e2452a..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Christmas shopping - - - -
-

Christmas shopping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bought a book!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html deleted file mode 100644 index a9d405b6c..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Office party - - - -
-

Office party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
That was fun!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday.html deleted file mode 100644 index 09e429cae..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 22 - Friday - - - -
-

22 - Friday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html deleted file mode 100644 index ed0bbc960..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Christmas shopping - - - -
-

Christmas shopping

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html deleted file mode 100644 index 1c62ec5a3..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - The Mechanical - - - -
-

The Mechanical

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

I enjoyed this book a lot. It's slow moving at times with the author taking - his time with conversations and descriptions of them. The premise is very - interesting, but I'm sad that it wasn't elaborated more deeply - e.g. the - history and development of the clakker technology with Huygens and how - Spinoza comes into the picture. Maybe the author saves it for the next - two parts of the book.

-

Language can be intimidating at first for non-native english speakers - - author uses wide range of vocabulary. Fortunately it gets better after - a while as reader adjusts.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html deleted file mode 100644 index 367c2f7ab..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - Highlights - - - -
-

Highlights

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Like a raindrop rolling down dry valleys to the sea, his body sensed the - contours of agony and helplessly followed their gradient. Impelled by alchemical - compulsion rather than gravity, Jax became an unstoppable boulder careering - along gullies of human whim.

-
-
-

Free Will was a vacuum, a negative space. It was the absence of coercion, - the absence of compulsion, the absence of agony.

-
-
-

Overwhelming: he could do anything he wanted. But the grand sum of anything-at-all - was nothing-at-all. The topology of freedom offered no gradients to nudge - him, no landmarks to guide him. How did humans guide themselves? How did - they know what to do and what not to do? How did they know when to do anything - without the benefit of geasa and metageasa to prioritize every single action - of their waking lives? How did they order their daily existence without - somebody to tell them what to do?

-
-
-

Life as a slave was unspeakable; life as a slave who had briefly tasted - freedom was unthinkable. Clakkers carried complex geasa by dint of alchemy; - humans carried heavy obligations, too, but called them culture. Society.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html deleted file mode 100644 index 2371cbe7a..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 23 - Saturday - - - -
-

23 - Saturday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html deleted file mode 100644 index 80870eb39..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 24 - Sunday - Christmas Eve! - - - -
-

24 - Sunday - Christmas Eve!

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg deleted file mode 100644 index f0135ec7b..000000000 Binary files a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game fo.jpg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html deleted file mode 100644 index c70c13953..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - Buy a board game for Alice - - - -
-

Buy a board game for Alice

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html deleted file mode 100644 index bf8eeb2cb..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html b/demo/User Guide/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html deleted file mode 100644 index d807a4132..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - 30 - Thursday - - - -
-

30 - Thursday

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/Epics.html b/demo/User Guide/Trilium Demo/Journal/2021/Epics.html deleted file mode 100644 index d8e72101c..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/Epics.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - Epics - - - -
-

Epics

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Epic is kind of medium-term events or projects spread over days or months.

-

Remember that Trilium is all free form so you can organise your stuff - in whatever way you'd like.

-

 

-

 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas.html b/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas.html deleted file mode 100644 index c05f2243f..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Christmas - - - -
-

Christmas

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This christmas is going to be awesome!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html b/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html deleted file mode 100644 index e193b7d00..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Christmas dinner - - - -
-

Christmas dinner

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Carp of course!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html b/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html deleted file mode 100644 index 044fe3e8f..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Shopping/28. 11. 2017 - Christmas gift ideas.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Christmas gift ideas - - - -
-

Christmas gift ideas

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html b/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html deleted file mode 100644 index 8b39bc58c..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - Vacation days - - - -
-

Vacation days

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

25. 12., 26. 12., 1. 1. - statutory holidays

-

27. 12. - 29. 12., 2. 1. - vacation days

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Vacation.html b/demo/User Guide/Trilium Demo/Journal/2021/Epics/Vacation.html deleted file mode 100644 index 80bc1bb49..000000000 --- a/demo/User Guide/Trilium Demo/Journal/2021/Epics/Vacation.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Vacation - - - -
-

Vacation

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Planning stuff etc.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Journal/Day template.html b/demo/User Guide/Trilium Demo/Journal/Day template.html deleted file mode 100644 index 6c521a006..000000000 --- a/demo/User Guide/Trilium Demo/Journal/Day template.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - Day template - - - -
-

Day template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

TODO:

-
    -
  • - -
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Bar chart.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Bar chart.txt deleted file mode 100644 index b13f7ee52..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Bar chart.txt +++ /dev/null @@ -1,15 +0,0 @@ -gantt - title Git Issues - days since last update - dateFormat X - axisFormat %s - - section Issue19062 - 71 : 0, 71 - section Issue19401 - 36 : 0, 36 - section Issue193 - 34 : 0, 34 - section Issue7441 - 9 : 0, 9 - section Issue1300 - 5 : 0, 5 \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg deleted file mode 100644 index 97489f06b..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Bar chart_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -051015202530354045505560657071 36 34 9 5 Issue19062Issue19401Issue193Issue7441Issue1300Git Issues - days since last update \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/C4.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/C4.txt deleted file mode 100644 index 7e4dc961a..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/C4.txt +++ /dev/null @@ -1,32 +0,0 @@ -C4Context -title System Context diagram for Internet Banking System - -Person(customerA, "Banking Customer A", "A customer of the bank, with personal bank accounts.") -Person(customerB, "Banking Customer B") -Person_Ext(customerC, "Banking Customer C") -System(SystemAA, "Internet Banking System", "Allows customers to view information about their bank accounts, and make payments.") - -Person(customerD, "Banking Customer D", "A customer of the bank,
with personal bank accounts.") - -Enterprise_Boundary(b1, "BankBoundary") { - - SystemDb_Ext(SystemE, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.") - - System_Boundary(b2, "BankBoundary2") { - System(SystemA, "Banking System A") - System(SystemB, "Banking System B", "A system of the bank, with personal bank accounts.") - } - - System_Ext(SystemC, "E-mail system", "The internal Microsoft Exchange e-mail system.") - SystemDb(SystemD, "Banking System D Database", "A system of the bank, with personal bank accounts.") - - Boundary(b3, "BankBoundary3", "boundary") { - SystemQueue(SystemF, "Banking System F Queue", "A system of the bank, with personal bank accounts.") - SystemQueue_Ext(SystemG, "Banking System G Queue", "A system of the bank, with personal bank accounts.") - } -} - -BiRel(customerA, SystemAA, "Uses") -BiRel(SystemAA, SystemE, "Uses") -Rel(SystemAA, SystemC, "Sends e-mails", "SMTP") -Rel(SystemC, customerA, "Sends e-mails to") \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg deleted file mode 100644 index 60f433a49..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/C4_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -<<person>>Banking Customer AA customer of the bank, with personal bank accounts.<<person>>Banking Customer B<<external_person>>Banking Customer C<<system>>Internet Banking SystemAllows customers to view information about their bank accounts, and make payments.<<person>>Banking Customer DA customer of the bank, with personal bank accounts.<<external_system_db>>Mainframe Banking SystemStores all of the core banking information about customers, accounts, transactions, etc.<<external_system>>E-mail systemThe internal Microsoft Exchange e-mail system.<<system_db>>Banking System D DatabaseA system of the bank, with personal bank accounts.<<system>>Banking System A<<system>>Banking System BA system of the bank, with personal bank accounts.BankBoundary2[ENTERPRISE]<<system_queue>>Banking System F QueueA system of the bank, with personal bank accounts.<<external_system_queue>>Banking System G QueueA system of the bank, with personal bank accounts.BankBoundary3[boundary]BankBoundary[ENTERPRISE]UsesUsesSends e-mails[SMTP]Sends e-mails toSystem Context diagram for Internet Banking System \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Class.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Class.txt deleted file mode 100644 index f902afadd..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Class.txt +++ /dev/null @@ -1,16 +0,0 @@ -classDiagram -Class01 <|-- AveryLongClass : Cool -<> Class01 -Class09 --> C2 : Where am i? -Class09 --* C3 -Class09 --|> Class07 -Class07 : equals() -Class07 : Object[] elementData -Class01 : size() -Class01 : int chimp -Class01 : int gorilla -class Class10 { - <> - int id - size() -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg deleted file mode 100644 index 9d10efc11..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Class_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -
Cool
Where am i?
«interface»
Class01
int chimp
int gorilla
size()
AveryLongClass
Class09
C2
C3
Class07
Object[] elementData
equals()
«service»
Class10
int id
size()
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt deleted file mode 100644 index 94d6f5196..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Entity Relationship.txt +++ /dev/null @@ -1,10 +0,0 @@ -erDiagram - CUSTOMER }|..|{ DELIVERY-ADDRESS : has - CUSTOMER ||--o{ ORDER : places - CUSTOMER ||--o{ INVOICE : "liable for" - DELIVERY-ADDRESS ||--o{ ORDER : receives - INVOICE ||--|{ ORDER : covers - ORDER ||--|{ ORDER-ITEM : includes - PRODUCT-CATEGORY ||--|{ PRODUCT : contains - PRODUCT ||--o{ ORDER-ITEM : "ordered in" - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg deleted file mode 100644 index d5911752e..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Entity Relationship_mermai.svg +++ /dev/null @@ -1 +0,0 @@ -CUSTOMERDELIVERY-ADDRESSORDERINVOICEORDER-ITEMPRODUCT-CATEGORYPRODUCThasplacesliable forreceivescoversincludescontainsordered in \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt deleted file mode 100644 index 34d7aedaf..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow (ELK).txt +++ /dev/null @@ -1,15 +0,0 @@ ---- -config: - layout: elk ---- -flowchart LR -A-->|"Guarantee"|B -C-->|"User attributes"|B -C-->|"Master data"|B -C-->|"Exchange Rate"|B -C-->|"Profit Centers"|B -C-->|"Vendor Partners"|B -C-->|"Work Situation"|B -C-->|"Customer"|B -C-->|"Profit Centers"|B -B-->|"Guarantee"|C \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg deleted file mode 100644 index 1a133a1c7..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow (ELK)_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

A

B

C

Guarantee

User attributes

Master data

Exchange Rate

Profit Centers

Vendor Partners

Work Situation

Customer

Profit Centers

Guarantee

\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow.txt deleted file mode 100644 index a7fcef7f3..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow.txt +++ /dev/null @@ -1,5 +0,0 @@ -graph TD -A[Hard] -->|Text| B(Round) -B --> C{Decision} -C -->|One| D[Result 1] -C -->|Two| E[Result 2] \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg deleted file mode 100644 index 7941b9ae1..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Flow_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

Text

One

Two

Hard

Round

Decision

Result 1

Result 2

\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Gantt.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Gantt.txt deleted file mode 100644 index af32bc27d..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Gantt.txt +++ /dev/null @@ -1,8 +0,0 @@ -gantt -section Section -Completed :done, des1, 2014-01-06,2014-01-08 -Active :active, des2, 2014-01-07, 3d -Parallel 1 : des3, after des1, 1d -Parallel 2 : des4, after des1, 1d -Parallel 3 : des5, after des3, 1d -Parallel 4 : des6, after des4, 1d \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg deleted file mode 100644 index 61ffc0260..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Gantt_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -2014-01-062014-01-072014-01-072014-01-082014-01-082014-01-092014-01-092014-01-10Completed Parallel 1 Parallel 2 Active Parallel 3 Parallel 4 Section \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Git.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Git.txt deleted file mode 100644 index f5c89f75d..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Git.txt +++ /dev/null @@ -1,10 +0,0 @@ - gitGraph - commit - commit - branch develop - commit - commit - commit - checkout main - commit - commit \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg deleted file mode 100644 index 15b9bb454..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Git_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -maindevelop0-e6e63b91-f6c5e0c2-b62cc0e3-be86c5a4-7021d405-f753c376-3f1a1ef \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Journey.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Journey.txt deleted file mode 100644 index 8bad1ef77..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Journey.txt +++ /dev/null @@ -1,9 +0,0 @@ - journey - title My working day - section Go to work - Make tea: 5: Me - Go upstairs: 3: Me - Do work: 1: Me, Cat - section Go home - Go downstairs: 5: Me - Sit down: 3: Me \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg deleted file mode 100644 index 2b6c1e75d..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Journey_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -CatMe
Go to work
Go to work
Me
Make tea
Make tea
Me
Go upstairs
Go upstairs
MeCat
Do work
Do work
Go home
Go home
Me
Go downstairs
Go downstairs
Me
Sit down
Sit down
My working day
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Mind Map.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Mind Map.txt deleted file mode 100644 index 6cdfad11d..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Mind Map.txt +++ /dev/null @@ -1,17 +0,0 @@ -mindmap - root((mindmap)) - Origins - Long history - ::icon(fa fa-book) - Popularisation - British popular psychology author Tony Buzan - Research - On effectiveness
and features - On Automatic creation - Uses - Creative techniques - Strategic planning - Argument mapping - Tools - Pen and paper - Mermaid \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg deleted file mode 100644 index 4e0a32214..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Mind Map_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -mindmapOriginsLong history
PopularisationBritish popular psychologyauthor Tony BuzanResearchOn effectivenessand featuresOn Automatic creationUsesCreative techniquesStrategic planningArgument mappingToolsPen and paperMermaid
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Pie.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Pie.txt deleted file mode 100644 index 58aeda658..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Pie.txt +++ /dev/null @@ -1,4 +0,0 @@ -pie -"Dogs" : 386 -"Cats" : 85 -"Rats" : 15 \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg deleted file mode 100644 index 80909557d..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Pie_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -79%17%3%DogsCatsRats \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Sequence.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Sequence.txt deleted file mode 100644 index 5ed800922..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Sequence.txt +++ /dev/null @@ -1,9 +0,0 @@ -sequenceDiagram -Alice->>John: Hello John, how are you? -loop Healthcheck - John->>John: Fight against hypochondria -end -Note right of John: Rational thoughts! -John-->>Alice: Great! -John->>Bob: How about you? -Bob-->>John: Jolly good! \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg deleted file mode 100644 index 804d86275..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/Sequence_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -BobJohnAliceBobJohnAliceloop[Healthcheck]Rational thoughts!Hello John, how are you?Fight against hypochondriaGreat!How about you?Jolly good! \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/State.txt b/demo/User Guide/Trilium Demo/Mermaid Diagrams/State.txt deleted file mode 100644 index 7b57864f0..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/State.txt +++ /dev/null @@ -1,7 +0,0 @@ -stateDiagram-v2 -[*] --> Still -Still --> [*] -Still --> Moving -Moving --> Still -Moving --> Crash -Crash --> [*] \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg b/demo/User Guide/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg deleted file mode 100644 index 1e2314d6c..000000000 --- a/demo/User Guide/Trilium Demo/Mermaid Diagrams/State_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -
Still
Moving
Crash
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mind map.json b/demo/User Guide/Trilium Demo/Mind map.json deleted file mode 100644 index 79b3add25..000000000 --- a/demo/User Guide/Trilium Demo/Mind map.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"me-root","topic":"Mind Elixir","root":true,"tags":["Mind Map Core"],"children":[{"topic":"What is Mind Elixir","id":"bd4313fbac40284b","direction":0,"expanded":true,"children":[{"topic":"A mind map core","id":"beeb823afd6d2114"},{"topic":"Free","id":"c1f068377de9f3a0"},{"topic":"Open-Source","id":"c1f06d38a09f23ca"},{"topic":"Use without JavaScript framework","id":"c1f06e4cbcf16463","expanded":true,"children":[]},{"topic":"Use in your own project","id":"c1f1f11a7fbf7550","children":[{"topic":"import MindElixir from 'mind-elixir'","id":"c1f1e245b0a89f9b"},{"topic":"new MindElixir({...}).init(data)","id":"c1f1ebc7072c8928"}]},{"topic":"Easy to use","id":"c1f0723c07b408d7","expanded":true,"children":[{"topic":"Use it like other mind map application","id":"c1f09612fd89920d"}]}]},{"topic":"Basics","id":"bd1b66c4b56754d9","direction":0,"expanded":true,"children":[{"topic":"tab - Create a child node","id":"bd1b6892bcab126a"},{"topic":"enter - Create a sibling node","id":"bd1b6b632a434b27"},{"topic":"del - Remove a node","id":"bd1b983085187c0a"}]},{"topic":"Focus mode","id":"bd1b9b94a9a7a913","direction":1,"expanded":true,"children":[{"topic":"Right click and select Focus Mode","id":"bd1bb2ac4bbab458"},{"topic":"Right click and select Cancel Focus Mode","id":"bd1bb4b14d6697c3"}]},{"topic":"Left menu","id":"bd1b9d1816ede134","direction":0,"expanded":true,"children":[{"topic":"Node distribution","id":"bd1ba11e620c3c1a","expanded":true,"children":[{"topic":"Left","id":"bd1c1cb51e6745d3"},{"topic":"Right","id":"bd1c1e12fd603ff6"},{"topic":"Both l & r","id":"bd1c1f03def5c97b"}]}]},{"topic":"Bottom menu","id":"bd1ba66996df4ba4","direction":1,"expanded":true,"children":[{"topic":"Full screen","id":"bd1ba81d9bc95a7e"},{"topic":"Return to Center","id":"bd1babdd5c18a7a2"},{"topic":"Zoom in","id":"bd1bae68e0ab186e"},{"topic":"Zoom out","id":"bd1bb06377439977"}]},{"topic":"Link","id":"bd1beff607711025","direction":0,"expanded":true,"children":[{"topic":"Right click and select Link","id":"bd1bf320da90046a"},{"topic":"Click the target you want to link","id":"bd1bf6f94ff2e642"},{"topic":"Modify link with control points","id":"bd1c0c4a487bd036"}]},{"topic":"Node style","id":"bd1c217f9d0b20bd","direction":0,"expanded":true,"children":[{"topic":"Font Size","id":"bd1c24420cd2c2f5","style":{"fontSize":"32","color":"#3298db"}},{"topic":"Font Color","id":"bd1c2a59b9a2739c","style":{"color":"#c0392c"}},{"topic":"Background Color","id":"bd1c2de33f057eb4","style":{"color":"#bdc3c7","background":"#2c3e50"}},{"topic":"Add tags","id":"bd1cff58364436d0","tags":["Completed"]},{"topic":"Add icons","id":"bd1d0317f7e8a61a","icons":["😂"],"tags":["www"]},{"topic":"Bolder","id":"bd41fd4ca32322a4","style":{"fontWeight":"bold"}},{"topic":"Hyper link","id":"bd41fd4ca32322a5","hyperLink":"https://github.com/ssshooter/mind-elixir-core"}]},{"topic":"Draggable","id":"bd1f03fee1f63bc6","direction":1,"expanded":true,"children":[{"topic":"Drag a node to another node\nand the former one will become a child node of latter one","id":"bd1f07c598e729dc"}]},{"topic":"Export data","id":"beeb7586973430db","direction":1,"expanded":true,"children":[{"topic":"JSON","id":"beeb784cc189375f"},{"topic":"HTML","id":"beeb7a6bec2d68f5"},{"topic":"SVG","id":"beeb7a6bec2d68e6"}]},{"topic":"Caution","id":"bd42dad21aaf6bae","direction":0,"style":{"background":"#f1c40e"},"expanded":true,"children":[{"topic":"Only save manually","id":"bd42e1d0163ebf04","expanded":true,"children":[{"topic":"Save button in the top-right corner","id":"bd42e619051878b3","branchColor":"green","expanded":true,"children":[]},{"topic":"ctrl + S","id":"bd42e97d7ac35e99"}]}]}],"expanded":true},"arrows":[{"id":"ac5fb1df7345e9c4","label":"Render","from":"beeb784cc189375f","to":"beeb7a6bec2d68f5","delta1":{"x":142.8828125,"y":-57},"delta2":{"x":146.1171875,"y":45}}],"summaries":[{"id":"a5e68e6a2ce1b648","parent":"bd42e1d0163ebf04","start":0,"end":1,"text":"summary"},{"id":"a5e6978f1bc69f4a","parent":"bd4313fbac40284b","start":3,"end":5,"text":"summary"}],"direction":0,"theme":{"name":"Dark","palette":["#848FA0","#748BE9","#D2F9FE","#4145A5","#789AFA","#706CF4","#EF987F","#775DD5","#FCEECF","#DA7FBC"],"cssVar":{"--main-color":"#ffffff","--main-bgcolor":"#4c4f69","--color":"#cccccc","--bgcolor":"#252526","--panel-color":"#ffffff","--panel-bgcolor":"#2d3748","--panel-border-color":"#696969"}}} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mind map/1_new note.json b/demo/User Guide/Trilium Demo/Mind map/1_new note.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/demo/User Guide/Trilium Demo/Mind map/new note.json b/demo/User Guide/Trilium Demo/Mind map/new note.json deleted file mode 100644 index b73e5bf70..000000000 --- a/demo/User Guide/Trilium Demo/Mind map/new note.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"1add248a269dc540","topic":"new topic","root":true,"children":[{"topic":"sfg","id":"1add2e114258aa6f"}]},"arrows":[],"summaries":[],"direction":0,"theme":{"name":"Latte","palette":["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],"cssVar":{"--main-color":"#444446","--main-bgcolor":"#ffffff","--color":"#777777","--bgcolor":"#f6f6f6","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea"}}} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mind map/new note/new note.json b/demo/User Guide/Trilium Demo/Mind map/new note/new note.json deleted file mode 100644 index cb4b5098a..000000000 --- a/demo/User Guide/Trilium Demo/Mind map/new note/new note.json +++ /dev/null @@ -1 +0,0 @@ -{"nodeData":{"id":"1adc13eb15e57c17","topic":"new topic","root":true,"children":[{"topic":"asdfas","id":"1adc142dd5a11537","children":[{"topic":"adsf","id":"1adc14819bdcb38d"},{"topic":"asd","id":"1adc14c6920bc68a","children":[{"topic":"asd","id":"1adc1aab9383a26f","children":[{"topic":"asd","id":"1adc1b14942f7a44"}]}]},{"topic":"new node","id":"1adc14fc5f38fd4c"},{"topic":"adsf","id":"1adc152588d29a91"},{"topic":"asdf","id":"1adc19601cdcd9b6"}]},{"topic":"asdf","id":"1add48c7aa544e61","children":[{"topic":"asdf","id":"1add4917919fe495"}]},{"topic":"The quick brownie foxie","id":"1ade2085c2cd91a0"}]},"arrows":[],"summaries":[],"direction":1,"theme":{"name":"Latte","palette":["#dd7878","#ea76cb","#8839ef","#e64553","#fe640b","#df8e1d","#40a02b","#209fb5","#1e66f5","#7287fd"],"cssVar":{"--main-color":"#444446","--main-bgcolor":"#ffffff","--color":"#777777","--bgcolor":"#f6f6f6","--panel-color":"#444446","--panel-bgcolor":"#ffffff","--panel-border-color":"#eaeaea"}}} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Mind map_mindmap-export.svg b/demo/User Guide/Trilium Demo/Mind map_mindmap-export.svg deleted file mode 100644 index 31a0b83eb..000000000 --- a/demo/User Guide/Trilium Demo/Mind map_mindmap-export.svg +++ /dev/null @@ -1,2 +0,0 @@ -Rendersummarysummary
What is Mind Elixir
A mind map core
Free
Open-Source
Use without JavaScript framework
Use in your own project
import MindElixir from 'mind-elixir'
new MindElixir({...}).init(data)
Easy to use
Use it like other mind map application
Basics
tab - Create a child node
enter - Create a sibling node
del - Remove a node
Focus mode
Right click and select Focus Mode
Right click and select Cancel Focus Mode
Left menu
Node distribution
Left
Right
Both l & r
Bottom menu
Full screen
Return to Center
Zoom in
Zoom out
Link
Right click and select Link
Click the target you want to link
Modify link with control points
Node style
Font Size
Font Color
Background Color
Add tags
Add icons
Bolder
Hyper link
Draggable
Drag a node to another node -and the former one will become a child node of latter one
Export data
JSON
HTML
SVG
Caution
Only save manually
Save button in the top-right corner
ctrl + S
Mind Elixir
CompletedwwwMind Map Core😂🔗
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Custom request handler.js b/demo/User Guide/Trilium Demo/Scripting examples/Custom request handler.js deleted file mode 100644 index 99b71b71c..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Custom request handler.js +++ /dev/null @@ -1,28 +0,0 @@ -return api.res.send(404); - -/** - * To activate this demo, comment (or remove) the very first line of this code note. - * This is deactivated because custom request handler like this one can be a security risk. - * To test this, execute the following curl request: curl -X POST http://localhost:37740/custom/create-note -H "Content-Type: application/json" -d "{ \"secret\": \"secret-password\", \"title\": \"hello\", \"content\": \"world\" }" - * (host and port might have to be adjusted based on your setup) - * - * See https://github.com/zadam/trilium/wiki/Custom-request-handler for details. - */ - -const {req, res} = api; -const {secret, title, content} = req.body; - -if (req.method == 'POST' && secret === 'secret-password') { - // notes must be saved somewhere in the tree hierarchy specified by a parent note. - // This is defined by a relation from this code note to the "target" parent note - // alternetively you can just use constant noteId for simplicity (get that from "Note Info" dialog of the desired parent note) - const targetParentNoteId = api.currentNote.getRelationValue('targetNote'); - - const {note} = api.createTextNote(targetParentNoteId, title, content); - const notePojo = note.getPojo(); - - res.status(201).json(notePojo); -} -else { - res.send(400); -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html deleted file mode 100644 index 5f5417f5c..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template.html +++ /dev/null @@ -1,12 +0,0 @@ -
- - -
- - - - - - -
Attribute nameCount
-
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js deleted file mode 100644 index 4f7d3872b..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js.js +++ /dev/null @@ -1,12 +0,0 @@ -const attrCounts = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - name, COUNT(*) AS count - FROM attributes - WHERE isDeleted = 0 - GROUP BY name - ORDER BY count DESC`); -}); - -renderPieChart(attrCounts.length <= 10 ? attrCounts : attrCounts.splice(0, 10)); -renderTable(attrCounts); \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js deleted file mode 100644 index db0269cb4..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart.js +++ /dev/null @@ -1,45 +0,0 @@ -module.exports = data => { - const ctx = api.$container.find('.stats-canvas')[0].getContext("2d"); - - const myPieChart = new Chart(ctx, { - type: 'pie', - data: { - datasets: [{ - data: data.map(nc => nc.count), - backgroundColor: ['#3366CC','#DC3912','#FF9900','#109618','#990099','#3B3EAC','#0099C6','#DD4477','#66AA00','#B82E2E','#316395','#994499','#22AA99','#AAAA11','#6633CC','#E67300','#8B0707','#329262','#5574A6','#3B3EAC'], - datalabels: { - anchor: 'end' - } - }], - labels: data.map(nc => nc.name) - }, - options: { - legend: { - display: false - }, - plugins: { - datalabels: { - backgroundColor: function(context) { - return context.dataset.backgroundColor; - }, - borderColor: 'white', - borderRadius: 25, - borderWidth: 2, - color: 'white', - display: function(context) { - var dataset = context.dataset; - var count = dataset.data.length; - var value = dataset.data[context.dataIndex]; - return value > count * 1.5; - }, - font: { - weight: 'bold' - }, - formatter: function(value, context) { - return context.chart.data.labels[context.dataIndex] + ": " + Math.round(value); - } - } - } - } - }); -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html deleted file mode 100644 index 64e4de7c4..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chart.js.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - chart.js - - - -
-

chart.js

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js deleted file mode 100644 index fb45222c7..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderPieChart/chartjs-plugin-datalabe.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * chartjs-plugin-datalabels v2.0.0 - * https://chartjs-plugin-datalabels.netlify.app - * (c) 2017-2021 chartjs-plugin-datalabels contributors - * Released under the MIT license - */ -!function(t,e){(t="undefined"!=typeof globalThis?globalThis:t||self).ChartDataLabels=e(t.Chart.helpers,t.Chart)}(this,(function(t,e){"use strict";var r=function(){if("undefined"!=typeof window){if(window.devicePixelRatio)return window.devicePixelRatio;var t=window.screen;if(t)return(t.deviceXDPI||1)/(t.logicalXDPI||1)}return 1}(),a=function(e){var r,a=[];for(e=[].concat(e);e.length;)"string"==typeof(r=e.pop())?a.unshift.apply(a,r.split("\n")):Array.isArray(r)?e.push.apply(e,r):t.isNullOrUndef(e)||a.unshift(""+r);return a},o=function(t,e,r){var a,o=[].concat(e),n=o.length,i=t.font,l=0;for(t.font=r.string,a=0;ar.right&&(a|=2),er.bottom&&(a|=4),a}function u(t,e){var r,a,o=e.anchor,n=t;return e.clamp&&(n=function(t,e){for(var r,a,o,n=t.x0,i=t.y0,l=t.x1,u=t.y1,d=s(n,i,e),c=s(l,u,e);d|c&&!(d&c);)8&(r=d||c)?(a=n+(l-n)*(e.top-i)/(u-i),o=e.top):4&r?(a=n+(l-n)*(e.bottom-i)/(u-i),o=e.bottom):2&r?(o=i+(u-i)*(e.right-n)/(l-n),a=e.right):1&r&&(o=i+(u-i)*(e.left-n)/(l-n),a=e.left),r===d?d=s(n=a,i=o,e):c=s(l=a,u=o,e);return{x0:n,x1:l,y0:i,y1:u}}(n,e.area)),"start"===o?(r=n.x0,a=n.y0):"end"===o?(r=n.x1,a=n.y1):(r=(n.x0+n.x1)/2,a=(n.y0+n.y1)/2),function(t,e,r,a,o){switch(o){case"center":r=a=0;break;case"bottom":r=0,a=1;break;case"right":r=1,a=0;break;case"left":r=-1,a=0;break;case"top":r=0,a=-1;break;case"start":r=-r,a=-a;break;case"end":break;default:o*=Math.PI/180,r=Math.cos(o),a=Math.sin(o)}return{x:t,y:e,vx:r,vy:a}}(r,a,t.vx,t.vy,e.align)}var d=function(t,e){var r=(t.startAngle+t.endAngle)/2,a=Math.cos(r),o=Math.sin(r),n=t.innerRadius,i=t.outerRadius;return u({x0:t.x+a*n,y0:t.y+o*n,x1:t.x+a*i,y1:t.y+o*i,vx:a,vy:o},e)},c=function(t,e){var r=l(t,e.origin),a=r.x*t.options.radius,o=r.y*t.options.radius;return u({x0:t.x-a,y0:t.y-o,x1:t.x+a,y1:t.y+o,vx:r.x,vy:r.y},e)},h=function(t,e){var r=l(t,e.origin),a=t.x,o=t.y,n=0,i=0;return t.horizontal?(a=Math.min(t.x,t.base),n=Math.abs(t.base-t.x)):(o=Math.min(t.y,t.base),i=Math.abs(t.base-t.y)),u({x0:a,y0:o+i,x1:a+n,y1:o,vx:r.x,vy:r.y},e)},f=function(t,e){var r=l(t,e.origin);return u({x0:t.x,y0:t.y,x1:t.x,y1:t.y,vx:r.x,vy:r.y},e)},x=function(t){return Math.round(t*r)/r};function y(t,e){var r=e.chart.getDatasetMeta(e.datasetIndex).vScale;if(!r)return null;if(void 0!==r.xCenter&&void 0!==r.yCenter)return{x:r.xCenter,y:r.yCenter};var a=r.getBasePixel();return t.horizontal?{x:a,y:null}:{x:null,y:a}}function v(t,e,r){var a=r.backgroundColor,o=r.borderColor,n=r.borderWidth;(a||o&&n)&&(t.beginPath(),function(t,e,r,a,o,n){var i=Math.PI/2;if(n){var l=Math.min(n,o/2,a/2),s=e+l,u=r+l,d=e+a-l,c=r+o-l;t.moveTo(e,u),sr.x+r.w+2||t.y>r.y+r.h+2)},intersects:function(t){var e,r,a,o=this._points(),n=t._points(),i=[M(o[0],o[1]),M(o[0],o[3])];for(this._rotation!==t._rotation&&i.push(M(n[0],n[1]),M(n[0],n[3])),e=0;et.getProps([e],!0)[e]}),n=a.geometry(),i=$(l,a.model(),n),o._box.update(i,n,a.rotation()));(function(t,e){var r,a,o,n;for(r=t.length-1;r>=0;--r)for(o=t[r].$layout,a=r-1;a>=0&&o._visible;--a)(n=t[a].$layout)._visible&&o._box.intersects(n._box)&&e(o,n)})(t,(function(t,e){var r=t._hidable,a=e._hidable;r&&a||a?e._visible=!1:r&&(t._visible=!1)}))}(t)},lookup:function(t,e){var r,a;for(r=t.length-1;r>=0;--r)if((a=t[r].$layout)&&a._visible&&a._box.contains(e))return t[r];return null},draw:function(t,e){var r,a,o,n,i,l;for(r=0,a=e.length;r - - - - - - - chart.js - - - -
-

chart.js

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js deleted file mode 100644 index 39bfc9b23..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Attribute count/template/js/renderTable.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = counts => { - const $statsTable = api.$container.find('.stats-table'); - - addRow('total', counts.reduce((acc, cur) => acc + cur.count, 0)); - - for (const count of counts) { - addRow(count.name, count.count); - } - - function addRow(name, count) { - $statsTable.append( - $("") - .append($("").text(name)) - .append($("").text(count)) - ); - } -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html deleted file mode 100644 index 2932d9885..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Largest notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows 100 largest notes, including their revisions and attachments.

- - - - - - -
NoteSize
-
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js deleted file mode 100644 index af10eb40a..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Largest notes/template/js.js +++ /dev/null @@ -1,47 +0,0 @@ -const notes = await api.runOnBackend(() => { - const blobSizes = api.sql.getMap(`SELECT blobId, LENGTH(content) FROM blobs`); - const noteBlobIds = api.sql.getRows(` - SELECT - notes.noteId, - notes.blobId, - GROUP_CONCAT(revisions.blobId) AS revisions_blobIds, - GROUP_CONCAT(note_attachments.blobId) AS note_attachments_blobIds, - GROUP_CONCAT(revision_attachments.blobId) AS revision_attachments_blobIds - FROM - notes - LEFT JOIN revisions USING (noteId) - LEFT JOIN attachments AS note_attachments ON notes.noteId = note_attachments.ownerId - LEFT JOIN attachments AS revision_attachments ON revisions.revisionId = revision_attachments.ownerId - GROUP BY noteId`); - - let noteSizes = []; - - for (const {noteId, blobId, revisions_blobIds, note_attachments_blobIds, revision_attachments_blobIds} of noteBlobIds) { - const blobIds = new Set(`${blobId},${revisions_blobIds},${note_attachments_blobIds},${revision_attachments_blobIds}`.split(',').filter(blobId => !!blobId)); - - const lengths = [...blobIds].map(blobId => blobSizes[blobId] || 0); - const totalLength = lengths.reduce((partialSum, a) => partialSum + a, 0); - - noteSizes.push({ noteId, size: totalLength }); - } - - noteSizes.sort((a, b) => a.size > b.size ? -1 : 1); - - noteSizes = noteSizes.splice(0, 100); - - return noteSizes; -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append( - $("").text(note.size + " bytes") - ) - ); -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html deleted file mode 100644 index 84d8504db..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template.html +++ /dev/null @@ -1,8 +0,0 @@ -
- - - - - -
NoteClone count
-
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js deleted file mode 100644 index 63c6f0ba5..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most cloned notes/template/js.js +++ /dev/null @@ -1,26 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(branches.branchId) AS count - FROM notes - JOIN branches USING (noteId) - WHERE notes.isDeleted = 0 - AND branches.isDeleted = 0 - GROUP BY notes.noteId - HAVING count > 1 - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html deleted file mode 100644 index d60e28d8c..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most edited notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows notes with most revisions

- - - - - - -
NoteRevision count
-
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js deleted file mode 100644 index e36d0e698..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most edited notes/template/js.js +++ /dev/null @@ -1,24 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(revisions.revisionId) AS count - FROM notes - JOIN revisions USING (noteId) - WHERE notes.isDeleted = 0 - GROUP BY notes.noteId - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createNoteLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html deleted file mode 100644 index fad5fae88..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most linked notes/template.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

This table shows notes which are linked by other notes through relations

- - - - - - -
NoteRelation count
-
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js deleted file mode 100644 index 53ab6b1c9..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Most linked notes/template/js.js +++ /dev/null @@ -1,26 +0,0 @@ -const notes = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - notes.noteId, - COUNT(attributes.attributeId) AS count - FROM notes - JOIN attributes ON attributes.value = notes.noteId - WHERE notes.isDeleted = 0 - AND attributes.isDeleted = 0 - AND attributes.type = 'relation' - GROUP BY notes.noteId - ORDER BY count DESC - LIMIT 100`); -}); - -const $statsTable = api.$container.find('.stats-table'); - -for (const note of notes) { - $statsTable.append( - $("") - .append( - $("").append(await api.createLink(note.noteId, {showNotePath: true})) - ) - .append($("").text(note.count)) - ); -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template.html deleted file mode 100644 index 3cfe66481..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template.html +++ /dev/null @@ -1,13 +0,0 @@ -
- - -
- - - - - - - -
Note typeCount (not deleted)Count (deleted)
-
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js deleted file mode 100644 index 4a4eecb7b..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js.js +++ /dev/null @@ -1,20 +0,0 @@ -const noteCounts = await api.runOnBackend(() => { - return api.sql.getRows(` - SELECT - type, - isDeleted, - SUM(CASE WHEN isDeleted=0 THEN 1 ELSE 0 END) AS countNotDeleted, - SUM(CASE WHEN isDeleted=1 THEN 1 ELSE 0 END) AS countDeleted - FROM notes - GROUP BY type - ORDER BY countNotDeleted DESC`); -}); - -renderPieChart(noteCounts.map(nc => { - return { - name: nc.type, - count: nc.countNotDeleted - }; -})); - -renderTable(noteCounts); \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html deleted file mode 100644 index d08203fb2..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderPieChart.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - renderPieChart - - - -
-

renderPieChart

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js b/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js deleted file mode 100644 index 353653eae..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Statistics/Note type count/template/js/renderTable.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = counts => { - const $statsTable = api.$container.find('.stats-table'); - - addRow('total', - counts.reduce((acc, cur) => acc + cur.countNotDeleted, 0), - counts.reduce((acc, cur) => acc + cur.countDeleted, 0) - ); - - for (const count of counts) { - addRow(count.type, count.countNotDeleted, count.countDeleted); - } - - function addRow(type, countNotDeleted, countDeleted) { - $statsTable.append( - $("") - .append($("").text(type)) - .append($("").text(countNotDeleted)) - .append($("").text(countDeleted)) - ); - } -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager.html deleted file mode 100644 index 66ff51f4a..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - Task manager - - - -
-

Task manager

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

This is a simple TODO/Task manager. You can see some description and explanation - here: https://github.com/zadam/trilium/wiki/Task-manager - -

-

Please note that this is meant as scripting example only and feature/bug - support is very limited.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Create Launcher.js b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Create Launcher.js deleted file mode 100644 index 1fb4c4430..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Create Launcher.js +++ /dev/null @@ -1,10 +0,0 @@ -// will add a launcher to the left sidebar -api.createOrUpdateLauncher({ - id: 'taskmanager', - type: 'script', - title: 'New task', - icon: 'bx-task', - keyboardShortcut: 'alt+n', - scriptNoteId: api.currentNote.getRelationValue('createNewTask'), - isVisible: true -}); \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html deleted file mode 100644 index 373124100..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - Buy a board game for Alice - - - -
-

Buy a board game for Alice

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg deleted file mode 100644 index f0135ec7b..000000000 Binary files a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.jpg and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html deleted file mode 100644 index edeeeae45..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Dentist appointment - - - -
-

Dentist appointment

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html deleted file mode 100644 index 8bf91646b..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Get a gym membership - - - -
-

Get a gym membership

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Just in time for new years resolution!

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css deleted file mode 100644 index 4d4b43b71..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/CSS.css +++ /dev/null @@ -1,7 +0,0 @@ -span.fancytree-node.todo .fancytree-title { - color: red !important; -} - -span.fancytree-node.done .fancytree-title { - color: green !important; -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js deleted file mode 100644 index 56292594d..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed.js +++ /dev/null @@ -1,63 +0,0 @@ -if (!["task", "location", "tag", "todoDate", "doneDate"].includes(api.originEntity.name)) { - return; -} - -const tagRootNote = api.getNoteWithLabel('taskTagRoot'); -const doneRootNote = api.getNoteWithLabel('taskDoneRoot'); -const todoRootNote = api.getNoteWithLabel('taskTodoRoot'); - -if (!tagRootNote || !doneRootNote || !todoRootNote) { - console.log("One of the tagRootNote, doneRootNote or todoRootNote does not exist"); - return; -} - -const note = api.originEntity.getNote(); - -if (note.isDeleted) { - return; -} - -const attributes = note.getAttributes(); - -const todoDate = note.getLabelValue('todoDate'); -const doneDate = note.getLabelValue('doneDate'); - -function isWithinExpectedRange(date) { - if (!date) { - return true; - } - - const year = parseInt(date.substr(0, 4)); - - return year >= 2010 && year < 2050; -} - -if (!isWithinExpectedRange(todoDate) || !isWithinExpectedRange(doneDate)) { - console.log(`One or both dates - ${todoDate}, ${doneDate} - is outside of expected range`); - - return; -} - -const isTaskDone = !!doneDate; - -api.toggleNoteInParent(isTaskDone, note.noteId, doneRootNote.noteId); -api.toggleNoteInParent(!isTaskDone, note.noteId, todoRootNote.noteId); - -const location = note.getLabelValue('location'); -const locationRootNote = api.getNoteWithLabel('taskLocationRoot'); - -reconcileAssignments(note, locationRootNote, location ? [location] : [], 'taskLocationNote', isTaskDone); - -const tags = attributes.filter(attr => attr.type === 'label' && attr.name === 'tag').map(attr => attr.value); - -reconcileAssignments(note, tagRootNote, tags, 'taskTagNote', isTaskDone); - -note.toggleLabel(isTaskDone, "cssClass", "done"); - -const doneTargetNoteId = isTaskDone ? api.getDayNote(doneDate).noteId : null; -api.setNoteToParent(note.noteId, 'DONE', doneTargetNoteId); - -note.toggleLabel(!isTaskDone, "cssClass", "todo"); - -const todoTargetNoteId = (!isTaskDone && todoDate) ? api.getDayNote(todoDate).noteId : null; -api.setNoteToParent(note.noteId, 'TODO', todoTargetNoteId); \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js deleted file mode 100644 index bf3503987..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/attribute changed/reconcileAssignments.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = function (note, categoryRootNote, assignedCategories, labelName, isTaskDone) { - const found = {}; - - for (const categoryNote of categoryRootNote.getChildNotes()) { - const label = categoryNote.getLabel(labelName); - - if (label) { - found[label.value] = !isTaskDone && assignedCategories.includes(label.value); - - api.toggleNoteInParent(found[label.value], note.noteId, categoryNote.noteId); - } - } - - if (!isTaskDone) { - for (const assignedCategory of assignedCategories) { - if (!found[assignedCategory]) { - const categoryNote = api.createTextNote(categoryRootNote.noteId, assignedCategory, "").note; - - categoryNote.addLabel(labelName, assignedCategory); - - api.ensureNoteIsPresentInParent(note.noteId, categoryNote.noteId); - } - } - } -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js deleted file mode 100644 index 9dd12721a..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/createNewTask.js +++ /dev/null @@ -1,14 +0,0 @@ -// creating notes is backend (server) responsibility so we need to pass -// the control there -const taskNoteId = await api.runOnBackend(() => { - const todoRootNote = api.getNoteWithLabel('taskTodoRoot'); - const resp = api.createTextNote(todoRootNote.noteId, 'new task', ''); - - return resp.note.noteId; -}); - -// wait until the frontend is fully synced with the changes made on the backend above -await api.waitUntilSynced(); - -// we got an ID of newly created note and we want to immediatelly display it -await api.activateNewNote(taskNoteId); \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html deleted file mode 100644 index dd94d6b00..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - task template - - - -
-

task template

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/gym.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/gym.html deleted file mode 100644 index 5ce1f2115..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/gym.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - gym - - - -
-

gym

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html deleted file mode 100644 index 9225a94ad..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bob likes to read popular science books so something like that ..

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html deleted file mode 100644 index 03f560341..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - Maybe Black Swan? - - - -
-

Maybe Black Swan?

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable - -

-

 

-

The Black Swan: The Impact of the Highly Improbable is - a 2007 book by author and former options trader - Nassim Nicholas Taleb. The book focuses on the extreme impact of rare - and unpredictable outlier events - — and the human tendency to find simplistic explanations for these events, - retrospectively. Taleb calls this the Black Swan theory.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html deleted file mode 100644 index bf8eeb2cb..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html deleted file mode 100644 index 519a95c8a..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html deleted file mode 100644 index bbcd6f3cf..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html deleted file mode 100644 index b6c791688..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html deleted file mode 100644 index fd4df0179..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/TODO/Send invites for christmas party.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Send invites for christmas party - - - -
-

Send invites for christmas party

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html deleted file mode 100644 index 8d8a86979..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/christmas/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html deleted file mode 100644 index 538a712d5..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/groceries/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/health.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/health.html deleted file mode 100644 index ac9a5337b..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/health.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - health - - - -
-

health

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html deleted file mode 100644 index 538a712d5..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy milk.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy milk - - - -
-

Buy milk

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html b/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html deleted file mode 100644 index 8d8a86979..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Task manager/Tags/shopping/Buy some book for Bob.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Buy some book for Bob - - - -
-

Buy some book for Bob

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html b/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html deleted file mode 100644 index 6966e949a..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation.html +++ /dev/null @@ -1,5 +0,0 @@ -
- See explanation here. - - -
\ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js b/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js deleted file mode 100644 index 3c514402a..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code.js +++ /dev/null @@ -1,46 +0,0 @@ -async function getChartData() { - const days = await api.runOnBackend(() => { - const notes = api.getNotesWithLabel('weight'); - const days = []; - - for (const note of notes) { - const date = note.getLabelValue('dateNote'); - const weight = parseFloat(note.getLabelValue('weight')); - - if (date && weight) { - days.push({ date, weight }); - } - } - - days.sort((a, b) => a.date > b.date ? 1 : -1); - - return days; - }); - - const datasets = [ - { - label: "Weight (kg)", - backgroundColor: 'red', - borderColor: 'red', - data: days.map(day => day.weight), - fill: false, - spanGaps: true, - datalabels: { - display: false - }, - tension: 0.3 - } - ]; - - return { - datasets: datasets, - labels: days.map(day => day.date) - }; -} - -const ctx = api.$container.find("canvas")[0].getContext("2d"); - -new chartjs.Chart(ctx, { - type: 'line', - data: await getChartData() -}); \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js b/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js deleted file mode 100644 index 07b5445e5..000000000 --- a/demo/User Guide/Trilium Demo/Scripting examples/Weight Tracker/Implementation/JS code/chart.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * Chart.js v3.7.0 - * https://www.chartjs.org - * (c) 2021 Chart.js Contributors - * Released under the MIT License - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";const t="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function e(e,i,s){const n=s||(t=>Array.prototype.slice.call(t));let o=!1,a=[];return function(...s){a=n(s),o||(o=!0,t.call(window,(()=>{o=!1,e.apply(i,a)})))}}function i(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const s=t=>"start"===t?"left":"end"===t?"right":"center",n=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,o=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;var a=new class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=t.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}; -/*! - * @kurkle/color v0.1.9 - * https://github.com/kurkle/color#readme - * (c) 2020 Jukka Kurkela - * Released under the MIT License - */const r={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},l="0123456789ABCDEF",h=t=>l[15&t],c=t=>l[(240&t)>>4]+l[15&t],d=t=>(240&t)>>4==(15&t);function u(t){var e=function(t){return d(t.r)&&d(t.g)&&d(t.b)&&d(t.a)}(t)?h:c;return t?"#"+e(t.r)+e(t.g)+e(t.b)+(t.a<255?e(t.a):""):t}function f(t){return t+.5|0}const g=(t,e,i)=>Math.max(Math.min(t,i),e);function p(t){return g(f(2.55*t),0,255)}function m(t){return g(f(255*t),0,255)}function x(t){return g(f(t/2.55)/100,0,1)}function b(t){return g(f(100*t),0,100)}const _=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const y=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function v(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function w(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function M(t,e,i){const s=v(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function k(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=n===e?(i-s)/h+(i>16&255,o>>8&255,255&o]}return t}(),T.transparent=[0,0,0,0]);const e=T[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}function R(t,e,i){if(t){let s=k(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=P(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function E(t,e){return t?Object.assign(e||{},t):t}function I(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=m(t[3]))):(e=E(t,{r:0,g:0,b:0,a:1})).a=m(e.a),e}function z(t){return"r"===t.charAt(0)?function(t){const e=_.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=255&(e[8]?p(t):255*t)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?p(i):i),s=255&(e[4]?p(s):s),n=255&(e[6]?p(n):n),{r:i,g:s,b:n,a:o}}}(t):C(t)}class F{constructor(t){if(t instanceof F)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=I(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*r[s[1]],g:255&17*r[s[2]],b:255&17*r[s[3]],a:5===o?17*r[s[4]]:255}:7!==o&&9!==o||(n={r:r[s[1]]<<4|r[s[2]],g:r[s[3]]<<4|r[s[4]],b:r[s[5]]<<4|r[s[6]],a:9===o?r[s[7]]<<4|r[s[8]]:255})),i=n||L(t)||z(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=E(this._rgb);return t&&(t.a=x(t.a)),t}set rgb(t){this._rgb=I(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${x(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):this._rgb;var t}hexString(){return this._valid?u(this._rgb):this._rgb}hslString(){return this._valid?function(t){if(!t)return;const e=k(t),i=e[0],s=b(e[1]),n=b(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${x(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):this._rgb}mix(t,e){const i=this;if(t){const s=i.rgb,n=t.rgb;let o;const a=e===o?.5:e,r=2*a-1,l=s.a-n.a,h=((r*l==-1?r:(r+l)/(1+r*l))+1)/2;o=1-h,s.r=255&h*s.r+o*n.r+.5,s.g=255&h*s.g+o*n.g+.5,s.b=255&h*s.b+o*n.b+.5,s.a=a*s.a+(1-a)*n.a,i.rgb=s}return i}clone(){return new F(this.rgb)}alpha(t){return this._rgb.a=m(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=f(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return R(this._rgb,2,t),this}darken(t){return R(this._rgb,2,-t),this}saturate(t){return R(this._rgb,1,t),this}desaturate(t){return R(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=k(t);i[0]=D(i[0]+e),i=P(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function B(t){return new F(t)}const V=t=>t instanceof CanvasGradient||t instanceof CanvasPattern;function W(t){return V(t)?t:B(t)}function N(t){return V(t)?t:B(t).saturate(.5).darken(.1).hexString()}function H(){}const j=function(){let t=0;return function(){return t++}}();function $(t){return null==t}function Y(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.substr(0,7)&&"Array]"===e.substr(-6)}function U(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}const X=t=>("number"==typeof t||t instanceof Number)&&isFinite(+t);function q(t,e){return X(t)?t:e}function K(t,e){return void 0===t?e:t}const G=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:t/e,Z=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function J(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function Q(t,e,i,s){let n,o,a;if(Y(t))if(o=t.length,s)for(n=o-1;n>=0;n--)e.call(i,t[n],n);else for(n=0;ni;)t=t[e.substr(i,s-i)],i=s+1,s=rt(e,i);return t}function ht(t){return t.charAt(0).toUpperCase()+t.slice(1)}const ct=t=>void 0!==t,dt=t=>"function"==typeof t,ut=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function ft(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const gt=Object.create(null),pt=Object.create(null);function mt(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>N(e.backgroundColor),this.hoverBorderColor=(t,e)=>N(e.borderColor),this.hoverColor=(t,e)=>N(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t)}set(t,e){return xt(this,t,e)}get(t){return mt(this,t)}describe(t,e){return xt(pt,t,e)}override(t,e){return xt(gt,t,e)}route(t,e,i,s){const n=mt(this,t),o=mt(this,i),a="_"+e;Object.defineProperties(n,{[a]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[a],e=o[s];return U(t)?Object.assign({},e,t):K(t,e)},set(t){this[a]=t}}})}}({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}});const _t=Math.PI,yt=2*_t,vt=yt+_t,wt=Number.POSITIVE_INFINITY,Mt=_t/180,kt=_t/2,St=_t/4,Pt=2*_t/3,Dt=Math.log10,Ct=Math.sign;function Ot(t){const e=Math.round(t);t=Lt(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(Dt(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function At(t){const e=[],i=Math.sqrt(t);let s;for(s=1;st-e)).pop(),e}function Tt(t){return!isNaN(parseFloat(t))&&isFinite(t)}function Lt(t,e,i){return Math.abs(t-e)=t}function Et(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function Ut(t){return!t||$(t.size)||$(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Xt(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function qt(t,e,i,s){let n=(s=s||{}).data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(n=s.data={},o=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let a=0;const r=i.length;let l,h,c,d,u;for(l=0;li.length){for(l=0;l0&&t.stroke()}}function Jt(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==o.strokeColor;let l,h;for(t.save(),t.font=n.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);$(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,o),l=0;lt[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const re=(t,e,i)=>ae(t,i,(s=>t[s][e]ae(t,i,(s=>t[s][e]>=i));function he(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+ht(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function ue(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ce.forEach((e=>{delete t[e]})),delete t._chartjs)}function fe(t){const e=new Set;let i,s;for(i=0,s=t.length;iwindow.getComputedStyle(t,null);function be(t,e){return xe(t).getPropertyValue(e)}const _e=["top","right","bottom","left"];function ye(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=_e[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ve(t,e){const{canvas:i,currentDevicePixelRatio:s}=e,n=xe(i),o="border-box"===n.boxSizing,a=ye(n,"padding"),r=ye(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.native||t,s=i.touches,n=s&&s.length?s[0]:i,{offsetX:o,offsetY:a}=n;let r,l,h=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(o,a,i.target))r=o,l=a;else{const t=e.getBoundingClientRect();r=n.clientX-t.left,l=n.clientY-t.top,h=!0}return{x:r,y:l,box:h}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const we=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=xe(t),o=ye(n,"margin"),a=me(n.maxWidth,t,"clientWidth")||wt,r=me(n.maxHeight,t,"clientHeight")||wt,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=pe(t);if(o){const t=o.getBoundingClientRect(),a=xe(o),r=ye(a,"border","width"),l=ye(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=me(a.maxWidth,o,"clientWidth"),n=me(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||wt,maxHeight:n||wt}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=ye(n,"border","width"),e=ye(n,"padding");h-=e.width+t.width,c-=e.height+t.height}return h=Math.max(0,h-o.width),c=Math.max(0,s?Math.floor(h/s):c-o.height),h=we(Math.min(h,a,l.maxWidth)),c=we(Math.min(c,r,l.maxHeight)),h&&!c&&(c=we(h/2)),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=n/s,t.width=o/s;const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Pe(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t,e){return"native"in t?{x:t.x,y:t.y}:ve(t,e)}function Ce(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&a&&o.length){const t=r._reversePixels?le:re;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n="function"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Oe(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[r](n[a],s)&&o.push({element:t,datasetIndex:e,index:i}),t.inRange(n.x,n.y,s)&&(l=!0)})),i.intersect&&!l?[]:o}var Ee={modes:{index(t,e,i,s){const n=De(e,t),o=i.axis||"x",a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s),r=[];return a.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=a[0].index,i=t.data[e];i&&!i.skip&&r.push({element:i,datasetIndex:t.index,index:e})})),r):[]},dataset(t,e,i,s){const n=De(e,t),o=i.axis||"xy";let a=i.intersect?Ae(t,n,o,s):Le(t,n,o,!1,s);if(a.length>0){const e=a[0].datasetIndex,i=t.getDatasetMeta(e).data;a=[];for(let t=0;tAe(t,De(e,t),i.axis||"xy",s),nearest:(t,e,i,s)=>Le(t,De(e,t),i.axis||"xy",i.intersect,s),x:(t,e,i,s)=>Re(t,e,{axis:"x",intersect:i.intersect},s),y:(t,e,i,s)=>Re(t,e,{axis:"y",intersect:i.intersect},s)}};const Ie=new RegExp(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/),ze=new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);function Fe(t,e){const i=(""+t).match(Ie);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function Be(t,e){const i={},s=U(e),n=s?Object.keys(e):e,o=U(t)?s?i=>K(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+o(t)||0;return i}function Ve(t){return Be(t,{top:"y",right:"x",bottom:"y",left:"x"})}function We(t){return Be(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Ne(t){const e=Ve(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function He(t,e){t=t||{},e=e||bt.font;let i=K(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=K(t.style,e.style);s&&!(""+s).match(ze)&&(console.warn('Invalid font style specified: "'+s+'"'),s="");const n={family:K(t.family,e.family),lineHeight:Fe(K(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:K(t.weight,e.weight),string:""};return n.string=Ut(n),n}function je(t,e,i,s){let n,o,a,r=!0;for(n=0,o=t.length;ni&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ye(t,e){return Object.assign(Object.create(t),e)}const Ue=["left","top","right","bottom"];function Xe(t,e){return t.filter((t=>t.pos===e))}function qe(t,e){return t.filter((t=>-1===Ue.indexOf(t.pos)&&t.box.axis===e))}function Ke(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ge(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ue.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function ei(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Ke(Xe(e,"left"),!0),n=Ke(Xe(e,"right")),o=Ke(Xe(e,"top"),!0),a=Ke(Xe(e,"bottom")),r=qe(e,"x"),l=qe(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xe(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;Q(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),u=Object.assign({},n);Je(u,Ne(s));const f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=Ge(l.concat(h),d);ei(r.fullSize,f,d,g),ei(l,f,d,g),ei(h,f,d,g)&&ei(l,f,d,g),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(f),si(r.leftAndTop,f,d,g),f.x+=f.w,f.y+=f.h,si(r.rightAndBottom,f,d,g),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},Q(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})}))}};function oi(t,e=[""],i=t,s,n=(()=>t[0])){ct(s)||(s=mi("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>oi([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>ci(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=mi(li(o,t),i),ct(n))return hi(t,n)?gi(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>xi(t).includes(e),ownKeys:t=>xi(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function ai(t,e,i,s){const n={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:ri(t,s),setContext:e=>ai(t,e,i,s),override:n=>ai(t.override(n),e,i,s)};return new Proxy(n,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>ci(t,e,(()=>function(t,e,i){const{_proxy:s,_context:n,_subProxy:o,_descriptors:a}=t;let r=s[e];dt(r)&&a.isScriptable(e)&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),hi(t,e)&&(e=gi(n._scopes,n,t,e));return e}(e,r,t,i));Y(r)&&r.length&&(r=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_descriptors:r}=i;if(ct(o.index)&&s(t))e=e[o.index%e.length];else if(U(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const l of i){const i=gi(s,n,t,l);e.push(ai(i,o,a&&a[t],r))}}return e}(e,r,t,a.isIndexable));hi(e,r)&&(r=ai(r,n,o&&o[e],a));return r}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function ri(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:dt(i)?i:()=>i,isIndexable:dt(s)?s:()=>s}}const li=(t,e)=>t?t+ht(e):e,hi=(t,e)=>U(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function ci(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function di(t,e,i){return dt(t)?t(e,i):t}const ui=(t,e)=>!0===t?e:"string"==typeof t?lt(e,t):void 0;function fi(t,e,i,s,n){for(const o of e){const e=ui(i,o);if(e){t.add(e);const o=di(e._fallback,i,n);if(ct(o)&&o!==i&&o!==s)return o}else if(!1===e&&ct(s)&&i!==s)return null}return!1}function gi(t,e,i,s){const n=e._rootScopes,o=di(e._fallback,i,s),a=[...t,...n],r=new Set;r.add(s);let l=pi(r,a,i,o||i,s);return null!==l&&((!ct(o)||o===i||(l=pi(r,a,o,l,s),null!==l))&&oi(Array.from(r),[""],n,o,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const n=s[e];if(Y(n)&&U(i))return i;return n}(e,i,s))))}function pi(t,e,i,s,n){for(;i;)i=fi(t,e,i,s,n);return i}function mi(t,e){for(const i of e){if(!i)continue;const e=i[t];if(ct(e))return e}}function xi(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}const bi=Number.EPSILON||1e-14,_i=(t,e)=>e"x"===t?"y":"x";function vi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=Vt(o,n),l=Vt(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function wi(t,e="x"){const i=yi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=_i(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)wi(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,Pi=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*yt/i),Di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*yt/i)+1,Ci={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*kt),easeOutSine:t=>Math.sin(t*kt),easeInOutSine:t=>-.5*(Math.cos(_t*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>Si(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>Si(t)?t:Pi(t,.075,.3),easeOutElastic:t=>Si(t)?t:Di(t,.075,.3),easeInOutElastic(t){const e=.1125;return Si(t)?t:t<.5?.5*Pi(2*t,e,.45):.5+.5*Di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-Ci.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*Ci.easeInBounce(2*t):.5*Ci.easeOutBounce(2*t-1)+.5};function Oi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function Ai(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function Ti(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=Oi(t,n,i),r=Oi(n,o,i),l=Oi(o,e,i),h=Oi(a,r,i),c=Oi(r,l,i);return Oi(h,c,i)}const Li=new Map;function Ri(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=Li.get(i);return s||(s=new Intl.NumberFormat(t,e),Li.set(i,s)),s}(e,i).format(t)}function Ei(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ii(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function zi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Fi(t){return"angle"===t?{between:Ht,compare:Wt,normalize:Nt}:{between:Yt,compare:(t,e)=>t-e,normalize:t=>t}}function Bi({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Vi(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Fi(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Fi(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Bi({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Bi({start:_,end:d,loop:u,count:a,style:f})),g}function Wi(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Hi(t,[{start:a,end:r,loop:o}],i,e);return Hi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,rnull===t||""===t;const Gi=!!Se&&{passive:!0};function Zi(t,e,i){t.canvas.removeEventListener(e,i,Gi)}function Ji(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function Qi(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.addedNodes,s),e=e&&!Ji(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ts(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||Ji(i.removedNodes,s),e=e&&!Ji(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const es=new Map;let is=0;function ss(){const t=window.devicePixelRatio;t!==is&&(is=t,es.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ns(t,i,s){const n=t.canvas,o=n&&pe(n);if(!o)return;const a=e(((t,e)=>{const i=o.clientWidth;s(t,e),i{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||a(i,s)}));return r.observe(o),function(t,e){es.size||window.addEventListener("resize",ss),es.set(t,e)}(t,a),r}function os(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){es.delete(t),es.size||window.removeEventListener("resize",ss)}(t)}function as(t,i,s){const n=t.canvas,o=e((e=>{null!==t.ctx&&s(function(t,e){const i=qi[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t,(t=>{const e=t[0];return[e,e.offsetX,e.offsetY]}));return function(t,e,i){t.addEventListener(e,i,Gi)}(n,i,o),o}class rs extends Ui{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",Ki(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(Ki(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const s=i[t];$(s)?e.removeAttribute(t):e.setAttribute(t,s)}));const s=i.style||{};return Object.keys(s).forEach((t=>{e.style[t]=s[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:Qi,detach:ts,resize:ns}[e]||as;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:os,detach:os,resize:os}[e]||Zi)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=pe(t);return!(!e||!e.isConnected)}}function ls(t){return!ge()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?Xi:rs}var hs=Object.freeze({__proto__:null,_detectPlatform:ls,BasePlatform:Ui,BasicPlatform:Xi,DomPlatform:rs});const cs="transparent",ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=W(t||cs),n=s.valid&&W(e||cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class us{constructor(t,e,i,s){const n=e[i];s=je([t.to,s,n,t.from]);const o=je([t.from,n,s]);this._active=!0,this._fn=t.fn||ds[t.type||typeof o],this._easing=Ci[t.easing]||Ci.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=je([t.to,e,s,t.from]),this._from=je([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),bt.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),bt.describe("animations",{_fallback:"animation"}),bt.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}});class gs{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!U(t))return;const e=this._properties;Object.getOwnPropertyNames(t).forEach((i=>{const s=t[i];if(!U(s))return;const n={};for(const t of fs)n[t]=s[t];(Y(s.properties)&&s.properties||[i]).forEach((t=>{t!==i&&e.has(t)||e.set(t,n)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new us(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(a.add(this._chart,i),!0):void 0}}function ps(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function ms(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ms(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i]}}}const ks=t=>"reset"===t||"none"===t,Ss=(t,e)=>e?t:Object.assign({},t);class Ps{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=bs(t.vScale,t),this.addElements()}updateIndex(t){this.index!==t&&Ms(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=K(i.xAxisID,ws(t,"x")),o=e.yAxisID=K(i.yAxisID,ws(t,"y")),a=e.rAxisID=K(i.rAxisID,ws(t,"r")),r=e.indexAxis,l=e.iAxisID=s(r,n,o,a),h=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(l),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&ue(this._data,this),t._stacked&&Ms(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(U(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,h=s;else{h=Y(s[t])?this.parseArrayData(i,s,t,e):U(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const n=()=>null===l[a]||d&&l[a]t&&!e.hidden&&e._stacked&&{keys:ms(i,!0),values:null})(e,i,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:c}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(a);let d,u;function f(){u=s[d];const e=u[a.axis];return!X(u[t.axis])||h>e||c=0;--d)if(!f()){this.updateRangeFromParsed(l,t,u,r);break}return l}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ss(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new gs(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ks(t)||this.chart._animationsDisabled}updateElement(t,e,i,s){ks(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!ks(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}Ds.defaults={},Ds.defaultRoutes=void 0;const Cs={values:t=>Y(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=Dt(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),Ri(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=t/Math.pow(10,Math.floor(Dt(t)));return 1===s||2===s||5===s?Cs.numeric.call(this,t,e,i):""}};var Os={formatters:Cs};function As(t,e){const i=t.options.ticks,s=i.maxTicksLimit||function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),n=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;is)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(n,e,s);if(o>0){let t,i;const s=o>1?Math.round((r-a)/(o-1)):null;for(Ts(e,l,h,$(s)?0:a-s,a),t=0,i=o-1;te.lineWidth,tickColor:(t,e)=>e.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Os.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),bt.route("scale.ticks","color","","color"),bt.route("scale.grid","color","","borderColor"),bt.route("scale.grid","borderColor","","borderColor"),bt.route("scale.title","color","","color"),bt.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t}),bt.describe("scales",{_fallback:"scale"}),bt.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t});const Ls=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i;function Rs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Is(t){return t.drawTicks?t.tickLength:0}function zs(t,e){if(!t.display)return 0;const i=He(t.font,e),s=Ne(t.padding);return(Y(t.text)?t.text.length:1)*i.lineHeight+s.height}function Fs(t,e,i){let n=s(t);return(i&&"right"!==e||!i&&"right"===e)&&(n=(t=>"left"===t?"right":"right"===t?"left":t)(n)),n}class Bs extends Ds{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=q(t,Number.POSITIVE_INFINITY),e=q(e,Number.NEGATIVE_INFINITY),i=q(i,Number.POSITIVE_INFINITY),s=q(s,Number.NEGATIVE_INFINITY),{min:q(t,i),max:q(e,s),minDefined:X(t),maxDefined:X(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:q(i,q(s,i)),max:q(s,q(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){J(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=$e(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=jt(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Is(t.grid)-e.padding-zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=zt(Math.min(Math.asin(jt((h.highest.height+6)/o,-1,1)),Math.asin(jt(a/r,-1,1))-Math.asin(jt(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){J(this.options.afterCalculateLabelRotation,[this])}beforeFit(){J(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Is(n)+o):(t.height=this.maxHeight,t.width=Is(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=It(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){J(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:n[t]||0,height:o[t]||0});return{first:v(0),last:v(e-1),widest:v(_),highest:v(y),widths:n,heights:o}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return $t(this._alignToPixels?Kt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:o}=s,a=n.offset,r=this.isHorizontal(),l=this.ticks.length+(a?1:0),h=Is(n),c=[],d=n.setContext(this.getContext()),u=d.drawBorder?d.borderWidth:0,f=u/2,g=function(t){return Kt(i,t,u)};let p,m,x,b,_,y,v,w,M,k,S,P;if("top"===o)p=g(this.bottom),y=this.bottom-h,w=p-f,k=g(t.top)+f,P=t.bottom;else if("bottom"===o)p=g(this.top),k=t.top,P=g(t.bottom)-f,y=p+f,w=this.top+h;else if("left"===o)p=g(this.right),_=this.right-h,v=p-f,M=g(t.left)+f,S=t.right;else if("right"===o)p=g(this.left),M=t.left,S=g(t.right)-f,_=p+f,v=this.left+h;else if("x"===e){if("center"===o)p=g((t.top+t.bottom)/2+.5);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}k=t.top,P=t.bottom,y=p+f,w=y+h}else if("y"===e){if("center"===o)p=g((t.left+t.right)/2);else if(U(o)){const t=Object.keys(o)[0],e=o[t];p=g(this.chart.scales[t].getPixelForValue(e))}_=p-f,v=_-h,M=t.left,S=t.right}const D=K(s.ticks.maxTicksLimit,l),C=Math.max(1,Math.ceil(l/D));for(m=0;me.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:i+1,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");bt.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&bt.describe(e,t.descriptors)}(t,o,i),this.override&&bt.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in bt[s]&&(delete bt[s][i],this.override&&delete gt[i])}}var Ws=new class{constructor(){this.controllers=new Vs(Ps,"datasets",!0),this.elements=new Vs(Ds,"elements"),this.plugins=new Vs(Object,"plugins"),this.scales=new Vs(Bs,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):Q(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=ht(t);J(i["before"+s],[],i),e[t](i),J(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function Hs(t,e){return e||!1!==t?!0===t?{}:t:null}function js(t,e,i,s){const n=t.pluginScopeKeys(e),o=t.getOptionScopes(i,n);return t.createResolver(o,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function $s(t,e){const i=bt.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function Ys(t,e){return"x"===t||"y"===t?t:e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.charAt(0).toLowerCase();var i}function Us(t){const e=t.options||(t.options={});e.plugins=K(e.plugins,{}),e.scales=function(t,e){const i=gt[t.type]||{scales:{}},s=e.scales||{},n=$s(t.type,e),o=Object.create(null),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!U(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=Ys(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,n),h=i.scales||{};o[r]=o[r]||t,a[t]=ot(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,r=i.indexAxis||$s(n,e),l=(gt[n]||{}).scales||{};Object.keys(l).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,r),n=i[e+"AxisID"]||o[e]||e;a[n]=a[n]||Object.create(null),ot(a[n],[{axis:e},s[n],l[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];ot(e,[bt.scales[e.type],bt.scale])})),a}(t,e)}function Xs(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const qs=new Map,Ks=new Set;function Gs(t,e){let i=qs.get(t);return i||(i=e(),qs.set(t,i),Ks.add(i)),i}const Zs=(t,e,i)=>{const s=lt(e,i);void 0!==s&&t.add(s)};class Js{constructor(t){this._config=function(t){return(t=t||{}).data=Xs(t.data),Us(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Xs(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),Us(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Gs(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return Gs(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return Gs(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return Gs(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>Zs(r,t,e)))),e.forEach((t=>Zs(r,s,t))),e.forEach((t=>Zs(r,gt[n]||{},t))),e.forEach((t=>Zs(r,bt,t))),e.forEach((t=>Zs(r,pt,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),Ks.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,gt[e]||{},bt.datasets[e]||{},{type:e},bt,pt]}resolveNamedOptions(t,e,i,s=[""]){const n={$shared:!0},{resolver:o,subPrefixes:a}=Qs(this._resolverCache,t,s);let r=o;if(function(t,e){const{isScriptable:i,isIndexable:s}=ri(t);for(const n of e){const e=i(n),o=s(n),a=(o||e)&&t[n];if(e&&(dt(a)||tn(a))||o&&Y(a))return!0}return!1}(o,e)){n.$shared=!1;r=ai(o,i=dt(i)?i():i,this.createResolver(t,i,a))}for(const t of e)n[t]=r[t];return n}createResolver(t,e,i=[""],s){const{resolver:n}=Qs(this._resolverCache,t,i);return U(e)?ai(n,e,void 0,s):n}}function Qs(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:oi(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const tn=t=>U(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||dt(t[i])),!1);const en=["top","bottom","left","right","chartArea"];function sn(t,e){return"top"===t||"bottom"===t||-1===en.indexOf(t)&&"x"===e}function nn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function on(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),J(i&&i.onComplete,[t],e)}function an(t){const e=t.chart,i=e.options.animation;J(i&&i.onProgress,[t],e)}function rn(t){return ge()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const ln={},hn=t=>{const e=rn(t);return Object.values(ln).filter((t=>t.canvas===e)).pop()};function cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class dn{constructor(t,e){const s=this.config=new Js(e),n=rn(t),o=hn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas can be reused.");const r=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ls(n)),this.platform.updateConfig(s);const l=this.platform.acquireContext(n,r.aspectRatio),h=l&&l.canvas,c=h&&h.height,d=h&&h.width;this.id=j(),this.ctx=l,this.canvas=h,this.width=d,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ns,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=i((t=>this.update(t)),r.resizeDelay||0),this._dataChanges=[],ln[this.id]=this,l&&h?(a.listen(this,"complete",on),a.listen(this,"progress",an),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:s,_aspectRatio:n}=this;return $(t)?e&&n?n:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Gt(this.canvas,this.ctx),this}stop(){return a.stop(this),this}resize(t,e){a.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),J(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){Q(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=Ys(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),Q(n,(e=>{const n=e.options,o=n.id,a=Ys(o,n),r=K(n.type,e.dtype);void 0!==n.position&&sn(n.position,a)===sn(e.dposition)||(n.position=e.dposition),s[o]=!0;let l=null;if(o in i&&i[o].type===r)l=i[o];else{l=new(Ws.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[l.id]=l}l.init(n,t)})),Q(s,((t,e)=>{t||delete i[e]})),Q(i,(t=>{ni.configure(this,t,t.options),ni.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(nn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){Q(this.scales,(t=>{ni.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);ut(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){cn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ni.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],Q(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Qt(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&te(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}getElementsAtEventForMode(t,e,i,s){const n=Ee.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ye(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);ct(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),a.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};Q(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){Q(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},Q(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!tt(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:Jt(t,this.chartArea,this._minPadding)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=ft(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,J(n.onHover,[t,a,this],this),r&&J(n.onClick,[t,a,this],this));const h=!tt(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}const un=()=>Q(dn.instances,(t=>t._plugins.invalidate())),fn=!0;function gn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}Object.defineProperties(dn,{defaults:{enumerable:fn,value:bt},instances:{enumerable:fn,value:ln},overrides:{enumerable:fn,value:gt},registry:{enumerable:fn,value:Ws},version:{enumerable:fn,value:"3.7.0"},getChart:{enumerable:fn,value:hn},register:{enumerable:fn,value:(...t)=>{Ws.add(...t),un()}},unregister:{enumerable:fn,value:(...t)=>{Ws.remove(...t),un()}}});class pn{constructor(t){this.options=t||{}}formats(){return gn()}parse(t,e){return gn()}format(t,e){return gn()}add(t,e,i){return gn()}diff(t,e,i){return gn()}startOf(t,e,i){return gn()}endOf(t,e){return gn()}}pn.override=function(t){Object.assign(pn.prototype,t)};var mn={_date:pn};function xn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(ct(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function _n(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base=i?1:-1)}(c,e,o)*n,d===o&&(p-=c/2),h=p+c),p===e.getPixelForValue(o)){const t=Ct(c)*e.getLineWidthForValue(o)/2;p+=t,c-=t}return{size:c,base:p,head:h,center:h+c/2}}_calculateBarIndexPixels(t,e){const i=e.scale,s=this.options,n=s.skipNull,o=K(s.maxBarThickness,1/0);let a,r;if(e.grouped){const i=n?this._getStackCount(t):e.stackCount,l="flex"===s.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,{xScale:i,yScale:s}=e,n=this.getParsed(t),o=i.getLabelForValue(n.x),a=s.getLabelForValue(n.y),r=n._custom;return{label:e.label,value:"("+o+", "+a+(r?", "+r:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,r=this.resolveDataElementOptions(e,s),l=this.getSharedOptions(r),h=this.includeOptions(s,l),c=o.axis,d=a.axis;for(let r=e;r""}}}};class Dn extends Ps{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,o,a=t=>+i[t];if(U(i[t])){const{key:t="value"}=this._parsing;a=e=>+lt(i[e],t)}for(n=t,o=t+e;nHt(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Ht(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(kt,c,u),x=g(_t,h,d),b=g(_t+kt,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(c,h,r),p=(i.width-o)/d,m=(i.height-o)/u,x=Math.max(Math.min(p,m)/2,0),b=Z(this.options.radius,x),_=(b-Math.max(b*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=f*b,this.offsetY=g*b,s.total=this.calculateTotal(),this.outerRadius=b-_*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-_*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/yt)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,f=this.resolveDataElementOptions(e,s),g=this.getSharedOptions(f),p=this.includeOptions(s,g);let m,x=this._getRotation();for(m=0;m0&&!isNaN(t)?yt*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s"spacing"!==t,_indexable:t=>"spacing"!==t},Dn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label(t){let e=t.label;const i=": "+t.formattedValue;return Y(e)?(e=e.slice(),e[0]+=i):e+=i,e}}}}};class Cn extends Ps{initialize(){this.enableOptionSharing=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=function(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=jt(Math.min(re(r,a.axis,h).lo,i?s:re(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?jt(Math.max(re(r,a.axis,c).hi+1,i?0:re(e,l,a.getPixelForValue(c)).hi+1),n,s)-n:s-n}return{start:n,count:o}}(e,s,o);this._drawStart=a,this._drawCount=r,function(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a,_stacked:r,_dataset:l}=this._cachedMeta,h=this.resolveDataElementOptions(e,s),c=this.getSharedOptions(h),d=this.includeOptions(s,c),u=o.axis,f=a.axis,{spanGaps:g,segment:p}=this.options,m=Tt(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||n||"none"===s;let b=e>0&&this.getParsed(e-1);for(let h=e;h0&&i[u]-b[u]>m,p&&(g.parsed=i,g.raw=l.data[h]),d&&(g.options=c||this.resolveDataElementOptions(h,e.active?"active":s)),x||this.updateElement(e,h,g,s),b=i}this.updateSharedOptions(c,s,h)}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}Cn.id="line",Cn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},Cn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class On extends Ps{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=Ri(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=this.getDataset(),r=o.options.animation,l=this._cachedMeta.rScale,h=l.xCenter,c=l.yCenter,d=l.getIndexAngle(0)-.5*_t;let u,f=d;const g=360/this.countVisibleElements();for(u=0;u{!isNaN(t.data[s])&&this.chart.getDataVisibility(s)&&i++})),i}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?It(this.resolveDataElementOptions(t,e).angle||i):0}}On.id="polarArea",On.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},On.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i}}=t.legend.options;return e.labels.map(((e,s)=>{const n=t.getDatasetMeta(0).controller.getStyle(s);return{text:e,fillStyle:n.backgroundColor,strokeStyle:n.borderColor,lineWidth:n.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(s),index:s}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}},tooltip:{callbacks:{title:()=>"",label:t=>t.chart.data.labels[t.dataIndex]+": "+t.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class An extends Dn{}An.id="pie",An.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Tn extends Ps{getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this.getDataset(),o=this._cachedMeta.rScale,a="reset"===s;for(let r=e;r"",label:t=>"("+t.label+", "+t.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};var Rn=Object.freeze({__proto__:null,BarController:Sn,BubbleController:Pn,DoughnutController:Dn,LineController:Cn,PolarAreaController:On,PieController:An,RadarController:Tn,ScatterController:Ln});function En(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+kt,s-kt),t.closePath(),t.clip()}function In(t,e,i,s){const n=Be(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return jt(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:jt(n.innerStart,0,a),innerEnd:jt(n.innerEnd,0,a)}}function zn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Fn(t,e,i,s,n){const{x:o,y:a,startAngle:r,pixelMargin:l,innerRadius:h}=e,c=Math.max(e.outerRadius+s+i-l,0),d=h>0?h+s+i+l:0;let u=0;const f=n-r;if(s){const t=((h>0?h-s:0)+(c>0?c-s:0))/2;u=(f-(0!==t?f*t/(t+s):f))/2}const g=(f-Math.max(.001,f*c-i/_t)/c)/2,p=r+g+u,m=n-g-u,{outerStart:x,outerEnd:b,innerStart:_,innerEnd:y}=In(e,d,c,m-p),v=c-x,w=c-b,M=p+x/v,k=m-b/w,S=d+_,P=d+y,D=p+_/S,C=m-y/P;if(t.beginPath(),t.arc(o,a,c,M,k),b>0){const e=zn(w,k,o,a);t.arc(e.x,e.y,b,k,m+kt)}const O=zn(P,m,o,a);if(t.lineTo(O.x,O.y),y>0){const e=zn(P,C,o,a);t.arc(e.x,e.y,y,m+kt,C+Math.PI)}if(t.arc(o,a,d,m-y/d,p+_/d,!0),_>0){const e=zn(S,D,o,a);t.arc(e.x,e.y,_,D+Math.PI,p-kt)}const A=zn(v,p,o,a);if(t.lineTo(A.x,A.y),x>0){const e=zn(v,M,o,a);t.arc(e.x,e.y,x,p-kt,M)}t.closePath()}function Bn(t,e,i,s,n){const{options:o}=e,{borderWidth:a,borderJoinStyle:r}=o,l="inner"===o.borderAlign;a&&(l?(t.lineWidth=2*a,t.lineJoin=r||"round"):(t.lineWidth=a,t.lineJoin=r||"bevel"),e.fullCircles&&function(t,e,i){const{x:s,y:n,startAngle:o,pixelMargin:a,fullCircles:r}=e,l=Math.max(e.outerRadius-a,0),h=e.innerRadius+a;let c;for(i&&En(t,e,o+yt),t.beginPath(),t.arc(s,n,h,o+yt,o,!0),c=0;c=yt||Ht(n,a,r),f=Yt(o,l+d,h+d);return u&&f}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/2,n=(e.spacing||0)/2;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>yt?Math.floor(i/yt):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();let o=0;if(s){o=s/2;const e=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(e)*o,Math.sin(e)*o),this.circumference>=_t&&(o=s)}t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor;const a=function(t,e,i,s){const{fullCircles:n,startAngle:o,circumference:a}=e;let r=e.endAngle;if(n){Fn(t,e,i,s,o+yt);for(let e=0;er&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function Yn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?$n:jn}Vn.id="arc",Vn.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},Vn.defaultRoutes={backgroundColor:"backgroundColor"};const Un="function"==typeof Path2D;function Xn(t,e,i,s){Un&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Wn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=Yn(e);for(const r of n)Wn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class qn extends Ds{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;ki(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ni(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Wi(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?Ai:t.tension||"monotone"===t.cubicInterpolationMode?Ti:Oi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t&&"fill"!==t};class Gn extends Ds{constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2){oo(t)}))}var ro={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void ao(t);const s=t.width;t.data.datasets.forEach(((e,n)=>{const{_data:o,indexAxis:a}=e,r=t.getDatasetMeta(n),l=o||e.data;if("y"===je([a,t.options.indexAxis]))return;if("line"!==r.type)return;const h=t.scales[r.xAxisID];if("linear"!==h.type&&"time"!==h.type)return;if(t.options.parsing)return;let{start:c,count:d}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=jt(re(e,o.axis,a).lo,0,i-1)),s=h?jt(re(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(r,l);if(d<=(i.threshold||4*s))return void oo(e);let u;switch($(o)&&(e._data=l,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":u=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(l,c,d,s,i);break;case"min-max":u=function(t,e,i,s){let n,o,a,r,l,h,c,d,u,f,g=0,p=0;const m=[],x=e+i-1,b=t[e].x,_=t[x].x-b;for(n=e;nf&&(f=r,c=n),g=(p*g+o.x)/++p;else{const i=n-1;if(!$(h)&&!$(c)){const e=Math.min(h,c),s=Math.max(h,c);e!==d&&e!==i&&m.push({...t[e],x:g}),s!==d&&s!==i&&m.push({...t[s],x:g})}n>0&&i!==d&&m.push(t[i]),m.push(o),l=e,p=0,u=f=r,h=c=d=n}}return m}(l,c,d,s);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=u}))},destroy(t){ao(t)}};function lo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=K(i&&i.target,i);return void 0===s&&(s=!!e.backgroundColor),!1!==s&&null!==s&&(!0===s?"origin":s)}(t);if(U(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return X(n)&&Math.floor(n)===n?("-"!==s[0]&&"+"!==s[0]||(n=e+n),!(n===e||n<0||n>=i)&&n):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}class ho{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:yt},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function co(t){return(t.scale||{}).getPointPositionForValue?function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,o=[],a=s.reverse?e.max:e.min,r=s.reverse?e.min:e.max;let l,h,c;if(c="start"===i?a:"end"===i?r:U(i)?i.value:e.getBaseValue(),s.grid.circular)return h=e.getPointPositionForValue(0,a),new ho({x:h.x,y:h.y,radius:e.getDistanceFromCenterForValue(c)});for(l=0;lt;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function fo(t,e,i){const s=[];for(let n=0;n{e=uo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new qn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function xo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!X(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function bo(t,e,i){t.beginPath(),e.path(t),t.lineTo(e.last().x,i),t.lineTo(e.first().x,i),t.closePath(),t.clip()}function _o(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=Nt(n),o=Nt(o)),{property:t,start:n,end:o}}function yo(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function vo(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};"x"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function wo(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}function Mo(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=uo(s,r,n);const l=_o(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Wi(e,l);for(const e of h){const s=_o(i,o[e.start],o[e.end],e.loop),r=Vi(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:yo(l,s,"start",Math.max)},end:{[i]:yo(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,vo(t,a,d&&_o(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():wo(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||wo(t,s,h,n)}t.closePath(),t.fill(f?"evenodd":"nonzero"),t.restore()}}function ko(t,e,i){const s=po(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Qt(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&o!==n&&(bo(t,s,a.top),Mo(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),bo(t,s,a.bottom)),Mo(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),te(t))}var So={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&ko(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;i&&ko(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;s&&!1!==s.fill&&"beforeDatasetDraw"===i.drawTime&&ko(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Po=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class Do extends Ds{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=J(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=He(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=Po(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,n,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const p=i+e/2+n.measureText(t.text).width;o>0&&u+s+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:s},d=Math.max(d,p),u+=s+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:o}}=this,a=Ei(o,this.left,this.width);if(this.isHorizontal()){let o=0,r=n(i,this.left+s,this.right-this.lineWidths[o]);for(const l of e)o!==l.row&&(o=l.row,r=n(i,this.left+s,this.right-this.lineWidths[o])),l.top+=this.top+t+s,l.left=a.leftForLtr(a.x(r),l.width),r+=l.width+s}else{let o=0,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height);for(const l of e)l.col!==o&&(o=l.col,r=n(i,this.top+t+s,this.bottom-this.columnSizes[o].height)),l.top=r,l.left+=this.left+s,l.left=a.leftForLtr(a.x(l.left),l.width),r+=l.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Qt(t,this),this._draw(),te(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:a,labels:r}=t,l=bt.color,h=Ei(t.rtl,this.left,this.width),c=He(r.font),{color:d,padding:u}=r,f=c.size,g=f/2;let p;this.drawTitle(),s.textAlign=h.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:m,boxHeight:x,itemHeight:b}=Po(r,f),_=this.isHorizontal(),y=this._computeTitleHeight();p=_?{x:n(a,this.left+u,this.right-i[0]),y:this.top+u+y,line:0}:{x:this.left+u,y:n(a,this.top+y+u,this.bottom-e[0].height),line:0},Ii(this.ctx,t.textDirection);const v=b+u;this.legendItems.forEach(((w,M)=>{s.strokeStyle=w.fontColor||d,s.fillStyle=w.fontColor||d;const k=s.measureText(w.text).width,S=h.textAlign(w.textAlign||(w.textAlign=r.textAlign)),P=m+g+k;let D=p.x,C=p.y;h.setWidth(this.width),_?M>0&&D+P+u>this.right&&(C=p.y+=v,p.line++,D=p.x=n(a,this.left+u,this.right-i[p.line])):M>0&&C+v>this.bottom&&(D=p.x=D+e[p.line].width+u,p.line++,C=p.y=n(a,this.top+y+u,this.bottom-e[p.line].height));!function(t,e,i){if(isNaN(m)||m<=0||isNaN(x)||x<0)return;s.save();const n=K(i.lineWidth,1);if(s.fillStyle=K(i.fillStyle,l),s.lineCap=K(i.lineCap,"butt"),s.lineDashOffset=K(i.lineDashOffset,0),s.lineJoin=K(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=K(i.strokeStyle,l),s.setLineDash(K(i.lineDash,[])),r.usePointStyle){const o={radius:m*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},a=h.xPlus(t,m/2);Zt(s,o,a,e+g)}else{const o=e+Math.max((f-x)/2,0),a=h.leftForLtr(t,m),r=We(i.borderRadius);s.beginPath(),Object.values(r).some((t=>0!==t))?oe(s,{x:a,y:o,w:m,h:x,radius:r}):s.rect(a,o,m,x),s.fill(),0!==n&&s.stroke()}s.restore()}(h.x(D),C,w),D=o(S,D+m+g,_?D+P:this.right,t.rtl),function(t,e,i){se(s,i.text,t,e+b/2,c,{strikethrough:i.hidden,textAlign:h.textAlign(i.textAlign)})}(h.x(D),C,w),_?p.x+=P+u:p.y+=v})),zi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=He(e.font),o=Ne(e.padding);if(!e.display)return;const a=Ei(t.rtl,this.left,this.width),r=this.ctx,l=e.position,h=i.size/2,c=o.top+h;let d,u=this.left,f=this.width;if(this.isHorizontal())f=Math.max(...this.lineWidths),d=this.top+c,u=n(t.align,u,this.right-f);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);d=c+n(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const g=n(l,u,u+f);r.textAlign=a.textAlign(s(l)),r.textBaseline="middle",r.strokeStyle=e.color,r.fillStyle=e.color,r.font=i.string,se(r,e.text,g,d,i)}_computeTitleHeight(){const t=this.options.title,e=He(t.font),i=Ne(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(Yt(t,this.left,this.right)&&Yt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const a=t.controller.getStyle(i?0:void 0),r=Ne(a.borderWidth);return{text:e[t.index].label,fillStyle:a.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:(r.width+r.height)/4,strokeStyle:a.borderColor,pointStyle:s||a.pointStyle,rotation:a.rotation,textAlign:n||a.textAlign,borderRadius:0,datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Oo extends Ds{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=Y(i.text)?i.text.length:1;this._padding=Ne(i.padding);const n=s*He(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=n:this.width=n}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:o,options:a}=this,r=a.align;let l,h,c,d=0;return this.isHorizontal()?(h=n(r,i,o),c=e+t,l=o-i):("left"===a.position?(h=i+t,c=n(r,s,e),d=-.5*_t):(h=o-t,c=n(r,e,s),d=.5*_t),l=s-e),{titleX:h,titleY:c,maxWidth:l,rotation:d}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=He(e.font),n=i.lineHeight/2+this._padding.top,{titleX:o,titleY:a,maxWidth:r,rotation:l}=this._drawArgs(n);se(t,e.text,0,0,i,{color:e.color,maxWidth:r,rotation:l,textAlign:s(e.align),textBaseline:"middle",translation:[o,a]})}}var Ao={id:"title",_element:Oo,start(t,e,i){!function(t,e){const i=new Oo({ctx:t.ctx,options:e,chart:t});ni.configure(t,i,e),ni.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ni.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const To=new WeakMap;var Lo={id:"subtitle",start(t,e,i){const s=new Oo({ctx:t.ctx,options:i,chart:t});ni.configure(t,s,i),ni.addBox(t,s),To.set(t,s)},stop(t){ni.removeBox(t,To.get(t)),To.delete(t)},beforeUpdate(t,e,i){const s=To.get(t);ni.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Ro={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e-1?t.split("\n"):t}function zo(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Fo(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=He(e.bodyFont),h=He(e.titleFont),c=He(e.footerFont),d=o.length,u=n.length,f=s.length,g=Ne(e.padding);let p=g.height,m=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(p+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){p+=f*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-f)*l.lineHeight+(x-1)*e.bodySpacing}u&&(p+=e.footerMarginTop+u*c.lineHeight+(u-1)*e.footerSpacing);let b=0;const _=function(t){m=Math.max(m,i.measureText(t).width+b)};return i.save(),i.font=h.string,Q(t.title,_),i.font=l.string,Q(t.beforeBody.concat(t.afterBody),_),b=e.displayColors?a+2+e.boxPadding:0,Q(s,(t=>{Q(t.before,_),Q(t.lines,_),Q(t.after,_)})),b=0,i.font=c.string,Q(t.footer,_),i.restore(),m+=g.width,{width:m,height:p}}function Bo(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Vo(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Bo(t,e,i,s),yAlign:s}}function Wo(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=We(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:jt(g,0,s.width-e.width),y:jt(p,0,s.height-e.height)}}function No(t,e,i){const s=Ne(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ho(t){return Eo([],Io(t))}function jo(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}class $o extends Ds{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart||t._chart,this._chart=this.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new gs(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ye(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=i.beforeTitle.apply(this,[t]),n=i.title.apply(this,[t]),o=i.afterTitle.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}getBeforeBody(t,e){return Ho(e.callbacks.beforeBody.apply(this,[t]))}getBody(t,e){const{callbacks:i}=e,s=[];return Q(t,(t=>{const e={before:[],lines:[],after:[]},n=jo(i,t);Eo(e.before,Io(n.beforeLabel.call(this,t))),Eo(e.lines,n.label.call(this,t)),Eo(e.after,Io(n.afterLabel.call(this,t))),s.push(e)})),s}getAfterBody(t,e){return Ho(e.callbacks.afterBody.apply(this,[t]))}getFooter(t,e){const{callbacks:i}=e,s=i.beforeFooter.apply(this,[t]),n=i.footer.apply(this,[t]),o=i.afterFooter.apply(this,[t]);let a=[];return a=Eo(a,Io(s)),a=Eo(a,Io(n)),a=Eo(a,Io(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),Q(l,(e=>{const i=jo(t.callbacks,e);s.push(i.labelColor.call(this,e)),n.push(i.labelPointStyle.call(this,e)),o.push(i.labelTextColor.call(this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Ro[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Fo(this,i),a=Object.assign({},t,e),r=Vo(this.chart,i,a),l=Wo(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=We(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Ei(i.rtl,this.x,this.width);for(t.x=No(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=He(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,oe(t,{x:e,y:g,w:l,h:r,radius:a}),t.fill(),t.stroke(),t.fillStyle=o.backgroundColor,t.beginPath(),oe(t,{x:i,y:g+1,w:l-2,h:r-2,radius:a}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,l,r),t.strokeRect(e,g,l,r),t.fillStyle=o.backgroundColor,t.fillRect(i,g+1,l-2,r-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=He(i.bodyFont);let d=c.lineHeight,u=0;const f=Ei(i.rtl,this.x,this.width),g=function(i){e.fillText(i,f.x(t.x+u),t.y+d/2),t.y+=d+n},p=f.textAlign(o);let m,x,b,_,y,v,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=No(this,p,i),e.fillStyle=i.bodyColor,Q(this.beforeBody,g),u=a&&"right"!==p?"center"===o?l/2+h:l+2+h:0,_=0,v=s.length;_0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Ro[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Fo(this,t),a=Object.assign({},i,this._size),r=Vo(e,t,a),l=Wo(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Ne(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ii(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),zi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!tt(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!tt(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Ro[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}$o.positioners=Ro;var Yo={id:"tooltip",_element:$o,positioners:Ro,afterInit(t,e,i){i&&(t.tooltip=new $o({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip,i={tooltip:e};!1!==t.notifyPlugins("beforeTooltipDraw",i)&&(e&&e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i))},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:H,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},Uo=Object.freeze({__proto__:null,Decimation:ro,Filler:So,Legend:Co,SubTitle:Lo,Title:Ao,Tooltip:Yo});function Xo(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}class qo extends Bs{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if($(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:jt(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:Xo(i,t,K(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){const e=this.getLabels();return t>=0&&te.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}function Ko(t,e,{horizontal:i,minRotation:s}){const n=It(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}qo.id="category",qo.defaults={ticks:{callback:qo.prototype.getLabelForValue}};class Go extends Bs{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return $(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=Ct(s),e=Ct(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=1;(n>=Number.MAX_SAFE_INTEGER||s<=Number.MIN_SAFE_INTEGER)&&(e=Math.abs(.05*n)),a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s=function(t,e){const i=[],{bounds:s,step:n,min:o,max:a,precision:r,count:l,maxTicks:h,maxDigits:c,includeBounds:d}=t,u=n||1,f=h-1,{min:g,max:p}=e,m=!$(o),x=!$(a),b=!$(l),_=(p-g)/(c+1);let y,v,w,M,k=Ot((p-g)/f/u)*u;if(k<1e-14&&!m&&!x)return[{value:g},{value:p}];M=Math.ceil(p/k)-Math.floor(g/k),M>f&&(k=Ot(M*k/f/u)*u),$(r)||(y=Math.pow(10,r),k=Math.ceil(k*y)/y),"ticks"===s?(v=Math.floor(g/k)*k,w=Math.ceil(p/k)*k):(v=g,w=p),m&&x&&n&&Rt((a-o)/n,k/1e3)?(M=Math.round(Math.min((a-o)/k,h)),k=(a-o)/M,v=o,w=a):b?(v=m?o:v,w=x?a:w,M=l-1,k=(w-v)/M):(M=(w-v)/k,M=Lt(M,Math.round(M),k/1e3)?Math.round(M):Math.ceil(M));const S=Math.max(Ft(k),Ft(v));y=Math.pow(10,$(r)?S:r),v=Math.round(v*y)/y,w=Math.round(w*y)/y;let P=0;for(m&&(d&&v!==o?(i.push({value:o}),v0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=X(t)?Math.max(0,t):null,this.max=X(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t,a=(t,e)=>Math.pow(10,Math.floor(Dt(t))+e);i===s&&(i<=0?(n(1),o(10)):(n(a(i,-1)),o(a(s,1)))),i<=0&&n(a(s,-1)),s<=0&&o(a(i,1)),this._zero&&this.min!==this._suggestedMin&&i===a(this.min,0)&&n(a(i,-1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=function(t,e){const i=Math.floor(Dt(e.max)),s=Math.ceil(e.max/Math.pow(10,i)),n=[];let o=q(t.min,Math.pow(10,Math.floor(Dt(e.min)))),a=Math.floor(Dt(o)),r=Math.floor(o/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{n.push({value:o,major:Jo(o)}),++r,10===r&&(r=1,++a,l=a>=0?1:l),o=Math.round(r*Math.pow(10,a)*l)/l}while(an?{start:e-i,end:e}:{start:e,end:e+i}}function ia(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],n=[],o=t._pointLabels.length,a=t.options.pointLabels,r=a.centerPointLabels?_t/o:0;for(let d=0;de.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function na(t){return 0===t||180===t?"center":t<180?"left":"right"}function oa(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function aa(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function ra(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,yt);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o{const i=J(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?ia(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return Nt(t*(yt/(this._pointLabels.length||1))+It(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if($(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if($(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=s.setContext(t.getPointLabelContext(n)),o=He(e.font),{x:a,y:r,textAlign:l,left:h,top:c,right:d,bottom:u}=t._pointLabelItems[n],{backdropColor:f}=e;if(!$(f)){const t=Ne(e.backdropPadding);i.fillStyle=f,i.fillRect(h-t.left,c-t.top,d-h+t.width,u-c+t.height)}se(i,t._pointLabels[n],a,r+o.lineHeight/2,o,{color:e.color,textAlign:l,textBaseline:"middle"})}}(this,n),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e){a=this.getDistanceFromCenterForValue(t.value);!function(t,e,i,s){const n=t.ctx,o=e.circular,{color:a,lineWidth:r}=e;!o&&!s||!a||!r||i<0||(n.save(),n.strokeStyle=a,n.lineWidth=r,n.setLineDash(e.borderDash),n.lineDashOffset=e.borderDashOffset,n.beginPath(),ra(t,i,o,s),n.closePath(),n.stroke(),n.restore())}(this,s.setContext(this.getContext(e-1)),a,n)}})),i.display){for(t.save(),o=n-1;o>=0;o--){const s=i.setContext(this.getPointLabelContext(o)),{color:n,lineWidth:l}=s;l&&n&&(t.lineWidth=l,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,a=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),r=this.getPointPosition(o,a),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(r.x,r.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=He(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Ne(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}se(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}la.id="radialLinear",la.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Os.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}},la.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},la.descriptors={angleLines:{_fallback:"grid"}};const ha={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ca=Object.keys(ha);function da(t,e){return t-e}function ua(t,e){if($(e))return null;const i=t._adapter,{parser:s,round:n,isoWeekday:o}=t._parseOpts;let a=e;return"function"==typeof s&&(a=s(a)),X(a)||(a="string"==typeof s?i.parse(a,s):i.parse(a)),null===a?null:(n&&(a="week"!==n||!Tt(o)&&!0!==o?i.startOf(a,n):i.startOf(a,"isoWeek",o)),+a)}function fa(t,e,i,s){const n=ca.length;for(let o=ca.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function pa(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class ma extends Bs{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e){const i=t.time||(t.time={}),s=this._adapter=new mn._date(t.adapters.date);ot(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:ua(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:a}=this.getUserBounds();function r(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),a||isNaN(t.max)||(n=Math.max(n,t.max))}o&&a||(r(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||r(this.getMinMax(!1))),s=X(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=X(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=he(s,n,this.max);return this._unit=e.unit||(i.autoSkip?fa(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=ca.length-1;o>=ca.indexOf(i);o--){const i=ca[o];if(ha[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return ca[i?ca.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=ca.indexOf(t)+1,i=ca.length;e1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const f="data"===s.ticks.source&&this.getDataTimestamps();for(c=u,d=0;ct-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.time.displayFormats,a=this._unit,r=this._majorUnit,l=a&&o[a],h=r&&o[r],c=i[e],d=r&&h&&c&&c.major,u=this._adapter.format(t,s||(d?h:l)),f=n.ticks.callback;return f?J(f,[u,e,i],this):u}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=re(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=re(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}ma.id="time",ma.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class ba extends ma{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=xa(e,this.min),this._tableRange=xa(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o - Word count: - - -   - - Character count: - -`; - -class WordCountWidget extends api.NoteContextAwareWidget { - get position() { return 100; } // higher value means position towards the bottom/right - - get parentWidget() { return 'center-pane'; } - - isEnabled() { - return super.isEnabled() - && this.note.type === 'text' - && this.note.hasLabel('wordCount'); - } - - doRender() { - this.$widget = $(TPL); - this.$wordCount = this.$widget.find('.word-count'); - this.$characterCount = this.$widget.find('.character-count'); - return this.$widget; - } - - async refreshWithNote(note) { - const {content} = await note.getNoteComplement(); - - const text = $(content).text(); // get plain text only - - const counts = this.getCounts(text); - - this.$wordCount.text(counts.words); - this.$characterCount.text(counts.characters); - } - - getCounts(text) { - const chunks = text - .split(/[\s-+:,/\\]+/) - .filter(chunk => chunk !== ''); - - let words; - - if (chunks.length === 1 && chunks[0] === '') { - words = 0; - } - else { - words = chunks.length; - } - - const characters = chunks.join('').length; - - return {words, characters}; - } - - async entitiesReloadedEvent({loadResults}) { - if (loadResults.isNoteContentReloaded(this.noteId)) { - this.refresh(); - } - } -} - -module.exports = new WordCountWidget(); \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Steel Blue.css b/demo/User Guide/Trilium Demo/Steel Blue.css deleted file mode 100644 index 56f3dec40..000000000 --- a/demo/User Guide/Trilium Demo/Steel Blue.css +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This is a demo of how you can create custom theme for Trilium. You can activate it by going - * into options (top-right corner) in first tab "Appearance". - * - * You can read some details on theming here: http://github.com/zadam/trilium/wiki/Themes - */ - -@font-face { /* This will be used as main UI font (see below) */ - font-family: 'Raleway'; - font-style: normal; - font-weight: 400; - src: url('../../../custom/fonts/raleway.woff2') format('woff2'); -} - -@font-face { /* This will be used as text content font (see below) */ - font-family: 'Garamond'; - font-style: normal; - font-weight: 400; - src: url('../../../custom/fonts/garamond.woff2') format('woff2'); -} - -:root { - --theme-style: light; - - --main-font-family: 'Raleway'; - --main-font-size: normal; - - --tree-font-family: 'Raleway'; - --tree-font-size: normal; - - --detail-font-family: 'Raleway'; - --detail-font-size: normal; - - --monospace-font-family: 'Monospace'; - --monospace-font-size: normal; - - --main-background-color: #404552; - --main-text-color: #AFB8C6; - --main-border-color: #AFB8C6; - - --accented-background-color: #383C4A; - --more-accented-background-color: #2F343F; - - --button-text-color: #AFB8C6; - --button-background-color: #2F343F; - --button-disabled-text-color: #86919F; - --button-disabled-background-color: #404552; - --button-border-color: #333; - --button-border-radius: 2px; - - --primary-button-background-color: #6c757d; - --primary-button-text-color: white; - --primary-button-border-color: #6c757d; - - --muted-text-color: #86919F; - - --input-text-color: #AFB8C6; - --input-background-color: #404552; - - --hover-item-text-color: white; - --hover-item-background-color: #4877B1; - - --active-item-text-color: white; - --active-item-background-color: #4877B1; - - --menu-text-color: #AFB8C6; - --menu-background-color: #383C4A; - - --modal-background-color: #404552; - --modal-backdrop-color: black; - - --left-pane-background-color: #2F343F; - --left-pane-text-color: #AFB8C6; - - --launcher-pane-background-color: #2F343F; - --launcher-pane-text-color: #AFB8C6; - - --active-tab-background-color: #2F343F; - --active-tab-text-color: #AFB8C6; - - --inactive-tab-background-color: #404552; - --inactive-tab-text-color: #AFB8C6; - - --scrollbar-border-color: rgba(175, 184, 198, 0.5); - --tooltip-background-color: #383C4A; - --link-color: lightskyblue; - - --mermaid-theme: forest; -} - -body .global-menu-button { - background-image: url("../../../assets/vX/images/icon-grey.png"); -} - -body .note-detail-editable-text, body .note-detail-readonly-text { - font-size: 120%; /* Garamond is subjectively smaller */ -} - -body .CodeMirror { - filter: invert(100%) hue-rotate(180deg); -} \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 b/demo/User Guide/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 deleted file mode 100644 index c36dcecbb..000000000 Binary files a/demo/User Guide/Trilium Demo/Steel Blue/eb-garamond-v9-latin-reg.woff2 and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 b/demo/User Guide/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 deleted file mode 100644 index eba29a9ab..000000000 Binary files a/demo/User Guide/Trilium Demo/Steel Blue/raleway-v12-latin-regula.woff2 and /dev/null differ diff --git a/demo/User Guide/Trilium Demo/Tech.html b/demo/User Guide/Trilium Demo/Tech.html deleted file mode 100644 index dff1eb16d..000000000 --- a/demo/User Guide/Trilium Demo/Tech.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Tech - - - -
-

Tech

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Expand note on the left pane to see content.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting.html b/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting.html deleted file mode 100644 index 0bf52afa5..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - Bash scripting - - - -
-

Bash scripting

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Bash is a Unix shell and - command languagewritten by Brian Fox for - the GNU Project as - a free software replacement - for the Bourne shell. - First released in 1989, it has been distributed widely as the default - loginshell for most Linux distributions - and Apple's macOS (formerly - OS X). A version is also available for Windows 10.

-

Bash on Wikipedia - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html b/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html deleted file mode 100644 index f0552003e..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - - Bash startup modes - - - -
-

Bash startup modes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Login shell

- -

As a "login shell", Bash reads and sets (executes) the user's profile - from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile - (in that order, using the first one that's readable!).

-

When a login shell exits, Bash reads and executes commands from the file - ~/.bash_logout, if it exists.

-

Why an extra login shell mode? There are many actions and variable sets - that only make sense for the initial user login. That's why all UNIX® shells - have (should have) a "login" mode.

-

Methods to start Bash as a login shell: - -

-
    -
  • the first character of argv[0] is - (a hyphen): traditional UNIX® shells - start from the login binary
  • -
  • Bash is started with the -l option
  • -
  • Bash is started with the --login option
  • -
-

Methods to test for login shell mode: - -

- -

Related switches: - -

-
    -
  • --noprofile disables reading of all profile files
  • -
- -

Interactive shell

- -

When Bash starts as an interactive non-login shell, it reads and executes - commands from ~/.bashrc. This file should contain, for example, aliases, - since they need to be defined in every shell as they're not inherited from - the parent shell.

-

The feature to have a system-wide /etc/bash.bashrc or a similar system-wide - rc-file is specific to vendors and distributors that ship their own, patched variant of Bash. - The classic way to have a system-wide rc file is to source /etc/bashrc - from every user's ~/.bashrc.

-

Methods to test for interactive-shell mode: - -

-
    -
  • the special parameter $- contains the letter i (lowercase I)
  • -
-

Related switches: - -

-
    -
  • -i forces the interactive mode
  • -
  • --norc disables reading of the startup files (e.g. /etc/bash.bashrc if - supported) and ~/.bashrc
  • -
  • --rcfile defines another startup file (instead of /etc/bash.bashrc and - ~/.bashrc)
  • -
- -

SH mode

- -

When Bash starts in SH compatiblity mode, it tries to mimic the startup - behaviour of historical versions of sh as closely as possible, while conforming - to the POSIX® standard as well. The profile files read are /etc/profile - and ~/.profile, if it's a login shell.

-

If it's not a login shell, the environment variable ENV is - evaluated and the resulting filename is used as the name of the startup - file.

-

After the startup files are read, Bash enters the POSIX(r) compatiblity mode (for running, not for starting!).

-

Bash starts in sh compatiblity mode when: - -

-
    -
  • the base filename in argv[0] is sh ( -
    - -
     NB: /bin/sh may be linked to /bin/bash, but that doesn't mean it acts - like /bin/bash  -
    - -
    )
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting/While loop.html b/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting/While loop.html deleted file mode 100644 index 2ec27074b..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Linux/Bash scripting/While loop.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - While loop - - - -
-

While loop

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Documentation: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html - -

#!/bin/bash
-# This script opens 4 terminal windows.
-
-i="0"
-while [ $i -lt 4 ]
-do
-    xterm &
-
-    i=$[$i+1]
-done
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Linux/History.html b/demo/User Guide/Trilium Demo/Tech/Linux/History.html deleted file mode 100644 index 9a3bb9654..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Linux/History.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - History - - - -
-

History

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

The history of Linux began in 1991 with the commencement - of a personal project by Finnish student - Linus Torvaldsto create a new free operating system kernel. Since - then, the resulting Linux kernel has - been marked by constant growth throughout its history. Since the initial - release of its source code in - 1991, it has grown from a small number of C files - under a license prohibiting commercial distribution to the 4.2.3 version - in 2015 with more than 18 million lines of source code under the GNU General Public License v2.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Linux/Ubuntu.html b/demo/User Guide/Trilium Demo/Tech/Linux/Ubuntu.html deleted file mode 100644 index c44f7c92d..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Linux/Ubuntu.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Ubuntu - - - -
-

Ubuntu

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Expand note on the left pane to see content.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html b/demo/User Guide/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html deleted file mode 100644 index 3ddb276c5..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - Unity shortcuts - - - -
-

Unity shortcuts

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
    -
  • Hold Super - Invoke the Launcher and display the shortcuts
  • -
  • Hold Super, then press 1 or 2 or 3 and so on until 0 to open or focus - an application. The number corresponds to the location of the icon on the - launcher from top to bottom. -
      -
    • Adding Shift will open a new instance of the application if it's already - open.
    • -
    • Holding the key is also useful when you want to get to the Launcher but - do not want to invoke the Dash.
    • -
    -
  • -
  • Super + T - Open the rubbish bin/trash can.
  • -
  • Alt + F1 - Put keyboard focus on the Launcher, use arrow keys to navigate, - Enter launches an application, Right arrow exposes the quicklists if an - application has them.
  • -
  • Ctrl + Alt + T - Launch a terminal window.
  • -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Programming/Bash scripting.clone.html b/demo/User Guide/Trilium Demo/Tech/Programming/Bash scripting.clone.html deleted file mode 100644 index e82fc6a4b..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Programming/Bash scripting.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Bash scripting - - - -
-

Bash scripting

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Programming/Java.html b/demo/User Guide/Trilium Demo/Tech/Programming/Java.html deleted file mode 100644 index e63452044..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Programming/Java.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - Java - - - -
-

Java

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/Security/Trusted timestamping.clone.html b/demo/User Guide/Trilium Demo/Tech/Security/Trusted timestamping.clone.html deleted file mode 100644 index 960727f12..000000000 --- a/demo/User Guide/Trilium Demo/Tech/Security/Trusted timestamping.clone.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - Trusted timestamping - - - -
-

Trusted timestamping

- -
-

This is a clone of a note. Go to its primary location.

-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/node.js/Intro.html b/demo/User Guide/Trilium Demo/Tech/node.js/Intro.html deleted file mode 100644 index 46d8bd054..000000000 --- a/demo/User Guide/Trilium Demo/Tech/node.js/Intro.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - Intro - - - -
-

Intro

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js is an open-source, - cross-platform, JavaScript - runtime environmentthat executes JavaScript code outside of a browser. - Node.js lets developers use JavaScript to write command line tools and - for server-side scripting—running - scripts server-side to produce dynamic web page content - before the page is sent to the user's web browser. 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/node.js/Overview.html b/demo/User Guide/Trilium Demo/Tech/node.js/Overview.html deleted file mode 100644 index f8eb9bc84..000000000 --- a/demo/User Guide/Trilium Demo/Tech/node.js/Overview.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - Overview - - - -
-

Overview

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js allows the creation of Web servers and - networking tools using JavaScript and - a collection of "modules" that handle various core functionalities.[28] - - [31][44] - - [45][46] Modules - are provided for file system I/O, - networking (DNS, - HTTP, TCP, - TLS/SSL, or UDP), - binarydata (buffers), cryptography functions, - data streams, and other core functions.[31] - - [45][47] Node.js's - modules use an API designed to reduce the complexity of writing server - applications.[31] - - [45] -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/node.js/Overview/History.html b/demo/User Guide/Trilium Demo/Tech/node.js/Overview/History.html deleted file mode 100644 index 217dbcc05..000000000 --- a/demo/User Guide/Trilium Demo/Tech/node.js/Overview/History.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - History - - - -
-

History

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js was written initially by Ryan Dahl in - 2009,[24] about - thirteen years after the introduction of the first server-side JavaScript - environment, Netscape's LiveWire Pro Web.[25] The - initial release supported only Linux and Mac OS X. Its development and - maintenance was led by Dahl and later sponsored by Joyent. - [26] -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/node.js/Overview/Industry support.html b/demo/User Guide/Trilium Demo/Tech/node.js/Overview/Industry support.html deleted file mode 100644 index 3bd38a4a9..000000000 --- a/demo/User Guide/Trilium Demo/Tech/node.js/Overview/Industry support.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - Industry support - - - -
-

Industry support

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

There are thousands of open-source libraries for Node.js, most of them - hosted on the npm website. - The Node.js developer community has two main mailing lists and the IRC channel - #node.js on freenode

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/node.js/Overview/Platform architecture.html b/demo/User Guide/Trilium Demo/Tech/node.js/Overview/Platform architecture.html deleted file mode 100644 index 5d5edcde8..000000000 --- a/demo/User Guide/Trilium Demo/Tech/node.js/Overview/Platform architecture.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - Platform architecture - - - -
-

Platform architecture

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Node.js brings event-driven programming to - web servers, enabling development of fast web servers in JavaScript. - [31]Developers can create scalable servers without using threading, - by using a simplified model of event-driven programming that - uses callbacks to signal the completion of a task.[31] - -

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Tech/node.js/Releases.html b/demo/User Guide/Trilium Demo/Tech/node.js/Releases.html deleted file mode 100644 index 75802ef31..000000000 --- a/demo/User Guide/Trilium Demo/Tech/node.js/Releases.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - Releases - - - -
-

Releases

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

New major releases of Node.js are cut from the GitHub master - branch every six months. Even-numbered versions are cut in April and odd-numbered - versions are cut in October. When a new odd version is released, the previous - even version undergoes transition to Long Term Support (LTS), which gives - that version 18 months of active support from the date it is designated - LTS.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Work/HR.html b/demo/User Guide/Trilium Demo/Work/HR.html deleted file mode 100644 index 694675427..000000000 --- a/demo/User Guide/Trilium Demo/Work/HR.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - HR - - - -
-

HR

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

HR stuff 

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Work/Processes.html b/demo/User Guide/Trilium Demo/Work/Processes.html deleted file mode 100644 index 082ce669f..000000000 --- a/demo/User Guide/Trilium Demo/Work/Processes.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Processes - - - -
-

Processes

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

bla bla ...

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo/Work/Projects.html b/demo/User Guide/Trilium Demo/Work/Projects.html deleted file mode 100644 index 73e2af979..000000000 --- a/demo/User Guide/Trilium Demo/Work/Projects.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - Projects - - - -
-

Projects

- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Here I'd keep various notes related to my work's projects etc.

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - - \ No newline at end of file diff --git a/demo/User Guide/Trilium Demo_trilium-icon.png b/demo/User Guide/Trilium Demo_trilium-icon.png deleted file mode 100644 index 8208b2ced..000000000 Binary files a/demo/User Guide/Trilium Demo_trilium-icon.png and /dev/null differ diff --git a/demo/root/Trilium Demo.html b/demo/root/Trilium Demo.html index 54957bf6d..646f0f519 100644 --- a/demo/root/Trilium Demo.html +++ b/demo/root/Trilium Demo.html @@ -39,68 +39,72 @@
-
- -
-

Welcome to TriliumNext Notes! +

+
+
+ +
+

Welcome to TriliumNext Notes! -

-

This is initial "demo" document provided by TriliumNext by default to - showcase some of its features and also give you some ideas how you might - structure your notes. You can play with it, modify note content and tree - structure as you wish.

-

If you need any help, visit TriliumNext website: https://github.com/TriliumNext +

+

This is initial "demo" document provided by TriliumNext by default to + showcase some of its features and also give you some ideas how you might + structure your notes. You can play with it, modify note content and tree + structure as you wish.

+

If you need any help, visit TriliumNext website: https://github.com/TriliumNext -

-

Cleanup

+

+

Cleanup

-

Once you're finished with experimenting and want to cleanup these pages, - you can simply delete them all.

-
 
-

Formatting

+

Once you're finished with experimenting and want to cleanup these pages, + you can simply delete them all.

+
 
+

Formatting

-

TriliumNext supports classic formatting like italic, bold, bold and italic. - Of course you can add links like this one pointing to google.com +

TriliumNext supports classic formatting like italic, bold, bold and italic. + Of course you can add links like this one pointing to google.com -

-

Lists

-

Ordered: +

+

Lists

+

Ordered: -

-
    -
  1. First Item
  2. -
  3. Second item +

      -
    1. First sub-item +
    2. First Item
    3. +
    4. Second item
        -
      1. sub-sub-item
      2. +
      3. First sub-item +
          +
        1. sub-sub-item
        2. +
        +
    -
  4. -
-

Unordered: +

Unordered: -

-
    -
  • Item
  • -
  • Another item +

      -
    • Sub-item
    • +
    • Item
    • +
    • Another item +
        +
      • Sub-item
      • +
      +
    -
  • -
-

Block quotes

-
-

Whereof one cannot speak, thereof one must be silent”

-

– Ludwig Wittgenstein

-
-

Checkout also other examples like tables, - checkbox lists, highlighting, - code blocksand math examples.

+

Block quotes

+
+

Whereof one cannot speak, thereof one must be silent”

+

– Ludwig Wittgenstein

+
+

Checkout also other examples like tables, + checkbox lists, highlighting, + code blocksand math examples.

+
+
diff --git a/demo/root/Trilium Demo/Books/Book template.html b/demo/root/Trilium Demo/Books/Book template.html index c8ebc7d11..da4c2698f 100644 --- a/demo/root/Trilium Demo/Books/Book template.html +++ b/demo/root/Trilium Demo/Books/Book template.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,27 +61,31 @@
- +
+
+

Main characters

-

… here put main characters …

-

 

-

Plot

+

… here put main characters …

+

 

+

Plot

-

… describe main plot lines …

-

 

-

Tone

+

… describe main plot lines …

+

 

+

Tone

-

 

-

Genre

+

 

+

Genre

-

scifi / drama / romance

-

 

-

Similar books

+

scifi / drama / romance

+

 

+

Similar books

-
    -
  • -
+
    +
  • +
+
+
diff --git a/demo/root/Trilium Demo/Books/Book template/Highlights.html b/demo/root/Trilium Demo/Books/Book template/Highlights.html index 961cc6bfe..58d8789d4 100644 --- a/demo/root/Trilium Demo/Books/Book template/Highlights.html +++ b/demo/root/Trilium Demo/Books/Book template/Highlights.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,10 +61,14 @@
-
-

highlght 1

-
-

my comment

+
+
+
+

highlght 1

+
+

my comment

+
+
diff --git a/demo/root/Trilium Demo/Books/To read.html b/demo/root/Trilium Demo/Books/To read.html index 73579650c..713416236 100644 --- a/demo/root/Trilium Demo/Books/To read.html +++ b/demo/root/Trilium Demo/Books/To read.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,17 +61,21 @@
-

Checkout Kindle daily deals: https://www.amazon.com/gp/feature.html?docId=1000677541 +

+
+

Checkout Kindle daily deals: https://www.amazon.com/gp/feature.html?docId=1000677541 -

- +
+
diff --git a/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html b/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html index aa27bc1b0..3f249409f 100644 --- a/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html +++ b/demo/root/Trilium Demo/Formatting examples/Checkbox lists.html @@ -31,8 +31,8 @@
-
-
+
+
@@ -61,33 +61,37 @@
-

Create easy TODO-lists with checkboxes:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Formatting examples/Code blocks.html b/demo/root/Trilium Demo/Formatting examples/Code blocks.html index 7eba0d193..5645457e7 100644 --- a/demo/root/Trilium Demo/Formatting examples/Code blocks.html +++ b/demo/root/Trilium Demo/Formatting examples/Code blocks.html @@ -37,19 +37,23 @@
-

Code blocks are useful to add short snippets of code blocks inside text - notes. Depending on your preference, it's possible to enable or disable - word wrapping for these code blocks.

-

We added syntax highlighting to code blocks as well. When a code block - is first created it will try to automatically determine the programming - language, should that fail it is possible to manually adjust it. The color - scheme for the syntax highlighting is adjustable in settings. 

function helloWorld() {
+                                                        
+
+

Code blocks are useful to add short snippets of code blocks inside text + notes. Depending on your preference, it's possible to enable or disable + word wrapping for these code blocks.

+

We added syntax highlighting to code blocks as well. When a code block + is first created it will try to automatically determine the programming + language, should that fail it is possible to manually adjust it. The color + scheme for the syntax highlighting is adjustable in settings. 

function helloWorld() {
 	alert("Hello world");
 }
-

For larger pieces of code it is better to use a code note, which uses - a fully-fledged code editor (CodeMirror). For an example of a code note, - see Custom request handler.

+

For larger pieces of code it is better to use a code note, which uses + a fully-fledged code editor (CodeMirror). For an example of a code note, + see Custom request handler.

+
+
diff --git a/demo/root/Trilium Demo/Formatting examples/Highlighting.html b/demo/root/Trilium Demo/Formatting examples/Highlighting.html index 7ad5b8d72..29ed3b481 100644 --- a/demo/root/Trilium Demo/Formatting examples/Highlighting.html +++ b/demo/root/Trilium Demo/Formatting examples/Highlighting.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,21 +61,25 @@
-

Space Shuttle Discovery (Orbiter Vehicle - Designation: OV-103) is one of the orbiters from NASA's Space - Shuttle program and the third of five fully operational orbiters to be - built. Its first mission, STS-41-D, flew from August 30 to September 5, - 1984. Over 27 years of service it launched and landed 39 times, - gathering more spaceflights than any other spacecraft to date. The shuttle - has three main components: the Space Shuttle orbiter, a central fuel tank, - and two rocket boosters. Nearly 25,000 heat resistant tiles cover - the orbiter to protect it from high temperatures on re-entry.

-

Discovery became the third operational orbiter to enter service, preceded - by Columbia and Challenger. It embarked on its last mission, STS-133, on February 24, 2011 and - touched down for the final time at Kennedy Space Center on March 9, having - spent a cumulative total of almost a full year in space. Discovery performed - both research and International Space Station (ISS) assembly missions, - and also carried the Hubble Space Telescope into orbit.

+
+
+

Space Shuttle Discovery (Orbiter Vehicle + Designation: OV-103) is one of the orbiters from NASA's Space + Shuttle program and the third of five fully operational orbiters to be + built. Its first mission, STS-41-D, flew from August 30 to September 5, + 1984. Over 27 years of service it launched and landed 39 times, + gathering more spaceflights than any other spacecraft to date. The shuttle + has three main components: the Space Shuttle orbiter, a central fuel tank, + and two rocket boosters. Nearly 25,000 heat resistant tiles cover + the orbiter to protect it from high temperatures on re-entry.

+

Discovery became the third operational orbiter to enter service, preceded + by Columbia and Challenger. It embarked on its last mission, STS-133, on February 24, 2011 and + touched down for the final time at Kennedy Space Center on March 9, having + spent a cumulative total of almost a full year in space. Discovery performed + both research and International Space Station (ISS) assembly missions, + and also carried the Hubble Space Telescope into orbit.

+
+
diff --git a/demo/root/Trilium Demo/Formatting examples/Math.html b/demo/root/Trilium Demo/Formatting examples/Math.html index c0df127a4..3658c41d1 100644 --- a/demo/root/Trilium Demo/Formatting examples/Math.html +++ b/demo/root/Trilium Demo/Formatting examples/Math.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,13 +61,17 @@
-

\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty     \f\hat\xi\,e^{2 \pi i \xi x}     \,d\xi\)Some - math examples:

\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\] +
+
+

\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty     \f\hat\xi\,e^{2 \pi i \xi x}     \,d\xi\)Some + math examples:

\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\] -

Another:

\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\] +

Another:

\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\] -

Inline math is also possible: \(c^2 = a^2 + b^2\) Neat!

-

 

+

Inline math is also possible: \(c^2 = a^2 + b^2\) Neat!

+

 

+
+
diff --git a/demo/root/Trilium Demo/Formatting examples/School schedule.html b/demo/root/Trilium Demo/Formatting examples/School schedule.html index d3c604932..1cf14534c 100644 --- a/demo/root/Trilium Demo/Formatting examples/School schedule.html +++ b/demo/root/Trilium Demo/Formatting examples/School schedule.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,55 +61,59 @@
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 MondayTuesdayWednesdayThursdayFriday
9:00-10:30P.E. MathComputer Science 
11:00-12:30HistoryEnglish PhysicsMath
13:00-14:30 Computer ScienceChemistryPhysics LabGeography
15:00-16:30Computer Science Latin  
-
School schedule
-
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 MondayTuesdayWednesdayThursdayFriday
9:00-10:30P.E. MathComputer Science 
11:00-12:30HistoryEnglish PhysicsMath
13:00-14:30 Computer ScienceChemistryPhysics LabGeography
15:00-16:30Computer Science Latin  
+
School schedule
+
+
+
diff --git a/demo/root/Trilium Demo/Inbox.html b/demo/root/Trilium Demo/Inbox.html index 4feb88341..bef83d710 100644 --- a/demo/root/Trilium Demo/Inbox.html +++ b/demo/root/Trilium Demo/Inbox.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,8 +61,12 @@
-

This is a place I use to put notes waiting for better categorization

-

 

+
+
+

This is a place I use to put notes waiting for better categorization

+

 

+
+
diff --git a/demo/root/Trilium Demo/Inbox/Book to read.html b/demo/root/Trilium Demo/Inbox/Book to read.html index 286ddfe0e..7c12ce637 100644 --- a/demo/root/Trilium Demo/Inbox/Book to read.html +++ b/demo/root/Trilium Demo/Inbox/Book to read.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,10 +61,14 @@ diff --git a/demo/root/Trilium Demo/Inbox/Grocery list for today.html b/demo/root/Trilium Demo/Inbox/Grocery list for today.html index 175a10e32..c60145f83 100644 --- a/demo/root/Trilium Demo/Inbox/Grocery list for today.html +++ b/demo/root/Trilium Demo/Inbox/Grocery list for today.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,12 +61,16 @@
-
    -
  • cucumber
  • -
  • cheese
  • -
  • beer
  • -
-

 

+
+
+
    +
  • cucumber
  • +
  • cheese
  • +
  • beer
  • +
+

 

+
+
diff --git a/demo/root/Trilium Demo/Inbox/The Last Question.html b/demo/root/Trilium Demo/Inbox/The Last Question.html index e8f2049cb..5e7754399 100644 --- a/demo/root/Trilium Demo/Inbox/The Last Question.html +++ b/demo/root/Trilium Demo/Inbox/The Last Question.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,19 +61,23 @@
-

"The Last Question" is a science fiction - short storyby American writer Isaac Asimov. - It first appeared in the November 1956 issue of Science Fiction Quarterly.

-
 
-

This page demonstrates two things:

- +
+
diff --git a/demo/root/Trilium Demo/Journal.html b/demo/root/Trilium Demo/Journal.html index 85d8a0d97..3b639bd17 100644 --- a/demo/root/Trilium Demo/Journal.html +++ b/demo/root/Trilium Demo/Journal.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,9 +61,13 @@
-

You can read some explanation on how this journal works here: https://github.com/zadam/trilium/wiki/Day-notes +

+
+

You can read some explanation on how this journal works here: https://github.com/zadam/trilium/wiki/Day-notes -

+

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html index 7479c73ed..5d589d2bc 100644 --- a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html +++ b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html index 0da4c8ee2..ef58f6984 100644 --- a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html +++ b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Christmas gift ideas.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,14 +61,18 @@
- +
+
diff --git a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html index 84319578d..9def663ef 100644 --- a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html +++ b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Phone call about work project.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

Bla bla bla ....

+
+
+

Bla bla bla ....

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html index e13ab8d11..e2dc8a2c3 100644 --- a/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html +++ b/demo/root/Trilium Demo/Journal/2021/11 - November/28 - Tuesday/Trusted timestamping.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,19 +61,23 @@
-

Wiki: https://en.wikipedia.org/wiki/Trusted_timestamping +

+
+

Wiki: https://en.wikipedia.org/wiki/Trusted_timestamping -

-

Bozho: https://techblog.bozho.net/using-trusted-timestamping-java/ +

+

Bozho: https://techblog.bozho.net/using-trusted-timestamping-java/ -

-

Trusted timestamping is the process of securely keeping - track of the creation and modification time of a document. Security here - means that no one—not even the owner of the document—should be able to - change it once it has been recorded provided that the timestamper's integrity - is never compromised.

-

The administrative aspect involves setting up a publicly available, trusted - timestamp management infrastructure to collect, process and renew timestamps.

+

+

Trusted timestamping is the process of securely keeping + track of the creation and modification time of a document. Security here + means that no one—not even the owner of the document—should be able to + change it once it has been recorded provided that the timestamper's integrity + is never compromised.

+

The administrative aspect involves setting up a publicly available, trusted + timestamp management infrastructure to collect, process and renew timestamps.

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html b/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html index 44b5d6bfe..4b14123c0 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,13 +61,17 @@
-

Miscellaneous notes done on monday ...

-

 

-

Interesting video: https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be +

+
+

Miscellaneous notes done on monday ...

+

 

+

Interesting video: https://www.youtube.com/watch?v=_eSAF_qT_FY&feature=youtu.be -

-

 

-

 

+

+

 

+

 

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html b/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html index 9e21d7d0b..69ddc2584 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/Meeting minutes.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

bla bla bla ...

+
+
+

bla bla bla ...

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html b/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html index e93889a26..b61f736de 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/18 - Monday/TODO - Send invites for christ.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html b/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html index ee271f8c5..ff8fd2c5f 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html b/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html index c1e14b067..307bafe83 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/19 - Tuesday/DONE - Dentist appointment.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html b/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html index 2abc1d8f1..af12fd0d9 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/20 - Wednesday.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html b/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html index c46800db7..f15e5ce80 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html b/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html index 6b9b73609..389a4a056 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Christmas shopping.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

Bought a book!

+
+
+

Bought a book!

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html b/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html index 278f725b3..1302f17ff 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/21 - Thursday/Office party.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
That was fun!
+
+
+
That was fun!
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html index dab90636e..548f432d1 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html index e3b6b25db..3348c2fbd 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/Christmas shopping.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

 

+
+
+

 

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html index 553091f8e..2edd2774b 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

I enjoyed this book a lot. It's slow moving at times with the author taking - his time with conversations and descriptions of them. The premise is very - interesting, but I'm sad that it wasn't elaborated more deeply - e.g. the - history and development of the clakker technology with Huygens and how - Spinoza comes into the picture. Maybe the author saves it for the next - two parts of the book.

-

Language can be intimidating at first for non-native english speakers - - author uses wide range of vocabulary. Fortunately it gets better after - a while as reader adjusts.

+
+
+

I enjoyed this book a lot. It's slow moving at times with the author taking + his time with conversations and descriptions of them. The premise is very + interesting, but I'm sad that it wasn't elaborated more deeply - e.g. the + history and development of the clakker technology with Huygens and how + Spinoza comes into the picture. Maybe the author saves it for the next + two parts of the book.

+

Language can be intimidating at first for non-native english speakers + - author uses wide range of vocabulary. Fortunately it gets better after + a while as reader adjusts.

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html index 4dcc578b7..930c17d68 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/22 - Friday/The Mechanical/Highlights.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,30 +61,34 @@
-
-

Like a raindrop rolling down dry valleys to the sea, his body sensed the - contours of agony and helplessly followed their gradient. Impelled by alchemical - compulsion rather than gravity, Jax became an unstoppable boulder careering - along gullies of human whim.

-
-
-

Free Will was a vacuum, a negative space. It was the absence of coercion, - the absence of compulsion, the absence of agony.

-
-
-

Overwhelming: he could do anything he wanted. But the grand sum of anything-at-all - was nothing-at-all. The topology of freedom offered no gradients to nudge - him, no landmarks to guide him. How did humans guide themselves? How did - they know what to do and what not to do? How did they know when to do anything - without the benefit of geasa and metageasa to prioritize every single action - of their waking lives? How did they order their daily existence without - somebody to tell them what to do?

-
-
-

Life as a slave was unspeakable; life as a slave who had briefly tasted - freedom was unthinkable. Clakkers carried complex geasa by dint of alchemy; - humans carried heavy obligations, too, but called them culture. Society.

-
+
+
+
+

Like a raindrop rolling down dry valleys to the sea, his body sensed the + contours of agony and helplessly followed their gradient. Impelled by alchemical + compulsion rather than gravity, Jax became an unstoppable boulder careering + along gullies of human whim.

+
+
+

Free Will was a vacuum, a negative space. It was the absence of coercion, + the absence of compulsion, the absence of agony.

+
+
+

Overwhelming: he could do anything he wanted. But the grand sum of anything-at-all + was nothing-at-all. The topology of freedom offered no gradients to nudge + him, no landmarks to guide him. How did humans guide themselves? How did + they know what to do and what not to do? How did they know when to do anything + without the benefit of geasa and metageasa to prioritize every single action + of their waking lives? How did they order their daily existence without + somebody to tell them what to do?

+
+
+

Life as a slave was unspeakable; life as a slave who had briefly tasted + freedom was unthinkable. Clakkers carried complex geasa by dint of alchemy; + humans carried heavy obligations, too, but called them culture. Society.

+
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html b/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html index f73df6138..47944bd14 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/23 - Saturday.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html b/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html index ba3b543fc..eb71f3d9b 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html b/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html index f8027fe27..0e353e67a 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/DONE - Buy a board game for Al.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,13 +61,17 @@
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames +

+
+

 

+
+ +
+

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames -

+

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html b/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html index 27fda6795..3b985d95a 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/24 - Sunday - Christmas Eve!/TODO - Buy milk.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html b/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html index e13e69514..f714c84ae 100644 --- a/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html +++ b/demo/root/Trilium Demo/Journal/2021/12 - December/30 - Thursday.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/Epics.html b/demo/root/Trilium Demo/Journal/2021/Epics.html index 414ef3e98..050884636 100644 --- a/demo/root/Trilium Demo/Journal/2021/Epics.html +++ b/demo/root/Trilium Demo/Journal/2021/Epics.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,11 +61,15 @@
-

Epic is kind of medium-term events or projects spread over days or months.

-

Remember that Trilium is all free form so you can organise your stuff - in whatever way you'd like.

-

 

-

 

+
+
+

Epic is kind of medium-term events or projects spread over days or months.

+

Remember that Trilium is all free form so you can organise your stuff + in whatever way you'd like.

+

 

+

 

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html b/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html index 0186f1b31..3db8364e9 100644 --- a/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html +++ b/demo/root/Trilium Demo/Journal/2021/Epics/Christmas.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

This christmas is going to be awesome!

+
+
+

This christmas is going to be awesome!

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html b/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html index 9779d6715..0d892364e 100644 --- a/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html +++ b/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Christmas dinner.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
Carp of course!
+
+
+
Carp of course!
+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html b/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html index c71637b9b..cb394203c 100644 --- a/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html +++ b/demo/root/Trilium Demo/Journal/2021/Epics/Christmas/Vacation days.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,8 +61,12 @@
-

25. 12., 26. 12., 1. 1. - statutory holidays

-

27. 12. - 29. 12., 2. 1. - vacation days

+
+
+

25. 12., 26. 12., 1. 1. - statutory holidays

+

27. 12. - 29. 12., 2. 1. - vacation days

+
+
diff --git a/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html b/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html index 3a4343590..aa38514cd 100644 --- a/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html +++ b/demo/root/Trilium Demo/Journal/2021/Epics/Vacation.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
Planning stuff etc.
+
+
+
Planning stuff etc.
+
+
diff --git a/demo/root/Trilium Demo/Journal/Day template.html b/demo/root/Trilium Demo/Journal/Day template.html index 50ee8ab6a..e082f63d9 100644 --- a/demo/root/Trilium Demo/Journal/Day template.html +++ b/demo/root/Trilium Demo/Journal/Day template.html @@ -33,8 +33,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

TODO:

-
    -
  • -
  • +
+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager.html b/demo/root/Trilium Demo/Scripting examples/Task manager.html index 8cca00e6d..e76e1cfe6 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,12 +61,16 @@
-

This is a simple TODO/Task manager. You can see some description and explanation - here: https://github.com/zadam/trilium/wiki/Task-manager +

+
+

This is a simple TODO/Task manager. You can see some description and explanation + here: https://github.com/zadam/trilium/wiki/Task-manager -

-

Please note that this is meant as scripting example only and feature/bug - support is very limited.

+

+

Please note that this is meant as scripting example only and feature/bug + support is very limited.

+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html index f511cc318..aa4506557 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,13 +61,17 @@
-

 

-
- -
-

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames +

+
+

 

+
+ +
+

Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames -

+

+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html index ecf7283a2..feed31921 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Dentist appointment.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html index e56e7919b..c1452a16f 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Get a gym membership.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

Just in time for new years resolution!

+
+
+

Just in time for new years resolution!

+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html index f3d6f89d7..48fba8031 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Implementation/task template.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html index 32a6103a4..09add9e39 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/gym.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html index 360e5ffc0..26d21a129 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

Bob likes to read popular science books so something like that ..

+
+
+

Bob likes to read popular science books so something like that ..

+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html index 3b91adcdd..807828657 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/mall/Buy some book for Bob/Maybe Black Swan.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,17 +61,21 @@
-

https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable +

+
+

https://en.wikipedia.org/wiki/The_Black_Swan:_The_Impact_of_the_Highly_Improbable -

-

 

-

The Black Swan: The Impact of the Highly Improbable is - a 2007 book by author and former options trader - Nassim Nicholas Taleb. The book focuses on the extreme impact of rare - and unpredictable outlier events - — and the human tendency to find simplistic explanations for these events, - retrospectively. Taleb calls this the Black Swan theory.

+

+

 

+

The Black Swan: The Impact of the Highly Improbable is + a 2007 book by author and former options trader + Nassim Nicholas Taleb. The book focuses on the extreme impact of rare + and unpredictable outlier events + — and the human tendency to find simplistic explanations for these events, + retrospectively. Taleb calls this the Black Swan theory.

+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html index 27fda6795..3b985d95a 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/tesco/Buy milk.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html index e93889a26..b61f736de 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Locations/work/Send invites for christmas par.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html index 9531cbc10..5ff7126ea 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Tags/health.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Tech.html b/demo/root/Trilium Demo/Tech.html index 2a9ad623a..25ae32a2f 100644 --- a/demo/root/Trilium Demo/Tech.html +++ b/demo/root/Trilium Demo/Tech.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

Expand note on the left pane to see content.

+
+
+

Expand note on the left pane to see content.

+
+
diff --git a/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html b/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html index d3dabc1c9..b3922e1e3 100644 --- a/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html +++ b/demo/root/Trilium Demo/Tech/Linux/Bash scripting.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,20 +61,24 @@
-

Bash is a Unix shell and - command languagewritten by Brian Fox for - the GNU Project as - a free software replacement - for the Bourne shell. - First released in 1989, it has been distributed widely as the default - loginshell for most Linux distributions - and Apple's macOS (formerly - OS X). A version is also available for Windows 10.

-

Bash on Wikipedia +

+
+

Bash is a Unix shell and + command languagewritten by Brian Fox for + the GNU Project as + a free software replacement + for the Bourne shell. + First released in 1989, it has been distributed widely as the default + loginshell for most Linux distributions + and Apple's macOS (formerly + OS X). A version is also available for Windows 10.

+

Bash on Wikipedia -

+

+
+
diff --git a/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html b/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html index 99a8b0afd..9929b7ef3 100644 --- a/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html +++ b/demo/root/Trilium Demo/Tech/Linux/Bash scripting/Bash startup modes.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,89 +61,93 @@
-

Login shell

+
+
+

Login shell

-

As a "login shell", Bash reads and sets (executes) the user's profile - from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile - (in that order, using the first one that's readable!).

-

When a login shell exits, Bash reads and executes commands from the file - ~/.bash_logout, if it exists.

-

Why an extra login shell mode? There are many actions and variable sets - that only make sense for the initial user login. That's why all UNIX® shells - have (should have) a "login" mode.

-

Methods to start Bash as a login shell: +

As a "login shell", Bash reads and sets (executes) the user's profile + from /etc/profile and one of ~/.bash_profile, ~/.bash_login, or ~/.profile + (in that order, using the first one that's readable!).

+

When a login shell exits, Bash reads and executes commands from the file + ~/.bash_logout, if it exists.

+

Why an extra login shell mode? There are many actions and variable sets + that only make sense for the initial user login. That's why all UNIX® shells + have (should have) a "login" mode.

+

Methods to start Bash as a login shell: -

-
    -
  • the first character of argv[0] is - (a hyphen): traditional UNIX® shells - start from the login binary
  • -
  • Bash is started with the -l option
  • -
  • Bash is started with the --login option
  • -
-

Methods to test for login shell mode: +

+
    +
  • the first character of argv[0] is - (a hyphen): traditional UNIX® shells + start from the login binary
  • +
  • Bash is started with the -l option
  • +
  • Bash is started with the --login option
  • +
+

Methods to test for login shell mode: -

- -

Related switches: +

+ +

Related switches: -

-
    -
  • --noprofile disables reading of all profile files
  • -
- +

+
    +
  • --noprofile disables reading of all profile files
  • +
+

Interactive shell

-

When Bash starts as an interactive non-login shell, it reads and executes - commands from ~/.bashrc. This file should contain, for example, aliases, - since they need to be defined in every shell as they're not inherited from - the parent shell.

-

The feature to have a system-wide /etc/bash.bashrc or a similar system-wide - rc-file is specific to vendors and distributors that ship their own, patched variant of Bash. - The classic way to have a system-wide rc file is to source /etc/bashrc - from every user's ~/.bashrc.

-

Methods to test for interactive-shell mode: +

When Bash starts as an interactive non-login shell, it reads and executes + commands from ~/.bashrc. This file should contain, for example, aliases, + since they need to be defined in every shell as they're not inherited from + the parent shell.

+

The feature to have a system-wide /etc/bash.bashrc or a similar system-wide + rc-file is specific to vendors and distributors that ship their own, patched variant of Bash. + The classic way to have a system-wide rc file is to source /etc/bashrc + from every user's ~/.bashrc.

+

Methods to test for interactive-shell mode: -

-
    -
  • the special parameter $- contains the letter i (lowercase I)
  • -
-

Related switches: +

+
    +
  • the special parameter $- contains the letter i (lowercase I)
  • +
+

Related switches: -

-
    -
  • -i forces the interactive mode
  • -
  • --norc disables reading of the startup files (e.g. /etc/bash.bashrc if - supported) and ~/.bashrc
  • -
  • --rcfile defines another startup file (instead of /etc/bash.bashrc and - ~/.bashrc)
  • -
- +

+
    +
  • -i forces the interactive mode
  • +
  • --norc disables reading of the startup files (e.g. /etc/bash.bashrc if + supported) and ~/.bashrc
  • +
  • --rcfile defines another startup file (instead of /etc/bash.bashrc and + ~/.bashrc)
  • +
+

SH mode

-

When Bash starts in SH compatiblity mode, it tries to mimic the startup - behaviour of historical versions of sh as closely as possible, while conforming - to the POSIX® standard as well. The profile files read are /etc/profile - and ~/.profile, if it's a login shell.

-

If it's not a login shell, the environment variable ENV is - evaluated and the resulting filename is used as the name of the startup - file.

-

After the startup files are read, Bash enters the POSIX(r) compatiblity mode (for running, not for starting!).

-

Bash starts in sh compatiblity mode when: +

When Bash starts in SH compatiblity mode, it tries to mimic the startup + behaviour of historical versions of sh as closely as possible, while conforming + to the POSIX® standard as well. The profile files read are /etc/profile + and ~/.profile, if it's a login shell.

+

If it's not a login shell, the environment variable ENV is + evaluated and the resulting filename is used as the name of the startup + file.

+

After the startup files are read, Bash enters the POSIX(r) compatiblity mode (for running, not for starting!).

+

Bash starts in sh compatiblity mode when: -

-
    -
  • the base filename in argv[0] is sh ( -
    - -
     NB: /bin/sh may be linked to /bin/bash, but that doesn't mean it acts - like /bin/bash  -
    - -
    )
  • -
+

+
    +
  • the base filename in argv[0] is sh ( +
    + +
     NB: /bin/sh may be linked to /bin/bash, but that doesn't mean it acts + like /bin/bash  +
    + +
    )
  • +
+
+
diff --git a/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html b/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html index 664724781..015d204f6 100644 --- a/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html +++ b/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html @@ -51,11 +51,13 @@
-
-
-

Documentation: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html +

+
+
+
+

Documentation: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html -

#!/bin/bash
+                                                                                            

#!/bin/bash
 # This script opens 4 terminal windows.
 
 i="0"
@@ -66,6 +68,8 @@ do
     i=$[$i+1]
 done
+
+
diff --git a/demo/root/Trilium Demo/Tech/Linux/History.html b/demo/root/Trilium Demo/Tech/Linux/History.html index c2f331ba6..57ab48009 100644 --- a/demo/root/Trilium Demo/Tech/Linux/History.html +++ b/demo/root/Trilium Demo/Tech/Linux/History.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,16 +61,20 @@
-

The history of Linux began in 1991 with the commencement - of a personal project by Finnish student - Linus Torvaldsto create a new free operating system kernel. Since - then, the resulting Linux kernel has - been marked by constant growth throughout its history. Since the initial - release of its source code in - 1991, it has grown from a small number of C files - under a license prohibiting commercial distribution to the 4.2.3 version - in 2015 with more than 18 million lines of source code under the GNU General Public License v2.

+
+
+

The history of Linux began in 1991 with the commencement + of a personal project by Finnish student + Linus Torvaldsto create a new free operating system kernel. Since + then, the resulting Linux kernel has + been marked by constant growth throughout its history. Since the initial + release of its source code in + 1991, it has grown from a small number of C files + under a license prohibiting commercial distribution to the 4.2.3 version + in 2015 with more than 18 million lines of source code under the GNU General Public License v2.

+
+
diff --git a/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html b/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html index 8310ffd7c..850a61c42 100644 --- a/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html +++ b/demo/root/Trilium Demo/Tech/Linux/Ubuntu.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

Expand note on the left pane to see content.

+
+
+

Expand note on the left pane to see content.

+
+
diff --git a/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html b/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html index 226259989..c51ec8b97 100644 --- a/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html +++ b/demo/root/Trilium Demo/Tech/Linux/Ubuntu/Unity shortcuts.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,24 +61,28 @@
-
    -
  • Hold Super - Invoke the Launcher and display the shortcuts
  • -
  • Hold Super, then press 1 or 2 or 3 and so on until 0 to open or focus - an application. The number corresponds to the location of the icon on the - launcher from top to bottom. +
    +
      -
    • Adding Shift will open a new instance of the application if it's already - open.
    • -
    • Holding the key is also useful when you want to get to the Launcher but - do not want to invoke the Dash.
    • +
    • Hold Super - Invoke the Launcher and display the shortcuts
    • +
    • Hold Super, then press 1 or 2 or 3 and so on until 0 to open or focus + an application. The number corresponds to the location of the icon on the + launcher from top to bottom. +
        +
      • Adding Shift will open a new instance of the application if it's already + open.
      • +
      • Holding the key is also useful when you want to get to the Launcher but + do not want to invoke the Dash.
      • +
      +
    • +
    • Super + T - Open the rubbish bin/trash can.
    • +
    • Alt + F1 - Put keyboard focus on the Launcher, use arrow keys to navigate, + Enter launches an application, Right arrow exposes the quicklists if an + application has them.
    • +
    • Ctrl + Alt + T - Launch a terminal window.
    -
  • -
  • Super + T - Open the rubbish bin/trash can.
  • -
  • Alt + F1 - Put keyboard focus on the Launcher, use arrow keys to navigate, - Enter launches an application, Right arrow exposes the quicklists if an - application has them.
  • -
  • Ctrl + Alt + T - Launch a terminal window.
  • -
+
+
diff --git a/demo/root/Trilium Demo/Tech/Programming/Java.html b/demo/root/Trilium Demo/Tech/Programming/Java.html index 3b301ea17..0ad98f2fb 100644 --- a/demo/root/Trilium Demo/Tech/Programming/Java.html +++ b/demo/root/Trilium Demo/Tech/Programming/Java.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -60,7 +60,11 @@
-
+
+
+
+
+
diff --git a/demo/root/Trilium Demo/Tech/node.js/Intro.html b/demo/root/Trilium Demo/Tech/node.js/Intro.html index 29e3bcc81..5105da56f 100644 --- a/demo/root/Trilium Demo/Tech/node.js/Intro.html +++ b/demo/root/Trilium Demo/Tech/node.js/Intro.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

Node.js is an open-source, - cross-platform, JavaScript - runtime environmentthat executes JavaScript code outside of a browser. - Node.js lets developers use JavaScript to write command line tools and - for server-side scripting—running - scripts server-side to produce dynamic web page content - before the page is sent to the user's web browser. 

+
+
+

Node.js is an open-source, + cross-platform, JavaScript + runtime environmentthat executes JavaScript code outside of a browser. + Node.js lets developers use JavaScript to write command line tools and + for server-side scripting—running + scripts server-side to produce dynamic web page content + before the page is sent to the user's web browser. 

+
+
diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview.html b/demo/root/Trilium Demo/Tech/node.js/Overview.html index 8acd2f095..bf3fcb564 100644 --- a/demo/root/Trilium Demo/Tech/node.js/Overview.html +++ b/demo/root/Trilium Demo/Tech/node.js/Overview.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,34 +61,38 @@
-

Node.js allows the creation of Web servers and - networking tools using JavaScript and - a collection of "modules" that handle various core functionalities.[28] +

+
+

Node.js allows the creation of Web servers and + networking tools using JavaScript and + a collection of "modules" that handle various core functionalities.[28] - [31][44] - - [45][46] Modules - are provided for file system I/O, - networking (DNS, HTTP, TCP, + href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31][44] + TLS/SSL, or UDP), + href="https://en.wikipedia.org/wiki/Node.js#cite_note-b4-45">[45][46] Modules + are provided for file system I/O, + networking (DNS, binarydata (buffers), cryptography functions, + href="https://en.wikipedia.org/wiki/HTTP">HTTP, TCP, data streams, and other core functions.[31] - + href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS/SSL, or UDP), [45][47] Node.js's - modules use an API designed to reduce the complexity of writing server - applications.[31] - + href="https://en.wikipedia.org/wiki/Binary_file">binarydata (buffers), cryptography functions, [45] -

+ href="https://en.wikipedia.org/wiki/Stream_(computing)">data streams, and other core functions.[31] + + [45][47] Node.js's + modules use an API designed to reduce the complexity of writing server + applications.[31] + + [45] +

+
+
diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview/History.html b/demo/root/Trilium Demo/Tech/node.js/Overview/History.html index 2527f5400..1329f0189 100644 --- a/demo/root/Trilium Demo/Tech/node.js/Overview/History.html +++ b/demo/root/Trilium Demo/Tech/node.js/Overview/History.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

Node.js was written initially by Ryan Dahl in - 2009,[24] about - thirteen years after the introduction of the first server-side JavaScript - environment, Netscape's LiveWire Pro Web.[25] The - initial release supported only Linux and Mac OS X. Its development and - maintenance was led by Dahl and later sponsored by Joyent. - [26] -

+
+
+

Node.js was written initially by Ryan Dahl in + 2009,[24] about + thirteen years after the introduction of the first server-side JavaScript + environment, Netscape's LiveWire Pro Web.[25] The + initial release supported only Linux and Mac OS X. Its development and + maintenance was led by Dahl and later sponsored by Joyent. + [26] +

+
+
diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview/Industry support.html b/demo/root/Trilium Demo/Tech/node.js/Overview/Industry support.html index 315078fbb..0e5d47547 100644 --- a/demo/root/Trilium Demo/Tech/node.js/Overview/Industry support.html +++ b/demo/root/Trilium Demo/Tech/node.js/Overview/Industry support.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,10 +61,14 @@
-

There are thousands of open-source libraries for Node.js, most of them - hosted on the npm website. - The Node.js developer community has two main mailing lists and the IRC channel - #node.js on freenode

+
+
+

There are thousands of open-source libraries for Node.js, most of them + hosted on the npm website. + The Node.js developer community has two main mailing lists and the IRC channel + #node.js on freenode

+
+
diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview/Platform architecture.html b/demo/root/Trilium Demo/Tech/node.js/Overview/Platform architecture.html index 14bf94616..d135e227c 100644 --- a/demo/root/Trilium Demo/Tech/node.js/Overview/Platform architecture.html +++ b/demo/root/Trilium Demo/Tech/node.js/Overview/Platform architecture.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,15 +61,19 @@
-

Node.js brings event-driven programming to - web servers, enabling development of fast web servers in JavaScript. - [31]Developers can create scalable servers without using threading, - by using a simplified model of event-driven programming that - uses callbacks to signal the completion of a task.[31] +

+
+

Node.js brings event-driven programming to + web servers, enabling development of fast web servers in JavaScript. + [31]Developers can create scalable servers without using threading, + by using a simplified model of event-driven programming that + uses callbacks to signal the completion of a task.[31] -

+

+
+
diff --git a/demo/root/Trilium Demo/Tech/node.js/Releases.html b/demo/root/Trilium Demo/Tech/node.js/Releases.html index ecd2846a4..340356622 100644 --- a/demo/root/Trilium Demo/Tech/node.js/Releases.html +++ b/demo/root/Trilium Demo/Tech/node.js/Releases.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,12 +61,16 @@
-

New major releases of Node.js are cut from the GitHub master - branch every six months. Even-numbered versions are cut in April and odd-numbered - versions are cut in October. When a new odd version is released, the previous - even version undergoes transition to Long Term Support (LTS), which gives - that version 18 months of active support from the date it is designated - LTS.

+
+
+

New major releases of Node.js are cut from the GitHub master + branch every six months. Even-numbered versions are cut in April and odd-numbered + versions are cut in October. When a new odd version is released, the previous + even version undergoes transition to Long Term Support (LTS), which gives + that version 18 months of active support from the date it is designated + LTS.

+
+
diff --git a/demo/root/Trilium Demo/Work/HR.html b/demo/root/Trilium Demo/Work/HR.html index fb441ad7a..99d23172d 100644 --- a/demo/root/Trilium Demo/Work/HR.html +++ b/demo/root/Trilium Demo/Work/HR.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

HR stuff 

+
+
+

HR stuff 

+
+
diff --git a/demo/root/Trilium Demo/Work/Processes.html b/demo/root/Trilium Demo/Work/Processes.html index d85120f7d..99ee889e4 100644 --- a/demo/root/Trilium Demo/Work/Processes.html +++ b/demo/root/Trilium Demo/Work/Processes.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

bla bla ...

+
+
+

bla bla ...

+
+
diff --git a/demo/root/Trilium Demo/Work/Projects.html b/demo/root/Trilium Demo/Work/Projects.html index 2ffaf12c0..5c6bcc6a3 100644 --- a/demo/root/Trilium Demo/Work/Projects.html +++ b/demo/root/Trilium Demo/Work/Projects.html @@ -51,8 +51,8 @@
-
-
+
+
@@ -61,7 +61,11 @@
-

Here I'd keep various notes related to my work's projects etc.

+
+
+

Here I'd keep various notes related to my work's projects etc.

+
+
diff --git a/electron-edit-demo.ts b/electron-edit-demo.ts index c050c2b2b..60bef3190 100644 --- a/electron-edit-demo.ts +++ b/electron-edit-demo.ts @@ -1,6 +1,7 @@ import { extractZip, initializeDatabase, startElectron } from "./electron-utils.js"; import { initializeTranslations } from "./src/services/i18n.js"; import debounce from "./src/public/app/services/debounce.js"; +import fs from "fs/promises"; const DEMO_ZIP_PATH = "db/demo.zip"; @@ -19,7 +20,10 @@ async function registerHandlers() { console.log("Exporting data"); eraseService.eraseUnusedAttachmentsNow(); await exportData(); - await extractZip(DEMO_ZIP_PATH, "demo"); + + const outputDir = "demo"; + await fs.rmdir(outputDir, { recursive: true }).catch(() => {}); + await extractZip(DEMO_ZIP_PATH, outputDir); }, 10_000); events.subscribe(events.ENTITY_CHANGED, async (e) => { if (e.entityName === "options") {