diff --git a/db/demo.zip b/db/demo.zip index 15c0f91418..c040aacff0 100644 Binary files a/db/demo.zip and b/db/demo.zip differ diff --git a/demo/!!!meta.json b/demo/!!!meta.json index 51b764d7e2..f79b8da4a8 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 28ec93a05e..0000000000 --- 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 e69de29bb2..0000000000 diff --git a/demo/Demo/Trilium Demo.html b/demo/Demo/Trilium Demo.html deleted file mode 100644 index fd201a3bd6..0000000000 --- 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 9199b06a94..0000000000 --- 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 4b69d3567c..0000000000 --- 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 cbaf137654..0000000000 --- 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 a0cdbe43e5..0000000000 --- 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 0f334778c7..0000000000 --- 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 f5bb7a3e6c..0000000000 --- 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 28e954cce9..0000000000 --- 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 0209c5bbb1..0000000000 --- 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 40a294932b..0000000000 --- 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 7f2e260085..0000000000 --- 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 eabed62828..0000000000 --- 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 f881ba73ae..0000000000 --- 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 429c9702d4..0000000000 --- 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 68f2f5e982..0000000000 --- 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 09baae5f76..0000000000 --- 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 717a69943f..0000000000 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 fffbf8607a..0000000000 --- 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 0e014d8a6d..0000000000 --- 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 be339765a6..0000000000 --- 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 6d58d885de..0000000000 --- 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 daea0b8bdd..0000000000 --- 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 a42fa185c1..0000000000 --- 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 a44807ce42..0000000000 --- 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 526922538e..0000000000 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 a6bd590e49..0000000000 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 8d6ee7003f..0000000000 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 65dcff9f08..0000000000 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 56dad904f5..0000000000 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 afae674d8c..0000000000 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 1a4177f452..0000000000 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 eaa57bfbf4..0000000000 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 3266325f2e..0000000000 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 0ecdcc3603..0000000000 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 24fb1fc9e1..0000000000 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 ccded29c70..0000000000 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 749b48f9d8..0000000000 --- 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 3ebe8c0d6e..0000000000 --- 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 feba73c7d6..0000000000 --- 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 9defb3a243..0000000000 --- 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 cc69093a5c..0000000000 --- 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 20ff0c70bd..0000000000 --- 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 87528f9937..0000000000 --- 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 e98f07eea7..0000000000 --- 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 c7572437dd..0000000000 --- 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 1f445ce17c..0000000000 --- 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 ba478819bb..0000000000 --- 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 a6eb9b1d44..0000000000 --- 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 9774550aef..0000000000 --- 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 f0135ec7b8..0000000000 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 d02db8d67a..0000000000 --- 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 8879bfc191..0000000000 --- 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 b97e27a4d0..0000000000 --- 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 d71b689ef9..0000000000 --- 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 8a3cdad7cb..0000000000 --- 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 da59fbe4c3..0000000000 --- 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 044fe3e8fa..0000000000 --- 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 005912c63f..0000000000 --- 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 3224a29eb2..0000000000 --- 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 7f0ee7976a..0000000000 --- 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 b13f7ee524..0000000000 --- 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 97489f06bf..0000000000 --- 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 7e4dc961a1..0000000000 --- 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 60f433a49d..0000000000 --- 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 f902afadd3..0000000000 --- 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 9d10efc111..0000000000 --- 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 94d6f51969..0000000000 --- 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 d5911752e0..0000000000 --- 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 34d7aedafa..0000000000 --- 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 1a133a1c77..0000000000 --- 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 a7fcef7f30..0000000000 --- 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 7941b9ae12..0000000000 --- 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 af32bc27d1..0000000000 --- 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 61ffc0260c..0000000000 --- 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 f5c89f75d3..0000000000 --- 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 15b9bb4543..0000000000 --- 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 8bad1ef77e..0000000000 --- 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 2b6c1e75db..0000000000 --- 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 6cdfad11db..0000000000 --- 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 4e0a322141..0000000000 --- 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 58aeda6584..0000000000 --- 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 80909557d4..0000000000 --- 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 5ed8009220..0000000000 --- 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 804d862755..0000000000 --- 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 7b57864f06..0000000000 --- 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 1e2314d6c5..0000000000 --- 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 79b3add25a..0000000000 --- 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 e69de29bb2..0000000000 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 b73e5bf706..0000000000 --- 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 cb4b5098ad..0000000000 --- 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 31a0b83eb5..0000000000 --- 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 99b71b71c0..0000000000 --- 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 5f5417f5cf..0000000000 --- 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 4f7d3872b1..0000000000 --- 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 db0269cb47..0000000000 --- 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 64e4de7c49..0000000000 --- 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 fb45222c78..0000000000 --- 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 39bfc9b231..0000000000 --- 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 2932d98859..0000000000 --- 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 af10eb40a2..0000000000 --- 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 84d8504dbd..0000000000 --- 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 63c6f0ba58..0000000000 --- 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 d60e28d8c8..0000000000 --- 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 e36d0e6987..0000000000 --- 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 fad5fae88c..0000000000 --- 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 53ab6b1c99..0000000000 --- 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 3cfe66481c..0000000000 --- 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 4a4eecb7ba..0000000000 --- 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 d08203fb2a..0000000000 --- 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 353653eae8..0000000000 --- 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 6b838a24e9..0000000000 --- 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 1fb4c4430b..0000000000 --- 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 11909363c3..0000000000 --- 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 f0135ec7b8..0000000000 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 6e4930c04b..0000000000 --- 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 1926033af3..0000000000 --- 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 4d4b43b713..0000000000 --- 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 56292594da..0000000000 --- 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 bf35039876..0000000000 --- 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 9dd12721a4..0000000000 --- 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 0e8e43b0f0..0000000000 --- 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 a7b335817c..0000000000 --- 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 5c128c8c3e..0000000000 --- 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 97563a3039..0000000000 --- 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 8879bfc191..0000000000 --- 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 749b48f9d8..0000000000 --- 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 bbcd6f3cfc..0000000000 --- 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 b6c791688a..0000000000 --- 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 fd4df01794..0000000000 --- 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 8d8a869798..0000000000 --- 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 538a712d52..0000000000 --- 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 715053b22e..0000000000 --- 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 538a712d52..0000000000 --- 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 8d8a869798..0000000000 --- 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 6966e949ae..0000000000 --- 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 3c514402a7..0000000000 --- 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 07b5445e5e..0000000000 --- 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 56f3dec405..0000000000 --- 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 c36dcecbbd..0000000000 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 eba29a9abe..0000000000 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 eea7adce33..0000000000 --- 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 b107eb1503..0000000000 --- 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 9ebd0a5727..0000000000 --- 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 13e13cfeb9..0000000000 --- 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 a11976ba54..0000000000 --- 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 1b8713e043..0000000000 --- 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 b53ed1f1d5..0000000000 --- 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 e82fc6a4b6..0000000000 --- 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 b78260f487..0000000000 --- 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 960727f128..0000000000 --- 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 d2b8fb9cff..0000000000 --- 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 561617e9f5..0000000000 --- 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 e1cb2c12b7..0000000000 --- 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 59972b571f..0000000000 --- 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 80a7d6aea7..0000000000 --- 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 897f917af2..0000000000 --- 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 ca9357d1b2..0000000000 --- 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 45ccc9567d..0000000000 --- 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 4fb5c24800..0000000000 --- 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 8208b2ced2..0000000000 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 e69de29bb2..0000000000 diff --git a/demo/Home/Trilium Demo.html b/demo/Home/Trilium Demo.html deleted file mode 100644 index 0c48e9cd10..0000000000 --- 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 cd58564dcb..0000000000 --- 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 218d8e961e..0000000000 --- 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 cbaf137654..0000000000 --- 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 434cfbe5c7..0000000000 --- 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 0f334778c7..0000000000 --- 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 f5bb7a3e6c..0000000000 --- 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 ca94770f9b..0000000000 --- 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 5b937e3ca4..0000000000 --- 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 56fb66b185..0000000000 --- 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 22e45aba0b..0000000000 --- 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 5d74ee1a9d..0000000000 --- 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 45f52e3494..0000000000 --- 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 5559556ba3..0000000000 --- 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 edd3edc84b..0000000000 --- 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 797324e94b..0000000000 --- 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 717a69943f..0000000000 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 49937f5810..0000000000 --- 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 cb5950eec0..0000000000 --- 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 9977fb8259..0000000000 --- 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 8e2b6474ef..0000000000 --- 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 2ef38610eb..0000000000 --- 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 e2fe00a777..0000000000 --- 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 8c45fccefd..0000000000 --- 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 526922538e..0000000000 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 a6bd590e49..0000000000 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 8d6ee7003f..0000000000 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 65dcff9f08..0000000000 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 56dad904f5..0000000000 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 afae674d8c..0000000000 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 1a4177f452..0000000000 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 eaa57bfbf4..0000000000 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 3266325f2e..0000000000 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 0ecdcc3603..0000000000 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 24fb1fc9e1..0000000000 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 ccded29c70..0000000000 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 571f970b40..0000000000 --- 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 e7bc46a10f..0000000000 --- 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 92313fb011..0000000000 --- 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 fa12db8187..0000000000 --- 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 cce4a0a08b..0000000000 --- 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 991793ca17..0000000000 --- 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 a549dd1b7d..0000000000 --- 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 81c156bcd5..0000000000 --- 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 9cbaa9f79e..0000000000 --- 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 2032f57747..0000000000 --- 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 7bb91a3524..0000000000 --- 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 66dd0b9c27..0000000000 --- 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 dda2c7addc..0000000000 --- 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 f0135ec7b8..0000000000 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 d704167ed9..0000000000 --- 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 94e4e1d463..0000000000 --- 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 fc853d9d58..0000000000 --- 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 44f79f80c8..0000000000 --- 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 7042201a8c..0000000000 --- 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 aa9ab1cebf..0000000000 --- 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 044fe3e8fa..0000000000 --- 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 28951bbbb5..0000000000 --- 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 fa844380af..0000000000 --- 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 7cc21b8531..0000000000 --- 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 b13f7ee524..0000000000 --- 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 97489f06bf..0000000000 --- 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 7e4dc961a1..0000000000 --- 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 60f433a49d..0000000000 --- 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 f902afadd3..0000000000 --- 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 9d10efc111..0000000000 --- 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 94d6f51969..0000000000 --- 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 d5911752e0..0000000000 --- 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 34d7aedafa..0000000000 --- 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 1a133a1c77..0000000000 --- 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 a7fcef7f30..0000000000 --- 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 7941b9ae12..0000000000 --- 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 af32bc27d1..0000000000 --- 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 61ffc0260c..0000000000 --- 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 f5c89f75d3..0000000000 --- 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 15b9bb4543..0000000000 --- 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 8bad1ef77e..0000000000 --- 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 2b6c1e75db..0000000000 --- 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 6cdfad11db..0000000000 --- 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 4e0a322141..0000000000 --- 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 58aeda6584..0000000000 --- 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 80909557d4..0000000000 --- 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 5ed8009220..0000000000 --- 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 804d862755..0000000000 --- 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 7b57864f06..0000000000 --- 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 1e2314d6c5..0000000000 --- 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 79b3add25a..0000000000 --- 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 e69de29bb2..0000000000 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 b73e5bf706..0000000000 --- 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 cb4b5098ad..0000000000 --- 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 31a0b83eb5..0000000000 --- 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 99b71b71c0..0000000000 --- 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 5f5417f5cf..0000000000 --- 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 4f7d3872b1..0000000000 --- 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 db0269cb47..0000000000 --- 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 64e4de7c49..0000000000 --- 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 fb45222c78..0000000000 --- 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 39bfc9b231..0000000000 --- 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 2932d98859..0000000000 --- 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 af10eb40a2..0000000000 --- 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 84d8504dbd..0000000000 --- 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 63c6f0ba58..0000000000 --- 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 d60e28d8c8..0000000000 --- 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 e36d0e6987..0000000000 --- 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 fad5fae88c..0000000000 --- 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 53ab6b1c99..0000000000 --- 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 3cfe66481c..0000000000 --- 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 4a4eecb7ba..0000000000 --- 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 d08203fb2a..0000000000 --- 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 353653eae8..0000000000 --- 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 0d84ae645d..0000000000 --- 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 1fb4c4430b..0000000000 --- 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 7c1a173065..0000000000 --- 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 f0135ec7b8..0000000000 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 203644d5e6..0000000000 --- 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 4eead86d75..0000000000 --- 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 4d4b43b713..0000000000 --- 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 56292594da..0000000000 --- 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 bf35039876..0000000000 --- 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 9dd12721a4..0000000000 --- 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 59ae739229..0000000000 --- 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 4c4f1cc516..0000000000 --- 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 b219f2491c..0000000000 --- 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 7c6196ecbf..0000000000 --- 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 94e4e1d463..0000000000 --- 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 571f970b40..0000000000 --- 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 bbcd6f3cfc..0000000000 --- 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 b6c791688a..0000000000 --- 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 fd4df01794..0000000000 --- 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 8d8a869798..0000000000 --- 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 538a712d52..0000000000 --- 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 a5dee85246..0000000000 --- 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 538a712d52..0000000000 --- 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 8d8a869798..0000000000 --- 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 6966e949ae..0000000000 --- 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 3c514402a7..0000000000 --- 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 07b5445e5e..0000000000 --- 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 56f3dec405..0000000000 --- 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 c36dcecbbd..0000000000 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 eba29a9abe..0000000000 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 46f63123b1..0000000000 --- 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 308596e2b9..0000000000 --- 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 76c37bd814..0000000000 --- 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 7c50b29770..0000000000 --- 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 e212d7136e..0000000000 --- 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 d7144c5fb1..0000000000 --- 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 2666d1c74c..0000000000 --- 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 e82fc6a4b6..0000000000 --- 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 1fb99a9805..0000000000 --- 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 960727f128..0000000000 --- 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 d0c1c168fa..0000000000 --- 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 a76fefef31..0000000000 --- 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 617de2b078..0000000000 --- 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 244365e9da..0000000000 --- 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 70a739fc7e..0000000000 --- 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 6f7a905818..0000000000 --- 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 ae41210609..0000000000 --- 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 00a6f1d993..0000000000 --- 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 4b2b2376d4..0000000000 --- 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 8208b2ced2..0000000000 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 8c18414924..0000000000 --- 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 e69de29bb2..0000000000 diff --git a/demo/User Guide/Journal.html b/demo/User Guide/Journal.html deleted file mode 100644 index eb819ded17..0000000000 --- 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 d9fe89a843..0000000000 --- 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 1a183d3330..0000000000 --- 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 4cd96a73ab..0000000000 --- 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 cbaf137654..0000000000 --- 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 27c12d978a..0000000000 --- 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 0f334778c7..0000000000 --- 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 f5bb7a3e6c..0000000000 --- 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 f866d0a80e..0000000000 --- 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 feeb47266a..0000000000 --- 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 82ee34fb69..0000000000 --- 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 e4d2543778..0000000000 --- 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 7571542af7..0000000000 --- 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 449f89f376..0000000000 --- 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 e80274fc00..0000000000 --- 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 d1e32e394a..0000000000 --- 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 8901024a15..0000000000 --- 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 717a69943f..0000000000 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 d8f03adc14..0000000000 --- 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 4d9ac83a6b..0000000000 --- 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 a27bba7b7a..0000000000 --- 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 abdfe98171..0000000000 --- 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 aa1afe44ac..0000000000 --- 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 76e0a10faf..0000000000 --- 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 f2acf626dd..0000000000 --- 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 526922538e..0000000000 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 a6bd590e49..0000000000 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 8d6ee7003f..0000000000 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 65dcff9f08..0000000000 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 56dad904f5..0000000000 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 afae674d8c..0000000000 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 1a4177f452..0000000000 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 eaa57bfbf4..0000000000 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 3266325f2e..0000000000 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 0ecdcc3603..0000000000 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 24fb1fc9e1..0000000000 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 ccded29c70..0000000000 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 519a95c8a6..0000000000 --- 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 ea53cdaa95..0000000000 --- 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 be80e402ed..0000000000 --- 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 a130755590..0000000000 --- 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 bc64f9db24..0000000000 --- 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 8a2e2452a5..0000000000 --- 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 a9d405b6c2..0000000000 --- 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 09e429caed..0000000000 --- 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 ed0bbc960a..0000000000 --- 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 1c62ec5a36..0000000000 --- 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 367c2f7abb..0000000000 --- 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 2371cbe7a9..0000000000 --- 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 80870eb396..0000000000 --- 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 f0135ec7b8..0000000000 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 c70c13953d..0000000000 --- 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 bf8eeb2cb0..0000000000 --- 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 d807a4132e..0000000000 --- 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 d8e72101cf..0000000000 --- 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 c05f2243f1..0000000000 --- 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 e193b7d005..0000000000 --- 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 044fe3e8fa..0000000000 --- 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 8b39bc58c1..0000000000 --- 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 80bc1bb499..0000000000 --- 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 6c521a006b..0000000000 --- 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 b13f7ee524..0000000000 --- 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 97489f06bf..0000000000 --- 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 7e4dc961a1..0000000000 --- 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 60f433a49d..0000000000 --- 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 f902afadd3..0000000000 --- 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 9d10efc111..0000000000 --- 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 94d6f51969..0000000000 --- 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 d5911752e0..0000000000 --- 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 34d7aedafa..0000000000 --- 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 1a133a1c77..0000000000 --- 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 a7fcef7f30..0000000000 --- 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 7941b9ae12..0000000000 --- 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 af32bc27d1..0000000000 --- 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 61ffc0260c..0000000000 --- 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 f5c89f75d3..0000000000 --- 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 15b9bb4543..0000000000 --- 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 8bad1ef77e..0000000000 --- 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 2b6c1e75db..0000000000 --- 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 6cdfad11db..0000000000 --- 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 4e0a322141..0000000000 --- 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 58aeda6584..0000000000 --- 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 80909557d4..0000000000 --- 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 5ed8009220..0000000000 --- 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 804d862755..0000000000 --- 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 7b57864f06..0000000000 --- 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 1e2314d6c5..0000000000 --- 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 79b3add25a..0000000000 --- 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 e69de29bb2..0000000000 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 b73e5bf706..0000000000 --- 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 cb4b5098ad..0000000000 --- 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 31a0b83eb5..0000000000 --- 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 99b71b71c0..0000000000 --- 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 5f5417f5cf..0000000000 --- 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 4f7d3872b1..0000000000 --- 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 db0269cb47..0000000000 --- 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 64e4de7c49..0000000000 --- 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 fb45222c78..0000000000 --- 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 39bfc9b231..0000000000 --- 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 2932d98859..0000000000 --- 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 af10eb40a2..0000000000 --- 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 84d8504dbd..0000000000 --- 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 63c6f0ba58..0000000000 --- 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 d60e28d8c8..0000000000 --- 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 e36d0e6987..0000000000 --- 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 fad5fae88c..0000000000 --- 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 53ab6b1c99..0000000000 --- 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 3cfe66481c..0000000000 --- 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 4a4eecb7ba..0000000000 --- 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 d08203fb2a..0000000000 --- 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 353653eae8..0000000000 --- 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 66ff51f4ab..0000000000 --- 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 1fb4c4430b..0000000000 --- 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 3731241007..0000000000 --- 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 f0135ec7b8..0000000000 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 edeeeae454..0000000000 --- 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 8bf91646b1..0000000000 --- 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 4d4b43b713..0000000000 --- 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 56292594da..0000000000 --- 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 bf35039876..0000000000 --- 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 9dd12721a4..0000000000 --- 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 dd94d6b001..0000000000 --- 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 5ce1f2115c..0000000000 --- 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 9225a94add..0000000000 --- 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 03f560341a..0000000000 --- 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 bf8eeb2cb0..0000000000 --- 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 519a95c8a6..0000000000 --- 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 bbcd6f3cfc..0000000000 --- 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 b6c791688a..0000000000 --- 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 fd4df01794..0000000000 --- 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 8d8a869798..0000000000 --- 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 538a712d52..0000000000 --- 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 ac9a5337b4..0000000000 --- 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 538a712d52..0000000000 --- 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 8d8a869798..0000000000 --- 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 6966e949ae..0000000000 --- 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 3c514402a7..0000000000 --- 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 07b5445e5e..0000000000 --- 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 56f3dec405..0000000000 --- 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 c36dcecbbd..0000000000 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 eba29a9abe..0000000000 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 dff1eb16d8..0000000000 --- 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 0bf52afa58..0000000000 --- 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 f0552003ee..0000000000 --- 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 2ec27074be..0000000000 --- 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 9a3bb9654b..0000000000 --- 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 c44f7c92d5..0000000000 --- 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 3ddb276c50..0000000000 --- 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 e82fc6a4b6..0000000000 --- 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 e63452044b..0000000000 --- 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 960727f128..0000000000 --- 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 46d8bd0541..0000000000 --- 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 f8eb9bc848..0000000000 --- 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 217dbcc059..0000000000 --- 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 3bd38a4a91..0000000000 --- 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 5d5edcde8f..0000000000 --- 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 75802ef31a..0000000000 --- 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 6946754271..0000000000 --- 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 082ce669f8..0000000000 --- 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 73e2af979c..0000000000 --- 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 8208b2ced2..0000000000 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 54957bf6df..646f0f5191 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 c8ebc7d11d..da4c2698fd 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 961cc6bfec..58d8789d49 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 73579650c6..7134162365 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 aa27bc1b09..3f249409ff 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 7eba0d1934..5645457e7b 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 7ad5b8d724..29ed3b4817 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 c0df127a47..3658c41d16 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 d3c604932a..1cf14534c6 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 4feb88341e..bef83d7104 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 286ddfe0e7..7c12ce637a 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 175a10e325..c60145f832 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 e8f2049cb9..5e77543999 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 85d8a0d974..3b639bd17b 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 7479c73ed0..5d589d2bcd 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 0da4c8ee25..ef58f6984d 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 84319578d3..9def663ef8 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 e13ab8d116..e2dc8a2c35 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 44b5d6bfe0..4b14123c04 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 9e21d7d0b4..69ddc25842 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 e93889a265..b61f736de4 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 ee271f8c50..ff8fd2c5f1 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 c1e14b067b..307bafe830 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 2abc1d8f12..af12fd0d95 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 c46800db79..f15e5ce80e 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 6b9b736092..389a4a0567 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 278f725b3c..1302f17ff8 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 dab90636ec..548f432d13 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 e3b6b25dbb..3348c2fbde 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 553091f8ec..2edd2774b1 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 4dcc578b7f..930c17d681 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 f73df6138b..47944bd142 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 ba3b543fc2..eb71f3d9bf 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 f8027fe274..0e353e67ac 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 27fda6795a..3b985d95a7 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 e13e69514f..f714c84aee 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 414ef3e987..0508846366 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 0186f1b31c..3db8364e95 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 9779d67150..0d892364ed 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 c71637b9bf..cb394203c2 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 3a43435904..aa38514cd6 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 50ee8ab6ae..e082f63d9e 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 8cca00e6dd..e76e1cfe61 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 f511cc3182..aa45065578 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 ecf7283a2f..feed319216 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 e56e7919bb..c1452a16f4 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 f3d6f89d72..48fba80315 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 32a6103a42..09add9e396 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 360e5ffc0c..26d21a129c 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 3b91adcddc..8078286578 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 27fda6795a..3b985d95a7 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 e93889a265..b61f736de4 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 9531cbc108..5ff7126eae 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 2a9ad623a6..25ae32a2fd 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 d3dabc1c99..b3922e1e37 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 99a8b0afde..9929b7ef36 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 6647247816..015d204f62 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 c2f331ba66..57ab480090 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 8310ffd7c4..850a61c423 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 226259989a..c51ec8b97c 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 3b301ea171..0ad98f2fba 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 29e3bcc813..5105da56f7 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 8acd2f0959..bf3fcb564e 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 2527f54004..1329f01895 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 315078fbb3..0e5d47547d 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 14bf94616c..d135e227c0 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 ecd2846a42..3403566224 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 fb441ad7a4..99d23172df 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 d85120f7db..99ee889e4e 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 2ffaf12c05..5c6bcc6a34 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 c050c2b2bf..60bef31905 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") {