From 43a6e8d116c96589127a7730da4296a4b382c4fc Mon Sep 17 00:00:00 2001 From: camera-2018 <2907618001@qq.com> Date: Mon, 24 Apr 2023 11:26:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0ipynb=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theme/css/jupyterlab/cells/inputarea.css | 70 + .../theme/css/jupyterlab/cells/widget.css | 237 ++ .vitepress/theme/css/jupyterlab/index.css | 7 + .../css/jupyterlab/lumino.widgets.widget.css | 26 + .../theme/css/jupyterlab/materialcolors.css | 267 ++ .../theme/css/jupyterlab/notebook.base.css | 460 +++ .../theme/css/jupyterlab/output.area.base.css | 276 ++ .../theme/css/jupyterlab/rendermine.base.css | 634 +++ .vitepress/theme/style.css | 25 + components/RenderJupyterNotebook.vue | 19 + notebook.md | 18 + package-lock.json | 3513 ++++++++++++++++- package.json | 7 + utils/index.js | 1 + utils/notebook/codemirror.js | 50 + utils/notebook/codemirror.theme.js | 180 + utils/notebook/index.js | 348 ++ utils/notebook/latex.js | 194 + utils/notebook/lib/index.js | 108 + utils/notebook/markdown.js | 10 + utils/notebook/renderers.js | 701 ++++ utils/notebook/sanitizer.js | 948 +++++ utils/notebook/style/base.css | 15 + utils/notebook/style/index.css | 8 + utils/notebook/style/index.js | 8 + 特征工程.ipynb | 1803 +++++++++ 特征工程.json | 1803 +++++++++ 27 files changed, 11696 insertions(+), 40 deletions(-) create mode 100644 .vitepress/theme/css/jupyterlab/cells/inputarea.css create mode 100644 .vitepress/theme/css/jupyterlab/cells/widget.css create mode 100644 .vitepress/theme/css/jupyterlab/index.css create mode 100644 .vitepress/theme/css/jupyterlab/lumino.widgets.widget.css create mode 100644 .vitepress/theme/css/jupyterlab/materialcolors.css create mode 100644 .vitepress/theme/css/jupyterlab/notebook.base.css create mode 100644 .vitepress/theme/css/jupyterlab/output.area.base.css create mode 100644 .vitepress/theme/css/jupyterlab/rendermine.base.css create mode 100644 components/RenderJupyterNotebook.vue create mode 100644 notebook.md create mode 100644 utils/index.js create mode 100644 utils/notebook/codemirror.js create mode 100644 utils/notebook/codemirror.theme.js create mode 100644 utils/notebook/index.js create mode 100644 utils/notebook/latex.js create mode 100644 utils/notebook/lib/index.js create mode 100644 utils/notebook/markdown.js create mode 100644 utils/notebook/renderers.js create mode 100644 utils/notebook/sanitizer.js create mode 100644 utils/notebook/style/base.css create mode 100644 utils/notebook/style/index.css create mode 100644 utils/notebook/style/index.js create mode 100644 特征工程.ipynb create mode 100644 特征工程.json diff --git a/.vitepress/theme/css/jupyterlab/cells/inputarea.css b/.vitepress/theme/css/jupyterlab/cells/inputarea.css new file mode 100644 index 0000000..203709a --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/cells/inputarea.css @@ -0,0 +1,70 @@ +/* 源码地址:https://github.com/jupyterlab/jupyterlab/blob/master/packages/cells/style/inputarea.css */ + +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|---------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- +| Input +|---------------------------------------------------------------------------- */ + +/* All input areas */ +.jp-InputArea { + display: table; + table-layout: fixed; + width: 100%; + overflow: hidden; +} + +.jp-InputArea-editor { + display: table-cell; + overflow: hidden; + vertical-align: top; + + /* This is the non-active, default styling */ + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + border-radius: 0; + background: var(--jp-cell-editor-background); +} + +.jp-InputPrompt { + display: table-cell; + vertical-align: top; + width: var(--jp-cell-prompt-width); + color: var(--jp-cell-inprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + opacity: var(--jp-cell-prompt-opacity); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* ----------------------------------------------------------------------------- +| Mobile +|---------------------------------------------------------------------------- */ +@media only screen and (max-width: 760px) { + .jp-InputArea-editor { + display: table-row; + margin-left: var(--jp-notebook-padding); + } + + .jp-InputPrompt { + display: table-row; + text-align: left; + } +} diff --git a/.vitepress/theme/css/jupyterlab/cells/widget.css b/.vitepress/theme/css/jupyterlab/cells/widget.css new file mode 100644 index 0000000..a8fb0c2 --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/cells/widget.css @@ -0,0 +1,237 @@ +/* stylelint-disable no-descending-specificity */ + +/* 源码地址:https://github.com/jupyterlab/jupyterlab/blob/master/packages/cells/style/widget.css */ + +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|---------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- +| Private CSS variables +|---------------------------------------------------------------------------- */ + +:root { + --jp-private-cell-scrolling-output-offset: 5px; +} + +/* ----------------------------------------------------------------------------- +| Cell +|---------------------------------------------------------------------------- */ + +.jp-Cell { + padding: var(--jp-cell-padding); + margin: 0; + border: none; + outline: none; + background: transparent; +} + +/* ----------------------------------------------------------------------------- +| Common input/output +|---------------------------------------------------------------------------- */ + +.jp-Cell-inputWrapper, +.jp-Cell-outputWrapper { + display: flex; + flex-direction: row; + padding: 0; + margin: 0; + + /* Added to reveal the box-shadow on the input and output collapsers. */ + overflow: visible; +} + +/* Only input/output areas inside cells */ +.jp-Cell-inputArea, +.jp-Cell-outputArea { + flex: 1 1 auto; +} + +/* ----------------------------------------------------------------------------- +| Collapser +|---------------------------------------------------------------------------- */ + +/* Make the output collapser disappear when there is not output, but do so + * in a manner that leaves it in the layout and preserves its width. + */ +.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser { + border: none !important; + background: transparent !important; +} + +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser { + min-height: var(--jp-cell-collapser-min-height); +} + +/* ----------------------------------------------------------------------------- +| Output +|---------------------------------------------------------------------------- */ + +/* Put a space between input and output when there IS output */ +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper { + margin-top: 5px; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea { + overflow-y: auto; + max-height: 24em; + margin-left: var(--jp-private-cell-scrolling-output-offset); + resize: vertical; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] { + max-height: unset; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after { + content: ' '; + box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%); + width: 100%; + height: 100%; + position: sticky; + bottom: 0; + top: 0; + margin-top: -50%; + float: left; + display: block; + pointer-events: none; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child { + padding-top: 6px; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt { + width: + calc( + var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset) + ); +} + +/* ----------------------------------------------------------------------------- +| CodeCell +|---------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- +| MarkdownCell +|---------------------------------------------------------------------------- */ + +.jp-MarkdownOutput { + display: table-cell; + width: 100%; + margin-top: 0; + margin-bottom: 0; + padding-left: var(--jp-code-padding); +} + +.jp-MarkdownOutput.jp-RenderedHTMLCommon { + overflow: auto; +} + +/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */ +.jp-collapseHeadingButton { + display: flex; + min-height: var(--jp-cell-collapser-min-height); + font-size: var(--jp-code-font-size); + position: absolute; + background-color: transparent; + background-size: 25px; + background-repeat: no-repeat; + background-position-x: center; + background-position-y: top; + background-image: var(--jp-icon-caret-down); + right: 0; + top: 0; + bottom: 0; +} + +.jp-collapseHeadingButton.jp-mod-collapsed { + background-image: var(--jp-icon-caret-right); +} + +/* + set the container font size to match that of content + so that the nested collapse buttons have the right size +*/ +.jp-MarkdownCell .jp-InputPrompt { + font-size: var(--jp-content-font-size1); +} + +/* + Align collapseHeadingButton with cell top header + The font sizes are identical to the ones in packages/rendermime/style/base.css +*/ +.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] { + font-size: var(--jp-content-font-size5); + background-position-y: calc(0.3 * var(--jp-content-font-size5)); +} + +.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] { + font-size: var(--jp-content-font-size4); + background-position-y: calc(0.3 * var(--jp-content-font-size4)); +} + +.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] { + font-size: var(--jp-content-font-size3); + background-position-y: calc(0.3 * var(--jp-content-font-size3)); +} + +.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] { + font-size: var(--jp-content-font-size2); + background-position-y: calc(0.3 * var(--jp-content-font-size2)); +} + +.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] { + font-size: var(--jp-content-font-size1); + background-position-y: top; +} + +.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] { + font-size: var(--jp-content-font-size0); + background-position-y: top; +} + +/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */ +.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton { + display: none; +} + +.jp-Notebook.jp-mod-showHiddenCellsButton :is(.jp-MarkdownCell:hover, .jp-mod-active) .jp-collapseHeadingButton { + display: flex; +} + +/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which +is a consequence of the showHiddenCellsButton option in Notebook Settings) */ +.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton { + margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding)); + margin-top: var(--jp-code-padding); + border: 1px solid var(--jp-border-color2); + background-color: var(--jp-border-color3) !important; + color: var(--jp-content-font-color0) !important; + display: flex; +} + +.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover { + background-color: var(--jp-border-color2) !important; +} + +.jp-showHiddenCellsButton { + display: none; +} + +/* ----------------------------------------------------------------------------- +| Printing +|---------------------------------------------------------------------------- */ + +/* +Using block instead of flex to allow the use of the break-inside CSS property for +cell outputs. +*/ + +@media print { + .jp-Cell-inputWrapper, + .jp-Cell-outputWrapper { + display: block; + } +} diff --git a/.vitepress/theme/css/jupyterlab/index.css b/.vitepress/theme/css/jupyterlab/index.css new file mode 100644 index 0000000..0ce68a2 --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/index.css @@ -0,0 +1,7 @@ +@import url('./lumino.widgets.widget.css'); +@import url('./materialcolors.css'); +@import url('./rendermine.base.css'); +@import url('./output.area.base.css'); +@import url('./cells/inputarea.css'); +@import url('./cells/widget.css'); +@import url('./notebook.base.css'); diff --git a/.vitepress/theme/css/jupyterlab/lumino.widgets.widget.css b/.vitepress/theme/css/jupyterlab/lumino.widgets.widget.css new file mode 100644 index 0000000..c189954 --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/lumino.widgets.widget.css @@ -0,0 +1,26 @@ +/* 源码地址:https://github.com/jupyterlab/lumino/blob/main/packages/widgets/style/widget.css */ + +/* + * Copyright (c) Jupyter Development Team. + * Distributed under the terms of the Modified BSD License. + */ + +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|---------------------------------------------------------------------------- */ + +.lm-Widget { + box-sizing: border-box; + position: relative; + overflow: hidden; + cursor: default; +} + +.lm-Widget.lm-mod-hidden { + display: none !important; +} diff --git a/.vitepress/theme/css/jupyterlab/materialcolors.css b/.vitepress/theme/css/jupyterlab/materialcolors.css new file mode 100644 index 0000000..2714dbc --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/materialcolors.css @@ -0,0 +1,267 @@ +/* 源码地址:https://github.com/jupyterlab/jupyterlab/blob/master/packages/apputils/style/materialcolors.css */ + +/* + * Copyright (c) Jupyter Development Team. + * Distributed under the terms of the Modified BSD License. + */ + +/** + * google-material-color v1.2.6 + * https://github.com/danlevan/google-material-color + */ +:root { + --md-red-50: #ffebee; + --md-red-100: #ffcdd2; + --md-red-200: #ef9a9a; + --md-red-300: #e57373; + --md-red-400: #ef5350; + --md-red-500: #f44336; + --md-red-600: #e53935; + --md-red-700: #d32f2f; + --md-red-800: #c62828; + --md-red-900: #b71c1c; + --md-red-A100: #ff8a80; + --md-red-A200: #ff5252; + --md-red-A400: #ff1744; + --md-red-A700: #d50000; + --md-pink-50: #fce4ec; + --md-pink-100: #f8bbd0; + --md-pink-200: #f48fb1; + --md-pink-300: #f06292; + --md-pink-400: #ec407a; + --md-pink-500: #e91e63; + --md-pink-600: #d81b60; + --md-pink-700: #c2185b; + --md-pink-800: #ad1457; + --md-pink-900: #880e4f; + --md-pink-A100: #ff80ab; + --md-pink-A200: #ff4081; + --md-pink-A400: #f50057; + --md-pink-A700: #c51162; + --md-purple-50: #f3e5f5; + --md-purple-100: #e1bee7; + --md-purple-200: #ce93d8; + --md-purple-300: #ba68c8; + --md-purple-400: #ab47bc; + --md-purple-500: #9c27b0; + --md-purple-600: #8e24aa; + --md-purple-700: #7b1fa2; + --md-purple-800: #6a1b9a; + --md-purple-900: #4a148c; + --md-purple-A100: #ea80fc; + --md-purple-A200: #e040fb; + --md-purple-A400: #d500f9; + --md-purple-A700: #a0f; + --md-deep-purple-50: #ede7f6; + --md-deep-purple-100: #d1c4e9; + --md-deep-purple-200: #b39ddb; + --md-deep-purple-300: #9575cd; + --md-deep-purple-400: #7e57c2; + --md-deep-purple-500: #673ab7; + --md-deep-purple-600: #5e35b1; + --md-deep-purple-700: #512da8; + --md-deep-purple-800: #4527a0; + --md-deep-purple-900: #311b92; + --md-deep-purple-A100: #b388ff; + --md-deep-purple-A200: #7c4dff; + --md-deep-purple-A400: #651fff; + --md-deep-purple-A700: #6200ea; + --md-indigo-50: #e8eaf6; + --md-indigo-100: #c5cae9; + --md-indigo-200: #9fa8da; + --md-indigo-300: #7986cb; + --md-indigo-400: #5c6bc0; + --md-indigo-500: #3f51b5; + --md-indigo-600: #3949ab; + --md-indigo-700: #303f9f; + --md-indigo-800: #283593; + --md-indigo-900: #1a237e; + --md-indigo-A100: #8c9eff; + --md-indigo-A200: #536dfe; + --md-indigo-A400: #3d5afe; + --md-indigo-A700: #304ffe; + --md-blue-50: #e3f2fd; + --md-blue-100: #bbdefb; + --md-blue-200: #90caf9; + --md-blue-300: #64b5f6; + --md-blue-400: #42a5f5; + --md-blue-500: #2196f3; + --md-blue-600: #1e88e5; + --md-blue-700: #1976d2; + --md-blue-800: #1565c0; + --md-blue-900: #0d47a1; + --md-blue-A100: #82b1ff; + --md-blue-A200: #448aff; + --md-blue-A400: #2979ff; + --md-blue-A700: #2962ff; + --md-light-blue-50: #e1f5fe; + --md-light-blue-100: #b3e5fc; + --md-light-blue-200: #81d4fa; + --md-light-blue-300: #4fc3f7; + --md-light-blue-400: #29b6f6; + --md-light-blue-500: #03a9f4; + --md-light-blue-600: #039be5; + --md-light-blue-700: #0288d1; + --md-light-blue-800: #0277bd; + --md-light-blue-900: #01579b; + --md-light-blue-A100: #80d8ff; + --md-light-blue-A200: #40c4ff; + --md-light-blue-A400: #00b0ff; + --md-light-blue-A700: #0091ea; + --md-cyan-50: #e0f7fa; + --md-cyan-100: #b2ebf2; + --md-cyan-200: #80deea; + --md-cyan-300: #4dd0e1; + --md-cyan-400: #26c6da; + --md-cyan-500: #00bcd4; + --md-cyan-600: #00acc1; + --md-cyan-700: #0097a7; + --md-cyan-800: #00838f; + --md-cyan-900: #006064; + --md-cyan-A100: #84ffff; + --md-cyan-A200: #18ffff; + --md-cyan-A400: #00e5ff; + --md-cyan-A700: #00b8d4; + --md-teal-50: #e0f2f1; + --md-teal-100: #b2dfdb; + --md-teal-200: #80cbc4; + --md-teal-300: #4db6ac; + --md-teal-400: #26a69a; + --md-teal-500: #009688; + --md-teal-600: #00897b; + --md-teal-700: #00796b; + --md-teal-800: #00695c; + --md-teal-900: #004d40; + --md-teal-A100: #a7ffeb; + --md-teal-A200: #64ffda; + --md-teal-A400: #1de9b6; + --md-teal-A700: #00bfa5; + --md-green-50: #e8f5e9; + --md-green-100: #c8e6c9; + --md-green-200: #a5d6a7; + --md-green-300: #81c784; + --md-green-400: #66bb6a; + --md-green-500: #4caf50; + --md-green-600: #43a047; + --md-green-700: #388e3c; + --md-green-800: #2e7d32; + --md-green-900: #1b5e20; + --md-green-A100: #b9f6ca; + --md-green-A200: #69f0ae; + --md-green-A400: #00e676; + --md-green-A700: #00c853; + --md-light-green-50: #f1f8e9; + --md-light-green-100: #dcedc8; + --md-light-green-200: #c5e1a5; + --md-light-green-300: #aed581; + --md-light-green-400: #9ccc65; + --md-light-green-500: #8bc34a; + --md-light-green-600: #7cb342; + --md-light-green-700: #689f38; + --md-light-green-800: #558b2f; + --md-light-green-900: #33691e; + --md-light-green-A100: #ccff90; + --md-light-green-A200: #b2ff59; + --md-light-green-A400: #76ff03; + --md-light-green-A700: #64dd17; + --md-lime-50: #f9fbe7; + --md-lime-100: #f0f4c3; + --md-lime-200: #e6ee9c; + --md-lime-300: #dce775; + --md-lime-400: #d4e157; + --md-lime-500: #cddc39; + --md-lime-600: #c0ca33; + --md-lime-700: #afb42b; + --md-lime-800: #9e9d24; + --md-lime-900: #827717; + --md-lime-A100: #f4ff81; + --md-lime-A200: #eeff41; + --md-lime-A400: #c6ff00; + --md-lime-A700: #aeea00; + --md-yellow-50: #fffde7; + --md-yellow-100: #fff9c4; + --md-yellow-200: #fff59d; + --md-yellow-300: #fff176; + --md-yellow-400: #ffee58; + --md-yellow-500: #ffeb3b; + --md-yellow-600: #fdd835; + --md-yellow-700: #fbc02d; + --md-yellow-800: #f9a825; + --md-yellow-900: #f57f17; + --md-yellow-A100: #ffff8d; + --md-yellow-A200: #ff0; + --md-yellow-A400: #ffea00; + --md-yellow-A700: #ffd600; + --md-amber-50: #fff8e1; + --md-amber-100: #ffecb3; + --md-amber-200: #ffe082; + --md-amber-300: #ffd54f; + --md-amber-400: #ffca28; + --md-amber-500: #ffc107; + --md-amber-600: #ffb300; + --md-amber-700: #ffa000; + --md-amber-800: #ff8f00; + --md-amber-900: #ff6f00; + --md-amber-A100: #ffe57f; + --md-amber-A200: #ffd740; + --md-amber-A400: #ffc400; + --md-amber-A700: #ffab00; + --md-orange-50: #fff3e0; + --md-orange-100: #ffe0b2; + --md-orange-200: #ffcc80; + --md-orange-300: #ffb74d; + --md-orange-400: #ffa726; + --md-orange-500: #ff9800; + --md-orange-600: #fb8c00; + --md-orange-700: #f57c00; + --md-orange-800: #ef6c00; + --md-orange-900: #e65100; + --md-orange-A100: #ffd180; + --md-orange-A200: #ffab40; + --md-orange-A400: #ff9100; + --md-orange-A700: #ff6d00; + --md-deep-orange-50: #fbe9e7; + --md-deep-orange-100: #ffccbc; + --md-deep-orange-200: #ffab91; + --md-deep-orange-300: #ff8a65; + --md-deep-orange-400: #ff7043; + --md-deep-orange-500: #ff5722; + --md-deep-orange-600: #f4511e; + --md-deep-orange-700: #e64a19; + --md-deep-orange-800: #d84315; + --md-deep-orange-900: #bf360c; + --md-deep-orange-A100: #ff9e80; + --md-deep-orange-A200: #ff6e40; + --md-deep-orange-A400: #ff3d00; + --md-deep-orange-A700: #dd2c00; + --md-brown-50: #efebe9; + --md-brown-100: #d7ccc8; + --md-brown-200: #bcaaa4; + --md-brown-300: #a1887f; + --md-brown-400: #8d6e63; + --md-brown-500: #795548; + --md-brown-600: #6d4c41; + --md-brown-700: #5d4037; + --md-brown-800: #4e342e; + --md-brown-900: #3e2723; + --md-grey-50: #fafafa; + --md-grey-100: #f5f5f5; + --md-grey-200: #eee; + --md-grey-300: #e0e0e0; + --md-grey-400: #bdbdbd; + --md-grey-500: #9e9e9e; + --md-grey-600: #757575; + --md-grey-700: #616161; + --md-grey-800: #424242; + --md-grey-900: #212121; + --md-blue-grey-50: #eceff1; + --md-blue-grey-100: #cfd8dc; + --md-blue-grey-200: #b0bec5; + --md-blue-grey-300: #90a4ae; + --md-blue-grey-400: #78909c; + --md-blue-grey-500: #607d8b; + --md-blue-grey-600: #546e7a; + --md-blue-grey-700: #455a64; + --md-blue-grey-800: #37474f; + --md-blue-grey-900: #263238; +} diff --git a/.vitepress/theme/css/jupyterlab/notebook.base.css b/.vitepress/theme/css/jupyterlab/notebook.base.css new file mode 100644 index 0000000..8a613cc --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/notebook.base.css @@ -0,0 +1,460 @@ +/* stylelint-disable no-descending-specificity */ + +/* 源码地址:https://github.com/jupyterlab/jupyterlab/blob/master/packages/notebook/style/base.css */ + +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|---------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- +| CSS variables +|---------------------------------------------------------------------------- */ + +:root { + --jp-side-by-side-output-size: 1fr; + --jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size); + --jp-private-notebook-dragImage-width: 304px; + --jp-private-notebook-dragImage-height: 36px; + --jp-private-notebook-selected-color: var(--md-blue-400); + --jp-private-notebook-active-color: var(--md-green-400); +} + +/* ----------------------------------------------------------------------------- +| Notebook +|---------------------------------------------------------------------------- */ + +.jp-NotebookPanel { + display: block; + height: 100%; +} + +.jp-NotebookPanel.jp-Document { + min-width: 240px; + min-height: 120px; +} + +.jp-Notebook { + padding: var(--jp-notebook-padding); + outline: none; + overflow: auto; + background: var(--jp-layout-color0); +} + +.jp-Notebook.jp-mod-scrollPastEnd::after { + display: block; + content: ''; + min-height: var(--jp-notebook-scroll-padding); +} + +.jp-MainAreaWidget-ContainStrict .jp-Notebook * { + contain: strict; +} + +.jp-Notebook-render * { + contain: none !important; +} + +.jp-Notebook .jp-Cell { + overflow: visible; +} + +.jp-Notebook .jp-Cell .jp-InputPrompt { + cursor: move; +} + +/* ----------------------------------------------------------------------------- +| Notebook state related styling +| +| The notebook and cells each have states, here are the possibilities: +| +| - Notebook +| - Command +| - Edit +| - Cell +| - None +| - Active (only one can be active) +| - Selected (the cells actions are applied to) +| - Multiselected (when multiple selected, the cursor) +| - No outputs +|---------------------------------------------------------------------------- */ + +/* Command or edit modes */ + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +/* cell is active */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser { + background: var(--jp-brand-color1); +} + +/* cell is dirty */ +.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt { + color: var(--jp-warn-color1); +} + +.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before { + color: var(--jp-warn-color1); + content: '•'; +} + +.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser { + background: var(--jp-warn-color1); +} + +/* collapser is hovered */ +.jp-Notebook .jp-Cell .jp-Collapser:hover { + box-shadow: var(--jp-elevation-z2); + background: var(--jp-brand-color1); + opacity: var(--jp-cell-collapser-not-active-hover-opacity); +} + +/* cell is active and collapser is hovered */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover { + background: var(--jp-brand-color0); + opacity: 1; +} + +/* Command mode */ + +.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected { + background: var(--jp-notebook-multiselected-color); +} + +.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) { + background: transparent; +} + +/* Edit mode */ + +.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor { + border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color); + box-shadow: var(--jp-input-box-shadow); + background-color: var(--jp-cell-editor-active-background); +} + +/* ----------------------------------------------------------------------------- +| Notebook drag and drop +|---------------------------------------------------------------------------- */ + +.jp-Notebook-cell.jp-mod-dropSource { + opacity: 0.5; +} + +.jp-Notebook-cell.jp-mod-dropTarget, +.jp-Notebook.jp-mod-commandMode .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget { + border-top-color: var(--jp-private-notebook-selected-color); + border-top-style: solid; + border-top-width: 2px; +} + +.jp-dragImage { + display: block; + flex-direction: row; + width: var(--jp-private-notebook-dragImage-width); + height: var(--jp-private-notebook-dragImage-height); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background); + overflow: visible; +} + +.jp-dragImage-singlePrompt { + box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12); +} + +.jp-dragImage .jp-dragImage-content { + flex: 1 1 auto; + z-index: 2; + font-size: var(--jp-code-font-size); + font-family: var(--jp-code-font-family); + line-height: var(--jp-code-line-height); + padding: var(--jp-code-padding); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background-color); + color: var(--jp-content-font-color3); + text-align: left; + margin: 4px 4px 4px 0; +} + +.jp-dragImage .jp-dragImage-prompt { + flex: 0 0 auto; + min-width: 36px; + color: var(--jp-cell-inprompt-font-color); + padding: var(--jp-code-padding); + padding-left: 12px; + font-family: var(--jp-cell-prompt-font-family); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: 1.9; + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; +} + +.jp-dragImage-multipleBack { + z-index: -1; + position: absolute; + height: 32px; + width: 300px; + top: 8px; + left: 8px; + background: var(--jp-layout-color2); + border: var(--jp-border-width) solid var(--jp-input-border-color); + box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12); +} + +/* ----------------------------------------------------------------------------- +| Cell toolbar +|---------------------------------------------------------------------------- */ + +.jp-NotebookTools { + display: block; + min-width: var(--jp-sidebar-min-width); + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); + overflow: auto; +} + +.jp-NotebookTools-tool { + padding: 0 12px; +} + +.jp-ActiveCellTool { + padding: 12px; + display: flex; +} + +.jp-ActiveCell-Content { + flex: 1 1 auto; +} + +.jp-ActiveCellTool .jp-Cell-Content { + background: var(--jp-cell-editor-background); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + border-radius: 0; + min-height: 29px; +} + +.jp-ActiveCellTool .jp-InputPrompt { + min-width: calc(var(--jp-cell-prompt-width) * 0.75); +} + +.jp-Cell-Content > pre { + padding: 5px 4px; + margin: 0; + white-space: normal; +} + +.jp-MetadataEditorTool { + flex-direction: column; + padding: 12px 0; +} + +.jp-RankedPanel > :not(:first-child) { + margin-top: 12px; +} + +.jp-KeySelector select.jp-mod-styled { + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + border: var(--jp-border-width) solid var(--jp-border-color1); +} + +.jp-KeySelector label, +.jp-MetadataEditorTool label, +.jp-NumberSetter label { + line-height: 1.4; +} + +.jp-NotebookTools .jp-select-wrapper { + margin-top: 4px; + margin-bottom: 0; +} + +.jp-NumberSetter input { + width: 100%; + margin-top: 4px; +} + +.jp-NotebookTools .jp-Collapse { + margin-top: 16px; +} + +/* ----------------------------------------------------------------------------- +| Presentation Mode (.jp-mod-presentationMode) +|---------------------------------------------------------------------------- */ + +.jp-mod-presentationMode .jp-Notebook { + --jp-content-font-size1: var(--jp-content-presentation-font-size1); + --jp-code-font-size: var(--jp-code-presentation-font-size); +} + +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt, +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt { + flex: 0 0 110px; +} + +/* ----------------------------------------------------------------------------- +| Side-by-side Mode (.jp-mod-sideBySide) +|---------------------------------------------------------------------------- */ +.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell { + margin-top: 3em; + margin-bottom: 3em; + margin-left: 5%; + margin-right: 5%; +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell { + display: grid; + grid-template-columns: + minmax(0, 1fr) min-content minmax( + 0, + var(--jp-side-by-side-output-size) + ); + grid-template-rows: auto minmax(0, 1fr) auto; + grid-template-areas: + 'header header header' + 'input handle output' + 'footer footer footer'; +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell { + grid-template-columns: + minmax(0, 1fr) min-content minmax( + 0, + var(--jp-side-by-side-resized-cell) + ); +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader { + grid-area: header; +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper { + grid-area: input; +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper { + /* overwrite the default margin (no vertical separation needed in side by side move */ + margin-top: 0; + grid-area: output; +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter { + grid-area: footer; +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle { + grid-area: handle; + user-select: none; + display: block; + height: 100%; + cursor: ew-resize; + padding: 0 var(--jp-cell-padding); +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after { + content: ''; + display: block; + background: var(--jp-border-color2); + height: 100%; + width: 5px; +} + +.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell .jp-CellResizeHandle::after { + background: var(--jp-border-color0); +} + +.jp-CellResizeHandle { + display: none; +} + +/* ----------------------------------------------------------------------------- +| Placeholder +|---------------------------------------------------------------------------- */ + +.jp-Cell-Placeholder { + padding-left: 55px; +} + +.jp-Cell-Placeholder-wrapper { + background: #fff; + border: 1px solid; + border-color: #e5e6e9 #dfe0e4 #d0d1d5; + border-radius: 4px; + -webkit-border-radius: 4px; + margin: 10px 15px; +} + +.jp-Cell-Placeholder-wrapper-inner { + padding: 15px; + position: relative; +} + +.jp-Cell-Placeholder-wrapper-body { + background-repeat: repeat; + background-size: 50% auto; +} + +.jp-Cell-Placeholder-wrapper-body div { + background: #f6f7f8; + background-image: + -webkit-linear-gradient( + left, + #f6f7f8 0%, + #edeef1 20%, + #f6f7f8 40%, + #f6f7f8 100% + ); + background-repeat: no-repeat; + background-size: 800px 104px; + height: 104px; + position: absolute; + right: 15px; + left: 15px; + top: 15px; +} + +div.jp-Cell-Placeholder-h1 { + top: 20px; + height: 20px; + left: 15px; + width: 150px; +} + +div.jp-Cell-Placeholder-h2 { + left: 15px; + top: 50px; + height: 10px; + width: 100px; +} + +div.jp-Cell-Placeholder-content-1, +div.jp-Cell-Placeholder-content-2, +div.jp-Cell-Placeholder-content-3 { + left: 15px; + right: 15px; + height: 10px; +} + +div.jp-Cell-Placeholder-content-1 { + top: 100px; +} + +div.jp-Cell-Placeholder-content-2 { + top: 120px; +} + +div.jp-Cell-Placeholder-content-3 { + top: 140px; +} diff --git a/.vitepress/theme/css/jupyterlab/output.area.base.css b/.vitepress/theme/css/jupyterlab/output.area.base.css new file mode 100644 index 0000000..1c9a2b2 --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/output.area.base.css @@ -0,0 +1,276 @@ +/* stylelint-disable no-descending-specificity */ + +/* 源码地址:https://github.com/jupyterlab/jupyterlab/blob/master/packages/outputarea/style/base.css */ + +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|---------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- +| Main OutputArea +| OutputArea has a list of Outputs +|---------------------------------------------------------------------------- */ + +.jp-OutputArea { + overflow-y: auto; +} + +.jp-OutputArea-child { + display: table; + table-layout: fixed; + width: 100%; + overflow: hidden; +} + +.jp-OutputPrompt { + width: var(--jp-cell-prompt-width); + color: var(--jp-cell-outprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + opacity: var(--jp-cell-prompt-opacity); + + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jp-OutputArea-prompt { + display: table-cell; + vertical-align: top; +} + +.jp-OutputArea-output { + display: table-cell; + width: 100%; + height: auto; + overflow: auto; + user-select: text; + -moz-user-select: text; + -webkit-user-select: text; + -ms-user-select: text; +} + +/** + * Isolated output. + */ +.jp-OutputArea-output.jp-mod-isolated { + width: 100%; + display: block; +} + +/* +When drag events occur, `lm-mod-override-cursor` is added to the body. +Because iframes steal all cursor events, the following two rules are necessary +to suppress pointer events while resize drags are occurring. There may be a +better solution to this problem. +*/ +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated { + position: relative; +} + +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; +} + +/* pre */ + +.jp-OutputArea-output pre { + border: none; + margin: 0; + padding: 0; + overflow-x: auto; + overflow-y: auto; + word-break: break-all; + word-wrap: break-word; + white-space: pre-wrap; +} + +/* tables */ + +.jp-OutputArea-output.jp-RenderedHTMLCommon table { + margin-left: 0; + margin-right: 0; +} + +/* description lists */ + +.jp-OutputArea-output dl, +.jp-OutputArea-output dt, +.jp-OutputArea-output dd { + display: block; +} + +.jp-OutputArea-output dl { + width: 100%; + overflow: hidden; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dt { + font-weight: bold; + float: left; + width: 20%; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dd { + float: left; + width: 80%; + padding: 0; + margin: 0; +} + +.jp-TrimmedOutputs pre { + background: var(--jp-layout-color3); + font-size: calc(var(--jp-code-font-size) * 1.4); + text-align: center; + text-transform: uppercase; +} + +/* Hide the gutter in case of + * - nested output areas (e.g. in the case of output widgets) + * - mirrored output areas + */ +.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt { + display: none; +} + +/* Hide empty lines in the output area, for instance due to cleared widgets */ +.jp-OutputArea-prompt:empty { + padding: 0; + border: 0; +} + +/* ----------------------------------------------------------------------------- +| executeResult is added to any Output-result for the display of the object +| returned by a cell +|---------------------------------------------------------------------------- */ + +.jp-OutputArea-output.jp-OutputArea-executeResult { + margin-left: 0; + width: 100%; +} + +/* Text output with the Out[] prompt needs a top padding to match the + * alignment of the Out[] prompt itself. + */ +.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output { + padding-top: var(--jp-code-padding); + border-top: var(--jp-border-width) solid transparent; +} + +/* ----------------------------------------------------------------------------- +| The Stdin output +|---------------------------------------------------------------------------- */ + +.jp-OutputArea-stdin { + line-height: var(--jp-code-line-height); + padding-top: var(--jp-code-padding); + display: flex; +} + +.jp-Stdin-prompt { + color: var(--jp-content-font-color0); + padding-right: var(--jp-code-padding); + vertical-align: baseline; + flex: 0 0 auto; +} + +.jp-Stdin-input { + font-family: var(--jp-code-font-family); + font-size: inherit; + color: inherit; + background-color: inherit; + width: 42%; + min-width: 200px; + + /* make sure input baseline aligns with prompt */ + vertical-align: baseline; + + /* padding + margin = 0.5em between prompt and cursor */ + padding: 0 0.25em; + margin: 0 0.25em; + flex: 0 0 70%; +} + +.jp-Stdin-input::placeholder { + opacity: 0; +} + +.jp-Stdin-input:focus { + box-shadow: none; +} + +.jp-Stdin-input:focus::placeholder { + opacity: 1; +} + +/* ----------------------------------------------------------------------------- +| Output Area View +|---------------------------------------------------------------------------- */ + +.jp-LinkedOutputView .jp-OutputArea { + height: 100%; + display: block; +} + +.jp-LinkedOutputView .jp-OutputArea-output:only-child { + height: 100%; +} + +/* ----------------------------------------------------------------------------- +| Printing +|---------------------------------------------------------------------------- */ + +@media print { + .jp-OutputArea-child { + break-inside: avoid-page; + } +} + +/* ----------------------------------------------------------------------------- +| Mobile +|---------------------------------------------------------------------------- */ +@media only screen and (max-width: 760px) { + .jp-OutputPrompt { + display: table-row; + text-align: left; + } + + .jp-OutputArea-child .jp-OutputArea-output { + display: table-row; + margin-left: var(--jp-notebook-padding); + } +} + +/* Trimmed outputs warning */ +.jp-TrimmedOutputs > a { + margin: 10px; + text-decoration: none; + cursor: pointer; +} + +.jp-TrimmedOutputs > a:hover { + text-decoration: none; +} diff --git a/.vitepress/theme/css/jupyterlab/rendermine.base.css b/.vitepress/theme/css/jupyterlab/rendermine.base.css new file mode 100644 index 0000000..84e695d --- /dev/null +++ b/.vitepress/theme/css/jupyterlab/rendermine.base.css @@ -0,0 +1,634 @@ +/* stylelint-disable no-descending-specificity */ + +/* 源码地址:https://github.com/jupyterlab/jupyterlab/blob/master/packages/rendermime/style/base.css */ + +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|---------------------------------------------------------------------------- */ + +/* ----------------------------------------------------------------------------- +| RenderedText +|---------------------------------------------------------------------------- */ + +:root { + /* This is the padding value to fill the gaps between lines containing spans with background color. */ + --jp-private-code-span-padding: + calc( + (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2 + ); +} + +.jp-RenderedText { + text-align: left; + padding-left: var(--jp-code-padding); + line-height: var(--jp-code-line-height); + font-family: var(--jp-code-font-family); +} + +.jp-RenderedText pre, +.jp-RenderedJavaScript pre, +.jp-RenderedHTMLCommon pre { + color: var(--jp-content-font-color1); + font-size: var(--jp-code-font-size); + border: none; + margin: 0; + padding: 0; +} + +.jp-RenderedText pre a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} + +.jp-RenderedText pre a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} + +.jp-RenderedText pre a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* console foregrounds and backgrounds */ +.jp-RenderedText pre .ansi-black-fg { + color: #3e424d; +} + +.jp-RenderedText pre .ansi-red-fg { + color: #e75c58; +} + +.jp-RenderedText pre .ansi-green-fg { + color: #00a250; +} + +.jp-RenderedText pre .ansi-yellow-fg { + color: #ddb62b; +} + +.jp-RenderedText pre .ansi-blue-fg { + color: #208ffb; +} + +.jp-RenderedText pre .ansi-magenta-fg { + color: #d160c4; +} + +.jp-RenderedText pre .ansi-cyan-fg { + color: #60c6c8; +} + +.jp-RenderedText pre .ansi-white-fg { + color: #c5c1b4; +} + +.jp-RenderedText pre .ansi-black-bg { + background-color: #3e424d; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-red-bg { + background-color: #e75c58; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-green-bg { + background-color: #00a250; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-yellow-bg { + background-color: #ddb62b; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-blue-bg { + background-color: #208ffb; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-magenta-bg { + background-color: #d160c4; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-cyan-bg { + background-color: #60c6c8; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-white-bg { + background-color: #c5c1b4; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-black-intense-fg { + color: #282c36; +} + +.jp-RenderedText pre .ansi-red-intense-fg { + color: #b22b31; +} + +.jp-RenderedText pre .ansi-green-intense-fg { + color: #007427; +} + +.jp-RenderedText pre .ansi-yellow-intense-fg { + color: #b27d12; +} + +.jp-RenderedText pre .ansi-blue-intense-fg { + color: #0065ca; +} + +.jp-RenderedText pre .ansi-magenta-intense-fg { + color: #a03196; +} + +.jp-RenderedText pre .ansi-cyan-intense-fg { + color: #258f8f; +} + +.jp-RenderedText pre .ansi-white-intense-fg { + color: #a1a6b2; +} + +.jp-RenderedText pre .ansi-black-intense-bg { + background-color: #282c36; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-red-intense-bg { + background-color: #b22b31; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-green-intense-bg { + background-color: #007427; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-yellow-intense-bg { + background-color: #b27d12; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-blue-intense-bg { + background-color: #0065ca; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-magenta-intense-bg { + background-color: #a03196; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-cyan-intense-bg { + background-color: #258f8f; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-white-intense-bg { + background-color: #a1a6b2; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-default-inverse-fg { + color: var(--jp-ui-inverse-font-color0); +} + +.jp-RenderedText pre .ansi-default-inverse-bg { + background-color: var(--jp-inverse-layout-color0); + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-bold { + font-weight: bold; +} + +.jp-RenderedText pre .ansi-underline { + text-decoration: underline; +} + +.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] { + background: var(--jp-rendermime-error-background); + padding-top: var(--jp-code-padding); +} + +/* ----------------------------------------------------------------------------- +| RenderedLatex +|---------------------------------------------------------------------------- */ + +.jp-RenderedLatex { + color: var(--jp-content-font-color1); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); +} + +/* Left-justify outputs. */ +.jp-OutputArea-output.jp-RenderedLatex { + padding: var(--jp-code-padding); + text-align: left; +} + +/* ----------------------------------------------------------------------------- +| RenderedHTML +|---------------------------------------------------------------------------- */ + +.jp-RenderedHTMLCommon { + color: var(--jp-content-font-color1); + font-family: var(--jp-content-font-family); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); + + /* Give a bit more R padding on Markdown text to keep line lengths reasonable */ + padding-right: 20px; +} + +.jp-RenderedHTMLCommon em { + font-style: italic; +} + +.jp-RenderedHTMLCommon strong { + font-weight: bold; +} + +.jp-RenderedHTMLCommon u { + text-decoration: underline; +} + +.jp-RenderedHTMLCommon a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* Headings */ + +.jp-RenderedHTMLCommon h1, +.jp-RenderedHTMLCommon h2, +.jp-RenderedHTMLCommon h3, +.jp-RenderedHTMLCommon h4, +.jp-RenderedHTMLCommon h5, +.jp-RenderedHTMLCommon h6 { + line-height: var(--jp-content-heading-line-height); + font-weight: var(--jp-content-heading-font-weight); + font-style: normal; + margin: + var(--jp-content-heading-margin-top) 0 + var(--jp-content-heading-margin-bottom) 0; +} + +.jp-RenderedHTMLCommon h1:first-child, +.jp-RenderedHTMLCommon h2:first-child, +.jp-RenderedHTMLCommon h3:first-child, +.jp-RenderedHTMLCommon h4:first-child, +.jp-RenderedHTMLCommon h5:first-child, +.jp-RenderedHTMLCommon h6:first-child { + margin-top: calc(0.5 * var(--jp-content-heading-margin-top)); +} + +.jp-RenderedHTMLCommon h1:last-child, +.jp-RenderedHTMLCommon h2:last-child, +.jp-RenderedHTMLCommon h3:last-child, +.jp-RenderedHTMLCommon h4:last-child, +.jp-RenderedHTMLCommon h5:last-child, +.jp-RenderedHTMLCommon h6:last-child { + margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom)); +} + +.jp-RenderedHTMLCommon h1 { + font-size: var(--jp-content-font-size5); +} + +.jp-RenderedHTMLCommon h2 { + font-size: var(--jp-content-font-size4); +} + +.jp-RenderedHTMLCommon h3 { + font-size: var(--jp-content-font-size3); +} + +.jp-RenderedHTMLCommon h4 { + font-size: var(--jp-content-font-size2); +} + +.jp-RenderedHTMLCommon h5 { + font-size: var(--jp-content-font-size1); +} + +.jp-RenderedHTMLCommon h6 { + font-size: var(--jp-content-font-size0); +} + +/* Lists */ + +.jp-RenderedHTMLCommon ul:not(.list-inline), +.jp-RenderedHTMLCommon ol:not(.list-inline) { + padding-left: 2em; +} + +.jp-RenderedHTMLCommon ul { + list-style: disc; +} + +.jp-RenderedHTMLCommon ul ul { + list-style: square; +} + +.jp-RenderedHTMLCommon ul ul ul { + list-style: circle; +} + +.jp-RenderedHTMLCommon ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol ol { + list-style: upper-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol { + list-style: lower-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol ol { + list-style: lower-roman; +} + +.jp-RenderedHTMLCommon ol ol ol ol ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol, +.jp-RenderedHTMLCommon ul { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon ul ul, +.jp-RenderedHTMLCommon ul ol, +.jp-RenderedHTMLCommon ol ul, +.jp-RenderedHTMLCommon ol ol { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon hr { + color: var(--jp-border-color2); + background-color: var(--jp-border-color1); + margin-top: 1em; + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon > pre { + margin: 1.5em 2em; +} + +.jp-RenderedHTMLCommon pre, +.jp-RenderedHTMLCommon code { + border: 0; + background-color: var(--jp-layout-color0); + color: var(--jp-content-font-color1); + font-family: var(--jp-code-font-family); + font-size: inherit; + line-height: var(--jp-code-line-height); + padding: 0; + white-space: pre-wrap; +} + +.jp-RenderedHTMLCommon :not(pre) > code { + background-color: var(--jp-layout-color2); + padding: 1px 5px; +} + +/* Tables */ + +.jp-RenderedHTMLCommon table { + border-collapse: collapse; + border-spacing: 0; + border: none; + color: var(--jp-ui-font-color1); + font-size: var(--jp-ui-font-size1); + table-layout: fixed; + margin-left: auto; + margin-bottom: 1em; + margin-right: auto; +} + +.jp-RenderedHTMLCommon thead { + border-bottom: var(--jp-border-width) solid var(--jp-border-color1); + vertical-align: bottom; +} + +.jp-RenderedHTMLCommon td, +.jp-RenderedHTMLCommon th, +.jp-RenderedHTMLCommon tr { + vertical-align: middle; + padding: 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} + +.jp-RenderedMarkdown.jp-RenderedHTMLCommon td, +.jp-RenderedMarkdown.jp-RenderedHTMLCommon th { + max-width: none; +} + +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr { + text-align: right; +} + +.jp-RenderedHTMLCommon th { + font-weight: bold; +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(odd) { + background: var(--jp-layout-color0) !important; +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(even) { + background: var(--jp-rendermime-table-row-background) !important; +} + +.jp-RenderedHTMLCommon tbody tr:hover { + background: var(--jp-rendermime-table-row-hover-background) !important; +} + +.jp-RenderedHTMLCommon p { + text-align: left; + margin: 0; + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon img { + -moz-force-broken-image-icon: 1; +} + +/* Restrict to direct children as other images could be nested in other content. */ +.jp-RenderedHTMLCommon > img { + display: block; + margin-left: 0; + margin-right: 0; + margin-bottom: 1em; +} + +/* Change color behind transparent images if they need it... */ +[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background { + background-color: var(--jp-inverse-layout-color1); +} + +[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background { + background-color: var(--jp-inverse-layout-color1); +} + +.jp-RenderedHTMLCommon img, +.jp-RenderedImage img, +.jp-RenderedHTMLCommon svg, +.jp-RenderedSVG svg { + max-width: 100%; + height: auto; +} + +.jp-RenderedHTMLCommon img.jp-mod-unconfined, +.jp-RenderedImage img.jp-mod-unconfined, +.jp-RenderedHTMLCommon svg.jp-mod-unconfined, +.jp-RenderedSVG svg.jp-mod-unconfined { + max-width: none; +} + +.jp-RenderedHTMLCommon .alert { + padding: var(--jp-notebook-padding); + border: var(--jp-border-width) solid transparent; + border-radius: var(--jp-border-radius); + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon .alert-info { + color: var(--jp-info-color0); + background-color: var(--jp-info-color3); + border-color: var(--jp-info-color2); +} + +.jp-RenderedHTMLCommon .alert-info hr { + border-color: var(--jp-info-color3); +} + +.jp-RenderedHTMLCommon .alert-info > p:last-child, +.jp-RenderedHTMLCommon .alert-info > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-warning { + color: var(--jp-warn-color0); + background-color: var(--jp-warn-color3); + border-color: var(--jp-warn-color2); +} + +.jp-RenderedHTMLCommon .alert-warning hr { + border-color: var(--jp-warn-color3); +} + +.jp-RenderedHTMLCommon .alert-warning > p:last-child, +.jp-RenderedHTMLCommon .alert-warning > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-success { + color: var(--jp-success-color0); + background-color: var(--jp-success-color3); + border-color: var(--jp-success-color2); +} + +.jp-RenderedHTMLCommon .alert-success hr { + border-color: var(--jp-success-color3); +} + +.jp-RenderedHTMLCommon .alert-success > p:last-child, +.jp-RenderedHTMLCommon .alert-success > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-danger { + color: var(--jp-error-color0); + background-color: var(--jp-error-color3); + border-color: var(--jp-error-color2); +} + +.jp-RenderedHTMLCommon .alert-danger hr { + border-color: var(--jp-error-color3); +} + +.jp-RenderedHTMLCommon .alert-danger > p:last-child, +.jp-RenderedHTMLCommon .alert-danger > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon blockquote { + margin: 1em 2em; + padding: 0 1em; + border-left: 5px solid var(--jp-border-color2); +} + +a.jp-InternalAnchorLink { + visibility: hidden; + margin-left: 8px; + color: var(--md-blue-800); +} + +h1:hover .jp-InternalAnchorLink, +h2:hover .jp-InternalAnchorLink, +h3:hover .jp-InternalAnchorLink, +h4:hover .jp-InternalAnchorLink, +h5:hover .jp-InternalAnchorLink, +h6:hover .jp-InternalAnchorLink { + visibility: visible; +} + +.jp-RenderedHTMLCommon kbd { + background-color: var(--jp-rendermime-table-row-background); + border: 1px solid var(--jp-border-color0); + border-bottom-color: var(--jp-border-color2); + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + display: inline-block; + font-size: var(--jp-ui-font-size0); + line-height: 1em; + padding: 0.2em 0.5em; +} + +/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0. + * At the bottom of cells this is a bit too much as there is also spacing + * between cells. Going all the way to 0 gets too tight between markdown and + * code cells. + */ +.jp-RenderedHTMLCommon > *:last-child { + margin-bottom: 0.5em; +} + +.jp-mimeType-highlight { + background-color: + var( + --jp-search-unselected-match-background-color + ) !important; + color: var(--jp-search-unselected-match-color) !important; +} + +.jp-mod-selected.jp-mimeType-highlight { + background-color: var(--jp-search-selected-match-background-color) !important; + color: var(--jp-search-selected-match-color) !important; +} diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css index f4c7de8..de2ebd3 100644 --- a/.vitepress/theme/style.css +++ b/.vitepress/theme/style.css @@ -151,3 +151,28 @@ mjx-container { --vp-home-hero-image-background-image: transparent; --vp-home-hero-image-filter: ''; } + +.jp-MarkdownOutput{ + color: #3c3c43 !important; + font-weight: 400 !important; + font-size: 16px !important; +} + +.dark .jp-MarkdownOutput{ + color: #dfdfd7 !important; + font-family: 'Noto Sans SC', 'Noto Color Emoji', sans-serif !important; +} + +.jp-InputArea-editor{ + border-radius: 8px !important; +} + +.cm-content{ + font-family: 'Noto Sans Mono', sans-serif, monospace, consolas !important; + background-color: #f6f6f7 !important; +} + +.dark .cm-content{ + font-family: 'Noto Sans Mono', sans-serif, monospace, consolas !important; + /* background-color: #161618 !important; */ +} \ No newline at end of file diff --git a/components/RenderJupyterNotebook.vue b/components/RenderJupyterNotebook.vue new file mode 100644 index 0000000..88b153c --- /dev/null +++ b/components/RenderJupyterNotebook.vue @@ -0,0 +1,19 @@ + + + diff --git a/notebook.md b/notebook.md new file mode 100644 index 0000000..da5edfc --- /dev/null +++ b/notebook.md @@ -0,0 +1,18 @@ +
+ +
+ + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7a257cc..a6a4220 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,13 @@ "requires": true, "packages": { "": { + "dependencies": { + "@codemirror/lang-python": "^6.1.2", + "@codemirror/lang-sql": "^6.4.1", + "@jupyterlab/mathjax2": "^3.6.3", + "@jupyterlab/theme-light-extension": "^3.6.3", + "markdown-it": "^13.0.1" + }, "devDependencies": { "markdown-it-mathjax3": "^4.3.2", "vitepress": "^1.0.0-alpha.73" @@ -178,6 +185,154 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@blueprintjs/colors": { + "version": "4.1.22", + "resolved": "https://registry.npmmirror.com/@blueprintjs/colors/-/colors-4.1.22.tgz", + "integrity": "sha512-qcC7nWW9TTSS7aDxE5gbo9vrxo+IOpC6/Kzpi0rdOBYFDd02PppCdnCCjGYw1/IopSsZ9EWqDLmD7zuy0H+WEA==" + }, + "node_modules/@blueprintjs/core": { + "version": "3.54.0", + "resolved": "https://registry.npmmirror.com/@blueprintjs/core/-/core-3.54.0.tgz", + "integrity": "sha512-u2c1s6MNn0ocxhnC6CuiG5g3KV6b4cKUvSobznepA9SC3/AL1s3XOvT7DLWoHRv2B/vBOHFYEDzLw2/vlcGGZg==", + "dependencies": { + "@blueprintjs/colors": "^4.0.0-alpha.3", + "@blueprintjs/icons": "^3.33.0", + "@juggle/resize-observer": "^3.3.1", + "@types/dom4": "^2.0.1", + "classnames": "^2.2", + "dom4": "^2.1.5", + "normalize.css": "^8.0.1", + "popper.js": "^1.16.1", + "react-lifecycles-compat": "^3.0.4", + "react-popper": "^1.3.7", + "react-transition-group": "^2.9.0", + "tslib": "~2.3.1" + }, + "bin": { + "upgrade-blueprint-2.0.0-rename": "scripts/upgrade-blueprint-2.0.0-rename.sh", + "upgrade-blueprint-3.0.0-rename": "scripts/upgrade-blueprint-3.0.0-rename.sh" + }, + "peerDependencies": { + "react": "^15.3.0 || 16 || 17", + "react-dom": "^15.3.0 || 16 || 17" + } + }, + "node_modules/@blueprintjs/core/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/@blueprintjs/icons": { + "version": "3.33.0", + "resolved": "https://registry.npmmirror.com/@blueprintjs/icons/-/icons-3.33.0.tgz", + "integrity": "sha512-Q6qoSDIm0kRYQZISm59UUcDCpV3oeHulkLuh3bSlw0HhcSjvEQh2PSYbtaifM60Q4aK4PCd6bwJHg7lvF1x5fQ==", + "dependencies": { + "classnames": "^2.2", + "tslib": "~2.3.1" + } + }, + "node_modules/@blueprintjs/icons/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/@blueprintjs/select": { + "version": "3.19.1", + "resolved": "https://registry.npmmirror.com/@blueprintjs/select/-/select-3.19.1.tgz", + "integrity": "sha512-8UJIZMaWXRMQHr14wbmzJc/CklcSKxOU5JUux0xXKQz/hDW/g1a650tlwJmnxufvRdShbGinlVfHupCs0EL6sw==", + "dependencies": { + "@blueprintjs/core": "^3.54.0", + "classnames": "^2.2", + "tslib": "~2.3.1" + }, + "peerDependencies": { + "react": "^15.3.0 || 16 || 17", + "react-dom": "^15.3.0 || 16 || 17" + } + }, + "node_modules/@blueprintjs/select/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.5.1.tgz", + "integrity": "sha512-/Sv9yJmqyILbZ26U4LBHnAtbikuVxWUp+rQ8BXuRGtxZfbfKOY/WPbsUtvSP2h0ZUZMlkxV/hqbKRFzowlA6xw==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.6.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-python": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-python/-/lang-python-6.1.2.tgz", + "integrity": "sha512-nbQfifLBZstpt6Oo4XxA2LOzlSp4b/7Bc5cmodG1R+Cs5PLLCTUvsMNWDnziiCfTOG/SW1rVzXq/GbIr6WXlcw==", + "dependencies": { + "@codemirror/autocomplete": "^6.3.2", + "@codemirror/language": "^6.0.0", + "@lezer/python": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-sql": { + "version": "6.4.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.4.1.tgz", + "integrity": "sha512-PFB56L+A0WGY35uRya+Trt5g19V9k2V9X3c55xoFW4RgiATr/yLqWsbbnEsdxuMn5tLpuikp7Kmj9smRsqBXAg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.6.0", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.6.0.tgz", + "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/state": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.2.0.tgz", + "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==" + }, + "node_modules/@codemirror/view": { + "version": "6.9.6", + "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.9.6.tgz", + "integrity": "sha512-g68PxS3RkHpxfYS6DTWCy1jeA5/oHzmdWjMVPkOzqQyxpElHEcPncUd4EeMVSa4okt0sS3hNXVaRnJqO/7MeJw==", + "dependencies": { + "@codemirror/state": "^6.1.4", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, "node_modules/@docsearch/css": { "version": "3.3.3", "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-3.3.3.tgz", @@ -574,6 +729,600 @@ "node": ">=12" } }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "dependencies": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": ">=0.14.0" + } + }, + "node_modules/@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + }, + "node_modules/@jupyter/ydoc": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/@jupyter/ydoc/-/ydoc-0.2.4.tgz", + "integrity": "sha512-QACcB4bF+Ew4UJmJP+3OyiyQm3vwRYF6iZCQK9q0nE2U5uAosQkfLyT6Bx71jPUXe4G9lEF6m9fjpZvSUX7Lyw==", + "dependencies": { + "@jupyterlab/nbformat": "^3.0.0 || ^4.0.0-alpha.15", + "@lumino/coreutils": "^1.11.0 || ^2.0.0-alpha.6", + "@lumino/disposable": "^1.10.0 || ^2.0.0-alpha.6", + "@lumino/signaling": "^1.10.0 || ^2.0.0-alpha.6", + "y-protocols": "^1.0.5", + "yjs": "^13.5.40" + } + }, + "node_modules/@jupyterlab/application": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/application/-/application-3.6.3.tgz", + "integrity": "sha512-G0tR6sUSCuHB8vGQnaB5lfihKNJVHtqYNoMlsZYF9rYpZEhW1TRD4uE5rg4RfDDR+GghjckQlP3rRNB2Vn4tMA==", + "dependencies": { + "@fortawesome/fontawesome-free": "^5.12.0", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/docregistry": "^3.6.3", + "@jupyterlab/rendermime": "^3.6.3", + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/application": "^1.31.4", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/properties": "^1.8.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2" + } + }, + "node_modules/@jupyterlab/apputils": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/apputils/-/apputils-3.6.3.tgz", + "integrity": "sha512-um2Aaa5fOUwHFpAqKTDA+MFpnAldzOILIi5QsKOWRxiJA2W8x+hlg5HvHbq+eSWuWEU3ah15M7htzBcL3g9d4Q==", + "dependencies": { + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/settingregistry": "^3.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/domutils": "^1.8.0", + "@lumino/messaging": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/properties": "^1.8.0", + "@lumino/signaling": "^1.10.0", + "@lumino/virtualdom": "^1.14.0", + "@lumino/widgets": "^1.37.2", + "@types/react": "^17.0.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "sanitize-html": "~2.7.3", + "url": "^0.11.0" + } + }, + "node_modules/@jupyterlab/codeeditor": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/codeeditor/-/codeeditor-3.6.3.tgz", + "integrity": "sha512-SnVo5KDhyRkK/o1SDRX9nehLEAMaOBFf+GUx2jeXBTfr6wTKcwDBnJAUwlOfncwRlMV79aUIqTIcS861FSXDyA==", + "dependencies": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/dragdrop": "^1.13.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2" + } + }, + "node_modules/@jupyterlab/codemirror": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/codemirror/-/codemirror-3.6.3.tgz", + "integrity": "sha512-VU5bInzSqsyPGZkEd/w6HtJ9PSw7U5twoyrQSpSM+E2SEYWskaBZOHJf8XNunVoRRKwSvDLyxSs07Ot6zUlA0w==", + "dependencies": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codeeditor": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/statusbar": "^3.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2", + "codemirror": "~5.61.0", + "react": "^17.0.1", + "y-codemirror": "^3.0.1" + } + }, + "node_modules/@jupyterlab/coreutils": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/coreutils/-/coreutils-5.6.3.tgz", + "integrity": "sha512-jRVTpwGzP9wBNYuaZTip89FS1qbeSYrEO2qdNVdW2rs0mQHcIlu3Fkv5muMFmKYGi0XHhG3UhZiWQ7qiPw2svQ==", + "dependencies": { + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "minimist": "~1.2.0", + "moment": "^2.24.0", + "path-browserify": "^1.0.0", + "url-parse": "~1.5.1" + } + }, + "node_modules/@jupyterlab/docprovider": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/docprovider/-/docprovider-3.6.3.tgz", + "integrity": "sha512-M5IoyykDpWnUFNePHz3+fi/RNvV92UNbQGfAvsaCMSn+fl48rD4rHB9EZGceOisb3m1U+E4SntKYI3pl49yUEg==", + "dependencies": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "y-protocols": "^1.0.5", + "y-websocket": "^1.4.6" + } + }, + "node_modules/@jupyterlab/docregistry": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/docregistry/-/docregistry-3.6.3.tgz", + "integrity": "sha512-unDMrtCSGKPqX9uvYCkI7zGTvskuC9odAPIHPsYSVMcHL/o5M7lQkHmRZCoSIezfe5OvPGXbYT2boQrBKXqCFw==", + "dependencies": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codeeditor": "^3.6.3", + "@jupyterlab/codemirror": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/docprovider": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/rendermime": "^3.6.3", + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2" + } + }, + "node_modules/@jupyterlab/mathjax2": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/mathjax2/-/mathjax2-3.6.3.tgz", + "integrity": "sha512-Aju49iHqwvsArc3qvQGDAOpQkpKvHfCXueQX7qJDRBst764jw+NjvWK11ODkRgUwsv0Rxi4YzOT0Z7N6Qnc5Rw==", + "dependencies": { + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@lumino/coreutils": "^1.11.0" + } + }, + "node_modules/@jupyterlab/nbformat": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/nbformat/-/nbformat-3.6.3.tgz", + "integrity": "sha512-0qJLa4dtOmu9EmHFeM7gaZi4qheovIPc9ZrgGGRuG0obajs4YYlvh4MQvCSgpVhme4AuBfGlcfzhlx+Gbzr5Xw==", + "dependencies": { + "@lumino/coreutils": "^1.11.0" + } + }, + "node_modules/@jupyterlab/observables": { + "version": "4.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/observables/-/observables-4.6.3.tgz", + "integrity": "sha512-CvQoL+9WHXOy/CXp/PQLi4c5iZVJ4psz11+GrycDDinX1AdVQ8a43OLTC0gxWl3Tk2C8ZvAi1sgn4FS68E1ACQ==", + "dependencies": { + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0" + } + }, + "node_modules/@jupyterlab/rendermime": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime/-/rendermime-3.6.3.tgz", + "integrity": "sha512-w3e38OddJin9fbfe7EWsKiiup/0ayvHPrAsacde8PqGLvi/sLeAXT98PqihsKt8EAlOgXSkSO0Ivjbd0JzgGgA==", + "dependencies": { + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codemirror": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2", + "lodash.escape": "^4.0.1", + "marked": "^4.0.17" + } + }, + "node_modules/@jupyterlab/rendermime-interfaces": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.6.3.tgz", + "integrity": "sha512-VHZVnqB0K1nmoQMOhFGHwvSYMQmxqcOC3wWDRFeUOv8S+tejTYfbrKXPOZJvhdGB52Jn8XNIesXOuNpLhl4HmQ==", + "dependencies": { + "@jupyterlab/translation": "^3.6.3", + "@lumino/coreutils": "^1.11.0", + "@lumino/widgets": "^1.37.2" + } + }, + "node_modules/@jupyterlab/services": { + "version": "6.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/services/-/services-6.6.3.tgz", + "integrity": "sha512-BxEOMRl9X18T5wY7iV6ZJhARnibFghpD3OruqeSbnGdbRv6XJi8prsRbCQQ6Mf9agvf81B20KmDvYKikPHC0xQ==", + "dependencies": { + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/settingregistry": "^3.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/signaling": "^1.10.0", + "node-fetch": "^2.6.0", + "ws": "^7.4.6" + } + }, + "node_modules/@jupyterlab/settingregistry": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/settingregistry/-/settingregistry-3.6.3.tgz", + "integrity": "sha512-pnzIge0ZC8V63R97HiNroJ0eaPM0DN6x65SStyLuv/K8Qez4XqpOdc0Wfell5ri5mxMvm1qKekuFeTikqSXQKQ==", + "dependencies": { + "@jupyterlab/statedb": "^3.6.3", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "ajv": "^6.12.3", + "json5": "^2.1.1" + } + }, + "node_modules/@jupyterlab/statedb": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statedb/-/statedb-3.6.3.tgz", + "integrity": "sha512-A36L+0NN8f0WOES2GdtZjp9uFuC7IBjhKiO/RlKRX5AFjNxoJ9oO3PZtoxJQYPnGBljMqVdRa+m9aYEfvKhYyQ==", + "dependencies": { + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/properties": "^1.8.0", + "@lumino/signaling": "^1.10.0" + } + }, + "node_modules/@jupyterlab/statusbar": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statusbar/-/statusbar-3.6.3.tgz", + "integrity": "sha512-m59NLR0Zghm53PU6hDzRF4XVORnJx/YRx0svcjj/TGLk8LSffpQbUDBy24dl3tOuChk4D5cCdgeDH1X30TzCaA==", + "dependencies": { + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codeeditor": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2", + "csstype": "~3.0.3", + "react": "^17.0.1", + "typestyle": "^2.0.4" + } + }, + "node_modules/@jupyterlab/statusbar/node_modules/csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "node_modules/@jupyterlab/theme-light-extension": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/theme-light-extension/-/theme-light-extension-3.6.3.tgz", + "integrity": "sha512-f0pFzwO1UPev6HPin1vl0m4s/ur2nm0z9BCFCP7LPTNv1njN6pYkhpUp1oluCZ09NbkRk2e0x7ed9z/2fgz3vA==", + "dependencies": { + "@jupyterlab/application": "^3.6.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/translation": "^3.6.3" + } + }, + "node_modules/@jupyterlab/translation": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/translation/-/translation-3.6.3.tgz", + "integrity": "sha512-m+wwBv/hiN5Y6Sb7Ij150ZhPXZdhN5wI8CT3afnzARwKr2Aww5AIURO3upmMwnKaPVQTrWqsS3+7bZS/21JuJA==", + "dependencies": { + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@lumino/coreutils": "^1.11.0" + } + }, + "node_modules/@jupyterlab/ui-components": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/ui-components/-/ui-components-3.6.3.tgz", + "integrity": "sha512-XzseUo2IXclPlYcGxCIz8evjWF+dCBMmbJlvoE5OF29BYBvI5N/DUaTem8bHN5kmQwHIXX6BImHu7rbC9Xjl6w==", + "dependencies": { + "@blueprintjs/core": "^3.36.0", + "@blueprintjs/select": "^3.15.0", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/virtualdom": "^1.14.0", + "@lumino/widgets": "^1.37.2", + "@rjsf/core": "^3.1.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "typestyle": "^2.0.4" + }, + "peerDependencies": { + "react": "^17.0.1" + } + }, + "node_modules/@lezer/common": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.0.2.tgz", + "integrity": "sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==" + }, + "node_modules/@lezer/highlight": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.1.4.tgz", + "integrity": "sha512-IECkFmw2l7sFcYXrV8iT9GeY4W0fU4CxX0WMwhmhMIVjoDdD1Hr6q3G2NqVtLg/yVe5n7i4menG3tJ2r4eCrPQ==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.3.3.tgz", + "integrity": "sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/python": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@lezer/python/-/python-1.1.4.tgz", + "integrity": "sha512-x82XgYxqqX0Yiw7uIemQJ3z2QyQme5BYpectkPfNg99OQrakqfwqVolqEVIrsj4QO9rVDLFZZ49J0Vbne7UbAA==", + "dependencies": { + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lumino/algorithm": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@lumino/algorithm/-/algorithm-1.9.2.tgz", + "integrity": "sha512-Z06lp/yuhz8CtIir3PNTGnuk7909eXt4ukJsCzChsGuot2l5Fbs96RJ/FOHgwCedaX74CtxPjXHXoszFbUA+4A==" + }, + "node_modules/@lumino/application": { + "version": "1.31.4", + "resolved": "https://registry.npmmirror.com/@lumino/application/-/application-1.31.4.tgz", + "integrity": "sha512-dOSsDJ1tXOxC3fnSHvtDQK5RcICLEVPtO19HeCGwurb5W2ZZ55SZT2b5jZu6V/v8lGdtkNbr1RJltRpJRSRb/A==", + "dependencies": { + "@lumino/commands": "^1.21.1", + "@lumino/coreutils": "^1.12.1", + "@lumino/widgets": "^1.37.2" + } + }, + "node_modules/@lumino/collections": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@lumino/collections/-/collections-1.9.3.tgz", + "integrity": "sha512-2i2Wf1xnfTgEgdyKEpqM16bcYRIhUOGCDzaVCEZACVG9R1CgYwOe3zfn71slBQOVSjjRgwYrgLXu4MBpt6YK+g==", + "dependencies": { + "@lumino/algorithm": "^1.9.2" + } + }, + "node_modules/@lumino/commands": { + "version": "1.21.1", + "resolved": "https://registry.npmmirror.com/@lumino/commands/-/commands-1.21.1.tgz", + "integrity": "sha512-d1zJmwz5bHU0BM/Rl3tRdZ7/WgXnFB0bM7x7Bf0XDlmX++jnU9k0j3mh6/5JqCGLmIApKCRwVqSaV7jPmSJlcQ==", + "dependencies": { + "@lumino/algorithm": "^1.9.2", + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4", + "@lumino/domutils": "^1.8.2", + "@lumino/keyboard": "^1.8.2", + "@lumino/signaling": "^1.11.1", + "@lumino/virtualdom": "^1.14.3" + } + }, + "node_modules/@lumino/coreutils": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@lumino/coreutils/-/coreutils-1.12.1.tgz", + "integrity": "sha512-JLu3nTHzJk9N8ohZ85u75YxemMrmDzJdNgZztfP7F7T7mxND3YVNCkJG35a6aJ7edu1sIgCjBxOvV+hv27iYvQ==", + "peerDependencies": { + "crypto": "1.0.1" + } + }, + "node_modules/@lumino/disposable": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@lumino/disposable/-/disposable-1.10.4.tgz", + "integrity": "sha512-4ZxyYcyzUS+ZeB2KAH9oAH3w0DUUceiVr+FIZHZ2TAYGWZI/85WlqJtfm0xjwEpCwLLW1TDqJrISuZu3iMmVMA==", + "dependencies": { + "@lumino/algorithm": "^1.9.2", + "@lumino/signaling": "^1.11.1" + } + }, + "node_modules/@lumino/domutils": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@lumino/domutils/-/domutils-1.8.2.tgz", + "integrity": "sha512-QIpMfkPJrs4GrWBuJf2Sn1fpyVPmvqUUAeD8xAQo8+4V5JAT0vUDLxZ9HijefMgNCi3+Bs8Z3lQwRCrz+cFP1A==" + }, + "node_modules/@lumino/dragdrop": { + "version": "1.14.5", + "resolved": "https://registry.npmmirror.com/@lumino/dragdrop/-/dragdrop-1.14.5.tgz", + "integrity": "sha512-LC5xB82+xGF8hFyl716TMpV32OIMIMl+s3RU1PaqDkD6B7PkgiVk6NkJ4X9/GcEvl2igkvlGQt/3L7qxDAJNxw==", + "dependencies": { + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4" + } + }, + "node_modules/@lumino/keyboard": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@lumino/keyboard/-/keyboard-1.8.2.tgz", + "integrity": "sha512-Dy+XqQ1wXbcnuYtjys5A0pAqf4SpAFl9NY6owyIhXAo0Va7w3LYp3jgiP1xAaBAwMuUppiUAfrbjrysZuZ625g==" + }, + "node_modules/@lumino/messaging": { + "version": "1.10.3", + "resolved": "https://registry.npmmirror.com/@lumino/messaging/-/messaging-1.10.3.tgz", + "integrity": "sha512-F/KOwMCdqvdEG8CYAJcBSadzp6aI7a47Fr60zAKGqZATSRRRV41q53iXU7HjFPqQqQIvdn9Z7J32rBEAyQAzww==", + "dependencies": { + "@lumino/algorithm": "^1.9.2", + "@lumino/collections": "^1.9.3" + } + }, + "node_modules/@lumino/polling": { + "version": "1.11.4", + "resolved": "https://registry.npmmirror.com/@lumino/polling/-/polling-1.11.4.tgz", + "integrity": "sha512-yC7JLssj3mqVK6TsYj7dg4AG0rcsC42YtpoDLtz9yzO84Q5flQUfmjAPQB6oPA6wZOlISs3iasF+uO2w1ls5jg==", + "dependencies": { + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4", + "@lumino/signaling": "^1.11.1" + } + }, + "node_modules/@lumino/properties": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@lumino/properties/-/properties-1.8.2.tgz", + "integrity": "sha512-EkjI9Cw8R0U+xC9HxdFSu7X1tz1H1vKu20cGvJ2gU+CXlMB1DvoYJCYxCThByHZ+kURTAap4SE5x8HvKwNPbig==" + }, + "node_modules/@lumino/signaling": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@lumino/signaling/-/signaling-1.11.1.tgz", + "integrity": "sha512-YCUmgw08VoyMN5KxzqPO3KMx+cwdPv28tAN06C0K7Q/dQf+oufb1XocuhZb5selTrTmmuXeizaYxgLIQGdS1fA==", + "dependencies": { + "@lumino/algorithm": "^1.9.2", + "@lumino/properties": "^1.8.2" + } + }, + "node_modules/@lumino/virtualdom": { + "version": "1.14.3", + "resolved": "https://registry.npmmirror.com/@lumino/virtualdom/-/virtualdom-1.14.3.tgz", + "integrity": "sha512-5joUC1yuxeXbpfbSBm/OR8Mu9HoTo6PDX0RKqzlJ9o97iml7zayFN/ynzcxScKGQAo9iaXOY8uVIvGUT8FnsGw==", + "dependencies": { + "@lumino/algorithm": "^1.9.2" + } + }, + "node_modules/@lumino/widgets": { + "version": "1.37.2", + "resolved": "https://registry.npmmirror.com/@lumino/widgets/-/widgets-1.37.2.tgz", + "integrity": "sha512-NHKu1NBDo6ETBDoNrqSkornfUCwc8EFFzw6+LWBfYVxn2PIwciq2SdiJGEyNqL+0h/A9eVKb5ui5z4cwpRekmQ==", + "dependencies": { + "@lumino/algorithm": "^1.9.2", + "@lumino/commands": "^1.21.1", + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4", + "@lumino/domutils": "^1.8.2", + "@lumino/dragdrop": "^1.14.5", + "@lumino/keyboard": "^1.8.2", + "@lumino/messaging": "^1.10.3", + "@lumino/properties": "^1.8.2", + "@lumino/signaling": "^1.11.1", + "@lumino/virtualdom": "^1.14.3" + } + }, + "node_modules/@rjsf/core": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/@rjsf/core/-/core-3.2.1.tgz", + "integrity": "sha512-dk8ihvxFbcuIwU7G+HiJbFgwyIvaumPt5g5zfnuC26mwTUPlaDGFXKK2yITp8tJ3+hcwS5zEXtAN9wUkfuM4jA==", + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.7.0", + "core-js-pure": "^3.6.5", + "json-schema-merge-allof": "^0.6.0", + "jsonpointer": "^5.0.0", + "lodash": "^4.17.15", + "nanoid": "^3.1.23", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@types/dom4": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@types/dom4/-/dom4-2.0.2.tgz", + "integrity": "sha512-Rt4IC1T7xkCWa0OG1oSsPa0iqnxlDeQqKXZAHrQGLb7wFGncWm85MaxKUjAGejOrUynOgWlFi4c6S6IyJwoK4g==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/react": { + "version": "17.0.58", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-17.0.58.tgz", + "integrity": "sha512-c1GzVY97P0fGxwGxhYq989j4XwlcHQoto6wQISOC2v6wm3h0PORRWJFHlkRjfGsiG3y1609WdQ+J+tKxvrEd6A==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react/node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, "node_modules/@types/web-bluetooth": { "version": "0.0.16", "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", @@ -784,6 +1533,33 @@ } } }, + "node_modules/abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "node_modules/algoliasearch": { "version": "4.17.0", "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.17.0.tgz", @@ -821,6 +1597,23 @@ "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", "dev": true }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "optional": true + }, "node_modules/body-scroll-lock": { "version": "4.0.0-beta.0", "resolved": "https://registry.npmmirror.com/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz", @@ -833,6 +1626,25 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "node_modules/cheerio": { "version": "1.0.0-rc.10", "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.10.tgz", @@ -864,6 +1676,16 @@ "domutils": "^2.8.0" } }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/codemirror": { + "version": "5.61.1", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-5.61.1.tgz", + "integrity": "sha512-+D1NZjAucuzE93vJGbAaXzvoBHwp9nJZWWWF9utjv25+5AZUiah6CIlfb4ikG4MoDsFsCG8niiJH5++OO2LgIQ==" + }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmmirror.com/commander/-/commander-6.2.1.tgz", @@ -873,6 +1695,40 @@ "node": ">= 6" } }, + "node_modules/compute-gcd": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/compute-gcd/-/compute-gcd-1.2.1.tgz", + "integrity": "sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==", + "dependencies": { + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "node_modules/compute-lcm": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/compute-lcm/-/compute-lcm-1.1.2.tgz", + "integrity": "sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==", + "dependencies": { + "compute-gcd": "^1.2.1", + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "node_modules/core-js-pure": { + "version": "3.30.1", + "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.30.1.tgz", + "integrity": "sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg==", + "hasInstallScript": true + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", + "peer": true + }, "node_modules/css-select": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", @@ -901,28 +1757,84 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", "dev": true }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deferred-leveldown": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "optional": true, + "dependencies": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, "node_modules/dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, + "node_modules/dom4": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/dom4/-/dom4-2.1.6.tgz", + "integrity": "sha512-JkCVGnN4ofKGbjf5Uvc8mmxaATIErKQKSgACdBXpsQ3fY6DlIpAyWfiBSrGkttATssbDCp3psiAKWXk5gmjycA==" + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, "dependencies": { "domelementtype": "^2.2.0" }, @@ -934,18 +1846,43 @@ "version": "2.8.0", "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, + "node_modules/encoding-down": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/encoding-down/-/encoding-down-6.3.0.tgz", + "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", + "optional": true, + "dependencies": { + "abstract-leveldown": "^6.2.1", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } }, "node_modules/esbuild": { "version": "0.17.16", @@ -993,6 +1930,14 @@ "node": ">=10" } }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + } + }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmmirror.com/esm/-/esm-3.2.25.tgz", @@ -1008,6 +1953,21 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/free-style": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/free-style/-/free-style-3.1.0.tgz", + "integrity": "sha512-vJujYSIyT30iDoaoeigNAxX4yB1RUrh+N2ZMhIElMr3BvCuGXOw7XNJMEEJkDUeamK2Rnb/IKFGKRKlTWIGRWA==" + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", @@ -1022,11 +1982,73 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "node_modules/gud": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -1034,12 +2056,125 @@ "entities": "^2.0.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "optional": true + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "optional": true + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/json-schema-compare": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/json-schema-compare/-/json-schema-compare-0.2.2.tgz", + "integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==", + "dependencies": { + "lodash": "^4.17.4" + } + }, + "node_modules/json-schema-merge-allof": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz", + "integrity": "sha512-LEw4VMQVRceOPLuGRWcxW5orTTiR9ZAtqTAe4rQUjNADTeR81bezBVFa0MqIwp0YmHIM1KkhSjZM7o+IQhaPbQ==", + "dependencies": { + "compute-lcm": "^1.1.0", + "json-schema-compare": "^0.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/juice": { "version": "8.1.0", "resolved": "https://registry.npmmirror.com/juice/-/juice-8.1.0.tgz", @@ -1059,6 +2194,190 @@ "node": ">=10.0.0" } }, + "node_modules/level": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/level/-/level-6.0.1.tgz", + "integrity": "sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw==", + "optional": true, + "dependencies": { + "level-js": "^5.0.0", + "level-packager": "^5.1.0", + "leveldown": "^5.4.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "optional": true, + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "optional": true, + "dependencies": { + "errno": "~0.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-iterator-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", + "optional": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-js": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/level-js/-/level-js-5.0.2.tgz", + "integrity": "sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg==", + "optional": true, + "dependencies": { + "abstract-leveldown": "~6.2.3", + "buffer": "^5.5.0", + "inherits": "^2.0.3", + "ltgt": "^2.1.2" + } + }, + "node_modules/level-packager": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/level-packager/-/level-packager-5.1.1.tgz", + "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", + "optional": true, + "dependencies": { + "encoding-down": "^6.3.0", + "levelup": "^4.3.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "optional": true, + "dependencies": { + "xtend": "^4.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/leveldown": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/leveldown/-/leveldown-5.6.0.tgz", + "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "abstract-leveldown": "~6.2.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "~4.1.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/levelup": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "optional": true, + "dependencies": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lib0": { + "version": "0.2.74", + "resolved": "https://registry.npmmirror.com/lib0/-/lib0-0.2.74.tgz", + "integrity": "sha512-roj9i46/JwG5ik5KNTkxP2IytlnrssAkD/OhlAVtE+GqectrdkfR+pttszVLrOzMDeXNs1MPt6yo66MUolWSiA==", + "dependencies": { + "isomorphic.js": "^0.2.4" + }, + "bin": { + "0gentesthtml": "bin/gentesthtml.js", + "0serve": "bin/0serve.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "optional": true + }, "node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", @@ -1074,6 +2393,21 @@ "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", "dev": true }, + "node_modules/markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, "node_modules/markdown-it-mathjax3": { "version": "4.3.2", "resolved": "https://registry.npmmirror.com/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz", @@ -1084,6 +2418,25 @@ "mathjax-full": "^3.2.0" } }, + "node_modules/markdown-it/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/mathjax-full": { "version": "3.2.2", "resolved": "https://registry.npmmirror.com/mathjax-full/-/mathjax-full-3.2.2.tgz", @@ -1096,6 +2449,11 @@ "speech-rule-engine": "^4.0.6" } }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, "node_modules/mensch": { "version": "0.3.4", "resolved": "https://registry.npmmirror.com/mensch/-/mensch-0.3.4.tgz", @@ -1120,6 +2478,11 @@ "node": ">=4.0.0" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, "node_modules/minisearch": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/minisearch/-/minisearch-6.0.1.tgz", @@ -1132,11 +2495,18 @@ "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==", "dev": true }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, "node_modules/nanoid": { "version": "3.3.6", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1144,11 +2514,16 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", + "optional": true + }, "node_modules/node-fetch": { "version": "2.6.9", "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.9.tgz", "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -1164,6 +2539,22 @@ } } }, + "node_modules/node-gyp-build": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz", + "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", @@ -1173,6 +2564,39 @@ "boolbase": "^1.0.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" + }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", @@ -1188,17 +2612,26 @@ "parse5": "^6.0.1" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1" }, "node_modules/postcss": { "version": "8.4.21", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz", "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, "dependencies": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -1214,6 +2647,148 @@ "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==", "dev": true }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmmirror.com/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmmirror.com/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/rollup": { "version": "3.20.2", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.20.2.tgz", @@ -1230,6 +2805,34 @@ "fsevents": "~2.3.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "optional": true + }, + "node_modules/sanitize-html": { + "version": "2.7.3", + "resolved": "https://registry.npmmirror.com/sanitize-html/-/sanitize-html-2.7.3.tgz", + "integrity": "sha512-jMaHG29ak4miiJ8wgqA1849iInqORgNv7SLfSw9LtfOhEUQ1C0YHKH73R+hgyufBW9ZFeJrb057k9hjlfBCVlw==", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^6.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "node_modules/shiki": { "version": "0.14.1", "resolved": "https://registry.npmmirror.com/shiki/-/shiki-0.14.1.tgz", @@ -1264,7 +2867,6 @@ "version": "1.0.2", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1299,11 +2901,24 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/style-mod": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.0.3.tgz", + "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/tslib": { "version": "2.5.0", @@ -1311,6 +2926,67 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, + "node_modules/typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmmirror.com/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "node_modules/typestyle": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/typestyle/-/typestyle-2.4.0.tgz", + "integrity": "sha512-/d1BL6Qi+YlMLEydnUEB8KL/CAjAN8cyt3/UyGnOyBrWf7bLGcR/6yhmsaUstO2IcYwZfagjE7AIzuI2vUW9mg==", + "dependencies": { + "csstype": "3.0.10", + "free-style": "3.1.0" + } + }, + "node_modules/typestyle/node_modules/csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "optional": true + }, "node_modules/valid-data-url": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/valid-data-url/-/valid-data-url-3.0.1.tgz", @@ -1320,6 +2996,38 @@ "node": ">=10" } }, + "node_modules/validate.io-array": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/validate.io-array/-/validate.io-array-1.0.6.tgz", + "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==" + }, + "node_modules/validate.io-function": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/validate.io-function/-/validate.io-function-1.0.2.tgz", + "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==" + }, + "node_modules/validate.io-integer": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/validate.io-integer/-/validate.io-integer-1.0.5.tgz", + "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", + "dependencies": { + "validate.io-number": "^1.0.3" + } + }, + "node_modules/validate.io-integer-array": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", + "integrity": "sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==", + "dependencies": { + "validate.io-array": "^1.0.3", + "validate.io-integer": "^1.0.4" + } + }, + "node_modules/validate.io-number": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/validate.io-number/-/validate.io-number-1.0.3.tgz", + "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==" + }, "node_modules/vite": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.0.tgz", @@ -1415,6 +3123,19 @@ "@vue/shared": "3.2.47" } }, + "node_modules/w3c-keyname": { + "version": "2.2.6", + "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz", + "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/web-resource-inliner": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz", @@ -1459,14 +3180,12 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -1478,6 +3197,26 @@ "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==", "dev": true }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xmldom-sre": { "version": "0.1.31", "resolved": "https://registry.npmmirror.com/xmldom-sre/-/xmldom-sre-0.1.31.tgz", @@ -1486,6 +3225,90 @@ "engines": { "node": ">=0.1" } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "optional": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y-codemirror": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/y-codemirror/-/y-codemirror-3.0.1.tgz", + "integrity": "sha512-TsLSoouAZxkxOKbmTj7qdwZNS0lZMVqIdp7/j9EgUUqYj0remZYDGl6VBABrmp9UX1QvX6RoXXqzbNhftgfCbA==", + "dependencies": { + "lib0": "^0.2.42" + }, + "peerDependencies": { + "codemirror": "^5.52.2", + "yjs": "^13.5.17" + } + }, + "node_modules/y-leveldb": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/y-leveldb/-/y-leveldb-0.1.2.tgz", + "integrity": "sha512-6ulEn5AXfXJYi89rXPEg2mMHAyyw8+ZfeMMdOtBbV8FJpQ1NOrcgi6DTAcXof0dap84NjHPT2+9d0rb6cFsjEg==", + "optional": true, + "dependencies": { + "level": "^6.0.1", + "lib0": "^0.2.31" + }, + "peerDependencies": { + "yjs": "^13.0.0" + } + }, + "node_modules/y-protocols": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/y-protocols/-/y-protocols-1.0.5.tgz", + "integrity": "sha512-Wil92b7cGk712lRHDqS4T90IczF6RkcvCwAD0A2OPg+adKmOe+nOiT/N2hvpQIWS3zfjmtL4CPaH5sIW1Hkm/A==", + "dependencies": { + "lib0": "^0.2.42" + } + }, + "node_modules/y-websocket": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/y-websocket/-/y-websocket-1.5.0.tgz", + "integrity": "sha512-A8AO6XtnQlYwWFytWdkDCeXg4l8ghRTIw5h2YUgUYDmEC9ugWGIwYNW80yadhSFAF7CvuWTEkQNEpevnH6EiZw==", + "dependencies": { + "lib0": "^0.2.52", + "lodash.debounce": "^4.0.8", + "y-protocols": "^1.0.5" + }, + "bin": { + "y-websocket": "bin/server.js", + "y-websocket-server": "bin/server.js" + }, + "optionalDependencies": { + "ws": "^6.2.1", + "y-leveldb": "^0.1.0" + }, + "peerDependencies": { + "yjs": "^13.5.6" + } + }, + "node_modules/y-websocket/node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "optional": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/yjs": { + "version": "13.6.0", + "resolved": "https://registry.npmmirror.com/yjs/-/yjs-13.6.0.tgz", + "integrity": "sha512-tFZtuQV6XamtDa9SfZhUsxchUcTBWe7fzpo1UWZDLXGejTZ5t9MCswGYzyvq7+BDzfEc9oX54QEbzI/4NyS6+g==", + "dependencies": { + "lib0": "^0.2.74" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=8.0.0" + } } }, "dependencies": { @@ -1648,6 +3471,139 @@ "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", "dev": true }, + "@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@blueprintjs/colors": { + "version": "4.1.22", + "resolved": "https://registry.npmmirror.com/@blueprintjs/colors/-/colors-4.1.22.tgz", + "integrity": "sha512-qcC7nWW9TTSS7aDxE5gbo9vrxo+IOpC6/Kzpi0rdOBYFDd02PppCdnCCjGYw1/IopSsZ9EWqDLmD7zuy0H+WEA==" + }, + "@blueprintjs/core": { + "version": "3.54.0", + "resolved": "https://registry.npmmirror.com/@blueprintjs/core/-/core-3.54.0.tgz", + "integrity": "sha512-u2c1s6MNn0ocxhnC6CuiG5g3KV6b4cKUvSobznepA9SC3/AL1s3XOvT7DLWoHRv2B/vBOHFYEDzLw2/vlcGGZg==", + "requires": { + "@blueprintjs/colors": "^4.0.0-alpha.3", + "@blueprintjs/icons": "^3.33.0", + "@juggle/resize-observer": "^3.3.1", + "@types/dom4": "^2.0.1", + "classnames": "^2.2", + "dom4": "^2.1.5", + "normalize.css": "^8.0.1", + "popper.js": "^1.16.1", + "react-lifecycles-compat": "^3.0.4", + "react-popper": "^1.3.7", + "react-transition-group": "^2.9.0", + "tslib": "~2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@blueprintjs/icons": { + "version": "3.33.0", + "resolved": "https://registry.npmmirror.com/@blueprintjs/icons/-/icons-3.33.0.tgz", + "integrity": "sha512-Q6qoSDIm0kRYQZISm59UUcDCpV3oeHulkLuh3bSlw0HhcSjvEQh2PSYbtaifM60Q4aK4PCd6bwJHg7lvF1x5fQ==", + "requires": { + "classnames": "^2.2", + "tslib": "~2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@blueprintjs/select": { + "version": "3.19.1", + "resolved": "https://registry.npmmirror.com/@blueprintjs/select/-/select-3.19.1.tgz", + "integrity": "sha512-8UJIZMaWXRMQHr14wbmzJc/CklcSKxOU5JUux0xXKQz/hDW/g1a650tlwJmnxufvRdShbGinlVfHupCs0EL6sw==", + "requires": { + "@blueprintjs/core": "^3.54.0", + "classnames": "^2.2", + "tslib": "~2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + } + } + }, + "@codemirror/autocomplete": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.5.1.tgz", + "integrity": "sha512-/Sv9yJmqyILbZ26U4LBHnAtbikuVxWUp+rQ8BXuRGtxZfbfKOY/WPbsUtvSP2h0ZUZMlkxV/hqbKRFzowlA6xw==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.6.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/lang-python": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-python/-/lang-python-6.1.2.tgz", + "integrity": "sha512-nbQfifLBZstpt6Oo4XxA2LOzlSp4b/7Bc5cmodG1R+Cs5PLLCTUvsMNWDnziiCfTOG/SW1rVzXq/GbIr6WXlcw==", + "requires": { + "@codemirror/autocomplete": "^6.3.2", + "@codemirror/language": "^6.0.0", + "@lezer/python": "^1.0.0" + } + }, + "@codemirror/lang-sql": { + "version": "6.4.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.4.1.tgz", + "integrity": "sha512-PFB56L+A0WGY35uRya+Trt5g19V9k2V9X3c55xoFW4RgiATr/yLqWsbbnEsdxuMn5tLpuikp7Kmj9smRsqBXAg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.6.0", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.6.0.tgz", + "integrity": "sha512-cwUd6lzt3MfNYOobdjf14ZkLbJcnv4WtndYaoBkbor/vF+rCNguMPK0IRtvZJG4dsWiaWPcK8x1VijhvSxnstg==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/state": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.2.0.tgz", + "integrity": "sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==" + }, + "@codemirror/view": { + "version": "6.9.6", + "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.9.6.tgz", + "integrity": "sha512-g68PxS3RkHpxfYS6DTWCy1jeA5/oHzmdWjMVPkOzqQyxpElHEcPncUd4EeMVSa4okt0sS3hNXVaRnJqO/7MeJw==", + "requires": { + "@codemirror/state": "^6.1.4", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, "@docsearch/css": { "version": "3.3.3", "resolved": "https://registry.npmmirror.com/@docsearch/css/-/css-3.3.3.tgz", @@ -1830,6 +3786,585 @@ "dev": true, "optional": true }, + "@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" + }, + "@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmmirror.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + }, + "@jupyter/ydoc": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/@jupyter/ydoc/-/ydoc-0.2.4.tgz", + "integrity": "sha512-QACcB4bF+Ew4UJmJP+3OyiyQm3vwRYF6iZCQK9q0nE2U5uAosQkfLyT6Bx71jPUXe4G9lEF6m9fjpZvSUX7Lyw==", + "requires": { + "@jupyterlab/nbformat": "^3.0.0 || ^4.0.0-alpha.15", + "@lumino/coreutils": "^1.11.0 || ^2.0.0-alpha.6", + "@lumino/disposable": "^1.10.0 || ^2.0.0-alpha.6", + "@lumino/signaling": "^1.10.0 || ^2.0.0-alpha.6", + "y-protocols": "^1.0.5", + "yjs": "^13.5.40" + } + }, + "@jupyterlab/application": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/application/-/application-3.6.3.tgz", + "integrity": "sha512-G0tR6sUSCuHB8vGQnaB5lfihKNJVHtqYNoMlsZYF9rYpZEhW1TRD4uE5rg4RfDDR+GghjckQlP3rRNB2Vn4tMA==", + "requires": { + "@fortawesome/fontawesome-free": "^5.12.0", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/docregistry": "^3.6.3", + "@jupyterlab/rendermime": "^3.6.3", + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/application": "^1.31.4", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/properties": "^1.8.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2" + } + }, + "@jupyterlab/apputils": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/apputils/-/apputils-3.6.3.tgz", + "integrity": "sha512-um2Aaa5fOUwHFpAqKTDA+MFpnAldzOILIi5QsKOWRxiJA2W8x+hlg5HvHbq+eSWuWEU3ah15M7htzBcL3g9d4Q==", + "requires": { + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/settingregistry": "^3.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/domutils": "^1.8.0", + "@lumino/messaging": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/properties": "^1.8.0", + "@lumino/signaling": "^1.10.0", + "@lumino/virtualdom": "^1.14.0", + "@lumino/widgets": "^1.37.2", + "@types/react": "^17.0.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "sanitize-html": "~2.7.3", + "url": "^0.11.0" + } + }, + "@jupyterlab/codeeditor": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/codeeditor/-/codeeditor-3.6.3.tgz", + "integrity": "sha512-SnVo5KDhyRkK/o1SDRX9nehLEAMaOBFf+GUx2jeXBTfr6wTKcwDBnJAUwlOfncwRlMV79aUIqTIcS861FSXDyA==", + "requires": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/dragdrop": "^1.13.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2" + } + }, + "@jupyterlab/codemirror": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/codemirror/-/codemirror-3.6.3.tgz", + "integrity": "sha512-VU5bInzSqsyPGZkEd/w6HtJ9PSw7U5twoyrQSpSM+E2SEYWskaBZOHJf8XNunVoRRKwSvDLyxSs07Ot6zUlA0w==", + "requires": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codeeditor": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/statusbar": "^3.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2", + "codemirror": "~5.61.0", + "react": "^17.0.1", + "y-codemirror": "^3.0.1" + } + }, + "@jupyterlab/coreutils": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/coreutils/-/coreutils-5.6.3.tgz", + "integrity": "sha512-jRVTpwGzP9wBNYuaZTip89FS1qbeSYrEO2qdNVdW2rs0mQHcIlu3Fkv5muMFmKYGi0XHhG3UhZiWQ7qiPw2svQ==", + "requires": { + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "minimist": "~1.2.0", + "moment": "^2.24.0", + "path-browserify": "^1.0.0", + "url-parse": "~1.5.1" + } + }, + "@jupyterlab/docprovider": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/docprovider/-/docprovider-3.6.3.tgz", + "integrity": "sha512-M5IoyykDpWnUFNePHz3+fi/RNvV92UNbQGfAvsaCMSn+fl48rD4rHB9EZGceOisb3m1U+E4SntKYI3pl49yUEg==", + "requires": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "y-protocols": "^1.0.5", + "y-websocket": "^1.4.6" + } + }, + "@jupyterlab/docregistry": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/docregistry/-/docregistry-3.6.3.tgz", + "integrity": "sha512-unDMrtCSGKPqX9uvYCkI7zGTvskuC9odAPIHPsYSVMcHL/o5M7lQkHmRZCoSIezfe5OvPGXbYT2boQrBKXqCFw==", + "requires": { + "@jupyter/ydoc": "~0.2.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codeeditor": "^3.6.3", + "@jupyterlab/codemirror": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/docprovider": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/rendermime": "^3.6.3", + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2" + } + }, + "@jupyterlab/mathjax2": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/mathjax2/-/mathjax2-3.6.3.tgz", + "integrity": "sha512-Aju49iHqwvsArc3qvQGDAOpQkpKvHfCXueQX7qJDRBst764jw+NjvWK11ODkRgUwsv0Rxi4YzOT0Z7N6Qnc5Rw==", + "requires": { + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@lumino/coreutils": "^1.11.0" + } + }, + "@jupyterlab/nbformat": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/nbformat/-/nbformat-3.6.3.tgz", + "integrity": "sha512-0qJLa4dtOmu9EmHFeM7gaZi4qheovIPc9ZrgGGRuG0obajs4YYlvh4MQvCSgpVhme4AuBfGlcfzhlx+Gbzr5Xw==", + "requires": { + "@lumino/coreutils": "^1.11.0" + } + }, + "@jupyterlab/observables": { + "version": "4.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/observables/-/observables-4.6.3.tgz", + "integrity": "sha512-CvQoL+9WHXOy/CXp/PQLi4c5iZVJ4psz11+GrycDDinX1AdVQ8a43OLTC0gxWl3Tk2C8ZvAi1sgn4FS68E1ACQ==", + "requires": { + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0" + } + }, + "@jupyterlab/rendermime": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime/-/rendermime-3.6.3.tgz", + "integrity": "sha512-w3e38OddJin9fbfe7EWsKiiup/0ayvHPrAsacde8PqGLvi/sLeAXT98PqihsKt8EAlOgXSkSO0Ivjbd0JzgGgA==", + "requires": { + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codemirror": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/rendermime-interfaces": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2", + "lodash.escape": "^4.0.1", + "marked": "^4.0.17" + } + }, + "@jupyterlab/rendermime-interfaces": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.6.3.tgz", + "integrity": "sha512-VHZVnqB0K1nmoQMOhFGHwvSYMQmxqcOC3wWDRFeUOv8S+tejTYfbrKXPOZJvhdGB52Jn8XNIesXOuNpLhl4HmQ==", + "requires": { + "@jupyterlab/translation": "^3.6.3", + "@lumino/coreutils": "^1.11.0", + "@lumino/widgets": "^1.37.2" + } + }, + "@jupyterlab/services": { + "version": "6.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/services/-/services-6.6.3.tgz", + "integrity": "sha512-BxEOMRl9X18T5wY7iV6ZJhARnibFghpD3OruqeSbnGdbRv6XJi8prsRbCQQ6Mf9agvf81B20KmDvYKikPHC0xQ==", + "requires": { + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/nbformat": "^3.6.3", + "@jupyterlab/observables": "^4.6.3", + "@jupyterlab/settingregistry": "^3.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/polling": "^1.9.0", + "@lumino/signaling": "^1.10.0", + "node-fetch": "^2.6.0", + "ws": "^7.4.6" + } + }, + "@jupyterlab/settingregistry": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/settingregistry/-/settingregistry-3.6.3.tgz", + "integrity": "sha512-pnzIge0ZC8V63R97HiNroJ0eaPM0DN6x65SStyLuv/K8Qez4XqpOdc0Wfell5ri5mxMvm1qKekuFeTikqSXQKQ==", + "requires": { + "@jupyterlab/statedb": "^3.6.3", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "ajv": "^6.12.3", + "json5": "^2.1.1" + } + }, + "@jupyterlab/statedb": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statedb/-/statedb-3.6.3.tgz", + "integrity": "sha512-A36L+0NN8f0WOES2GdtZjp9uFuC7IBjhKiO/RlKRX5AFjNxoJ9oO3PZtoxJQYPnGBljMqVdRa+m9aYEfvKhYyQ==", + "requires": { + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/properties": "^1.8.0", + "@lumino/signaling": "^1.10.0" + } + }, + "@jupyterlab/statusbar": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/statusbar/-/statusbar-3.6.3.tgz", + "integrity": "sha512-m59NLR0Zghm53PU6hDzRF4XVORnJx/YRx0svcjj/TGLk8LSffpQbUDBy24dl3tOuChk4D5cCdgeDH1X30TzCaA==", + "requires": { + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/codeeditor": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/translation": "^3.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/messaging": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/widgets": "^1.37.2", + "csstype": "~3.0.3", + "react": "^17.0.1", + "typestyle": "^2.0.4" + }, + "dependencies": { + "csstype": { + "version": "3.0.11", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + } + } + }, + "@jupyterlab/theme-light-extension": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/theme-light-extension/-/theme-light-extension-3.6.3.tgz", + "integrity": "sha512-f0pFzwO1UPev6HPin1vl0m4s/ur2nm0z9BCFCP7LPTNv1njN6pYkhpUp1oluCZ09NbkRk2e0x7ed9z/2fgz3vA==", + "requires": { + "@jupyterlab/application": "^3.6.3", + "@jupyterlab/apputils": "^3.6.3", + "@jupyterlab/translation": "^3.6.3" + } + }, + "@jupyterlab/translation": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/translation/-/translation-3.6.3.tgz", + "integrity": "sha512-m+wwBv/hiN5Y6Sb7Ij150ZhPXZdhN5wI8CT3afnzARwKr2Aww5AIURO3upmMwnKaPVQTrWqsS3+7bZS/21JuJA==", + "requires": { + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/statedb": "^3.6.3", + "@lumino/coreutils": "^1.11.0" + } + }, + "@jupyterlab/ui-components": { + "version": "3.6.3", + "resolved": "https://registry.npmmirror.com/@jupyterlab/ui-components/-/ui-components-3.6.3.tgz", + "integrity": "sha512-XzseUo2IXclPlYcGxCIz8evjWF+dCBMmbJlvoE5OF29BYBvI5N/DUaTem8bHN5kmQwHIXX6BImHu7rbC9Xjl6w==", + "requires": { + "@blueprintjs/core": "^3.36.0", + "@blueprintjs/select": "^3.15.0", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/translation": "^3.6.3", + "@lumino/algorithm": "^1.9.0", + "@lumino/commands": "^1.19.0", + "@lumino/coreutils": "^1.11.0", + "@lumino/disposable": "^1.10.0", + "@lumino/signaling": "^1.10.0", + "@lumino/virtualdom": "^1.14.0", + "@lumino/widgets": "^1.37.2", + "@rjsf/core": "^3.1.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", + "typestyle": "^2.0.4" + } + }, + "@lezer/common": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.0.2.tgz", + "integrity": "sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==" + }, + "@lezer/highlight": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.1.4.tgz", + "integrity": "sha512-IECkFmw2l7sFcYXrV8iT9GeY4W0fU4CxX0WMwhmhMIVjoDdD1Hr6q3G2NqVtLg/yVe5n7i4menG3tJ2r4eCrPQ==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/lr": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.3.3.tgz", + "integrity": "sha512-JPQe3mwJlzEVqy67iQiiGozhcngbO8QBgpqZM6oL1Wj/dXckrEexpBLeFkq0edtW5IqnPRFxA24BHJni8Js69w==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/python": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@lezer/python/-/python-1.1.4.tgz", + "integrity": "sha512-x82XgYxqqX0Yiw7uIemQJ3z2QyQme5BYpectkPfNg99OQrakqfwqVolqEVIrsj4QO9rVDLFZZ49J0Vbne7UbAA==", + "requires": { + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lumino/algorithm": { + "version": "1.9.2", + "resolved": "https://registry.npmmirror.com/@lumino/algorithm/-/algorithm-1.9.2.tgz", + "integrity": "sha512-Z06lp/yuhz8CtIir3PNTGnuk7909eXt4ukJsCzChsGuot2l5Fbs96RJ/FOHgwCedaX74CtxPjXHXoszFbUA+4A==" + }, + "@lumino/application": { + "version": "1.31.4", + "resolved": "https://registry.npmmirror.com/@lumino/application/-/application-1.31.4.tgz", + "integrity": "sha512-dOSsDJ1tXOxC3fnSHvtDQK5RcICLEVPtO19HeCGwurb5W2ZZ55SZT2b5jZu6V/v8lGdtkNbr1RJltRpJRSRb/A==", + "requires": { + "@lumino/commands": "^1.21.1", + "@lumino/coreutils": "^1.12.1", + "@lumino/widgets": "^1.37.2" + } + }, + "@lumino/collections": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/@lumino/collections/-/collections-1.9.3.tgz", + "integrity": "sha512-2i2Wf1xnfTgEgdyKEpqM16bcYRIhUOGCDzaVCEZACVG9R1CgYwOe3zfn71slBQOVSjjRgwYrgLXu4MBpt6YK+g==", + "requires": { + "@lumino/algorithm": "^1.9.2" + } + }, + "@lumino/commands": { + "version": "1.21.1", + "resolved": "https://registry.npmmirror.com/@lumino/commands/-/commands-1.21.1.tgz", + "integrity": "sha512-d1zJmwz5bHU0BM/Rl3tRdZ7/WgXnFB0bM7x7Bf0XDlmX++jnU9k0j3mh6/5JqCGLmIApKCRwVqSaV7jPmSJlcQ==", + "requires": { + "@lumino/algorithm": "^1.9.2", + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4", + "@lumino/domutils": "^1.8.2", + "@lumino/keyboard": "^1.8.2", + "@lumino/signaling": "^1.11.1", + "@lumino/virtualdom": "^1.14.3" + } + }, + "@lumino/coreutils": { + "version": "1.12.1", + "resolved": "https://registry.npmmirror.com/@lumino/coreutils/-/coreutils-1.12.1.tgz", + "integrity": "sha512-JLu3nTHzJk9N8ohZ85u75YxemMrmDzJdNgZztfP7F7T7mxND3YVNCkJG35a6aJ7edu1sIgCjBxOvV+hv27iYvQ==", + "requires": {} + }, + "@lumino/disposable": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/@lumino/disposable/-/disposable-1.10.4.tgz", + "integrity": "sha512-4ZxyYcyzUS+ZeB2KAH9oAH3w0DUUceiVr+FIZHZ2TAYGWZI/85WlqJtfm0xjwEpCwLLW1TDqJrISuZu3iMmVMA==", + "requires": { + "@lumino/algorithm": "^1.9.2", + "@lumino/signaling": "^1.11.1" + } + }, + "@lumino/domutils": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@lumino/domutils/-/domutils-1.8.2.tgz", + "integrity": "sha512-QIpMfkPJrs4GrWBuJf2Sn1fpyVPmvqUUAeD8xAQo8+4V5JAT0vUDLxZ9HijefMgNCi3+Bs8Z3lQwRCrz+cFP1A==" + }, + "@lumino/dragdrop": { + "version": "1.14.5", + "resolved": "https://registry.npmmirror.com/@lumino/dragdrop/-/dragdrop-1.14.5.tgz", + "integrity": "sha512-LC5xB82+xGF8hFyl716TMpV32OIMIMl+s3RU1PaqDkD6B7PkgiVk6NkJ4X9/GcEvl2igkvlGQt/3L7qxDAJNxw==", + "requires": { + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4" + } + }, + "@lumino/keyboard": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@lumino/keyboard/-/keyboard-1.8.2.tgz", + "integrity": "sha512-Dy+XqQ1wXbcnuYtjys5A0pAqf4SpAFl9NY6owyIhXAo0Va7w3LYp3jgiP1xAaBAwMuUppiUAfrbjrysZuZ625g==" + }, + "@lumino/messaging": { + "version": "1.10.3", + "resolved": "https://registry.npmmirror.com/@lumino/messaging/-/messaging-1.10.3.tgz", + "integrity": "sha512-F/KOwMCdqvdEG8CYAJcBSadzp6aI7a47Fr60zAKGqZATSRRRV41q53iXU7HjFPqQqQIvdn9Z7J32rBEAyQAzww==", + "requires": { + "@lumino/algorithm": "^1.9.2", + "@lumino/collections": "^1.9.3" + } + }, + "@lumino/polling": { + "version": "1.11.4", + "resolved": "https://registry.npmmirror.com/@lumino/polling/-/polling-1.11.4.tgz", + "integrity": "sha512-yC7JLssj3mqVK6TsYj7dg4AG0rcsC42YtpoDLtz9yzO84Q5flQUfmjAPQB6oPA6wZOlISs3iasF+uO2w1ls5jg==", + "requires": { + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4", + "@lumino/signaling": "^1.11.1" + } + }, + "@lumino/properties": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@lumino/properties/-/properties-1.8.2.tgz", + "integrity": "sha512-EkjI9Cw8R0U+xC9HxdFSu7X1tz1H1vKu20cGvJ2gU+CXlMB1DvoYJCYxCThByHZ+kURTAap4SE5x8HvKwNPbig==" + }, + "@lumino/signaling": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@lumino/signaling/-/signaling-1.11.1.tgz", + "integrity": "sha512-YCUmgw08VoyMN5KxzqPO3KMx+cwdPv28tAN06C0K7Q/dQf+oufb1XocuhZb5selTrTmmuXeizaYxgLIQGdS1fA==", + "requires": { + "@lumino/algorithm": "^1.9.2", + "@lumino/properties": "^1.8.2" + } + }, + "@lumino/virtualdom": { + "version": "1.14.3", + "resolved": "https://registry.npmmirror.com/@lumino/virtualdom/-/virtualdom-1.14.3.tgz", + "integrity": "sha512-5joUC1yuxeXbpfbSBm/OR8Mu9HoTo6PDX0RKqzlJ9o97iml7zayFN/ynzcxScKGQAo9iaXOY8uVIvGUT8FnsGw==", + "requires": { + "@lumino/algorithm": "^1.9.2" + } + }, + "@lumino/widgets": { + "version": "1.37.2", + "resolved": "https://registry.npmmirror.com/@lumino/widgets/-/widgets-1.37.2.tgz", + "integrity": "sha512-NHKu1NBDo6ETBDoNrqSkornfUCwc8EFFzw6+LWBfYVxn2PIwciq2SdiJGEyNqL+0h/A9eVKb5ui5z4cwpRekmQ==", + "requires": { + "@lumino/algorithm": "^1.9.2", + "@lumino/commands": "^1.21.1", + "@lumino/coreutils": "^1.12.1", + "@lumino/disposable": "^1.10.4", + "@lumino/domutils": "^1.8.2", + "@lumino/dragdrop": "^1.14.5", + "@lumino/keyboard": "^1.8.2", + "@lumino/messaging": "^1.10.3", + "@lumino/properties": "^1.8.2", + "@lumino/signaling": "^1.11.1", + "@lumino/virtualdom": "^1.14.3" + } + }, + "@rjsf/core": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/@rjsf/core/-/core-3.2.1.tgz", + "integrity": "sha512-dk8ihvxFbcuIwU7G+HiJbFgwyIvaumPt5g5zfnuC26mwTUPlaDGFXKK2yITp8tJ3+hcwS5zEXtAN9wUkfuM4jA==", + "requires": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.7.0", + "core-js-pure": "^3.6.5", + "json-schema-merge-allof": "^0.6.0", + "jsonpointer": "^5.0.0", + "lodash": "^4.17.15", + "nanoid": "^3.1.23", + "prop-types": "^15.7.2", + "react-is": "^16.9.0" + } + }, + "@types/dom4": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/@types/dom4/-/dom4-2.0.2.tgz", + "integrity": "sha512-Rt4IC1T7xkCWa0OG1oSsPa0iqnxlDeQqKXZAHrQGLb7wFGncWm85MaxKUjAGejOrUynOgWlFi4c6S6IyJwoK4g==" + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "@types/react": { + "version": "17.0.58", + "resolved": "https://registry.npmmirror.com/@types/react/-/react-17.0.58.tgz", + "integrity": "sha512-c1GzVY97P0fGxwGxhYq989j4XwlcHQoto6wQISOC2v6wm3h0PORRWJFHlkRjfGsiG3y1609WdQ+J+tKxvrEd6A==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + }, + "dependencies": { + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + } + } + }, + "@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, "@types/web-bluetooth": { "version": "0.0.16", "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", @@ -2003,6 +4538,30 @@ } } }, + "abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "optional": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "algoliasearch": { "version": "4.17.0", "resolved": "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.17.0.tgz", @@ -2037,6 +4596,23 @@ "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", "dev": true }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "optional": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "optional": true + }, "body-scroll-lock": { "version": "4.0.0-beta.0", "resolved": "https://registry.npmmirror.com/body-scroll-lock/-/body-scroll-lock-4.0.0-beta.0.tgz", @@ -2049,6 +4625,25 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "optional": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "cheerio": { "version": "1.0.0-rc.10", "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.10.tgz", @@ -2077,12 +4672,54 @@ "domutils": "^2.8.0" } }, + "classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "codemirror": { + "version": "5.61.1", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-5.61.1.tgz", + "integrity": "sha512-+D1NZjAucuzE93vJGbAaXzvoBHwp9nJZWWWF9utjv25+5AZUiah6CIlfb4ikG4MoDsFsCG8niiJH5++OO2LgIQ==" + }, "commander": { "version": "6.2.1", "resolved": "https://registry.npmmirror.com/commander/-/commander-6.2.1.tgz", "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, + "compute-gcd": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/compute-gcd/-/compute-gcd-1.2.1.tgz", + "integrity": "sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==", + "requires": { + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "compute-lcm": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/compute-lcm/-/compute-lcm-1.1.2.tgz", + "integrity": "sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==", + "requires": { + "compute-gcd": "^1.2.1", + "validate.io-array": "^1.0.3", + "validate.io-function": "^1.0.2", + "validate.io-integer-array": "^1.0.0" + } + }, + "core-js-pure": { + "version": "3.30.1", + "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.30.1.tgz", + "integrity": "sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg==" + }, + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "peer": true + }, "css-select": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz", @@ -2108,28 +4745,75 @@ "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", "dev": true }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + }, + "deferred-leveldown": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "optional": true, + "requires": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + } + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "requires": { + "@babel/runtime": "^7.1.2" + } + }, "dom-serializer": { "version": "1.4.1", "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, + "dom4": { + "version": "2.1.6", + "resolved": "https://registry.npmmirror.com/dom4/-/dom4-2.1.6.tgz", + "integrity": "sha512-JkCVGnN4ofKGbjf5Uvc8mmxaATIErKQKSgACdBXpsQ3fY6DlIpAyWfiBSrGkttATssbDCp3psiAKWXk5gmjycA==" + }, "domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" }, "domhandler": { "version": "4.3.1", "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, "requires": { "domelementtype": "^2.2.0" } @@ -2138,18 +4822,37 @@ "version": "2.8.0", "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, + "encoding-down": { + "version": "6.3.0", + "resolved": "https://registry.npmmirror.com/encoding-down/-/encoding-down-6.3.0.tgz", + "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", + "optional": true, + "requires": { + "abstract-leveldown": "^6.2.1", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0" + } + }, "entities": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, + "requires": { + "prr": "~1.0.1" + } }, "esbuild": { "version": "0.17.16", @@ -2187,6 +4890,11 @@ "integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==", "dev": true }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, "esm": { "version": "3.2.25", "resolved": "https://registry.npmmirror.com/esm/-/esm-3.2.25.tgz", @@ -2199,6 +4907,21 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "free-style": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/free-style/-/free-style-3.1.0.tgz", + "integrity": "sha512-vJujYSIyT30iDoaoeigNAxX4yB1RUrh+N2ZMhIElMr3BvCuGXOw7XNJMEEJkDUeamK2Rnb/IKFGKRKlTWIGRWA==" + }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", @@ -2206,11 +4929,64 @@ "dev": true, "optional": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, "htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz", "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -2218,12 +4994,104 @@ "entities": "^2.0.0" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "optional": true + }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "optional": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "isomorphic.js": { + "version": "0.2.5", + "resolved": "https://registry.npmmirror.com/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "json-schema-compare": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/json-schema-compare/-/json-schema-compare-0.2.2.tgz", + "integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==", + "requires": { + "lodash": "^4.17.4" + } + }, + "json-schema-merge-allof": { + "version": "0.6.0", + "resolved": "https://registry.npmmirror.com/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz", + "integrity": "sha512-LEw4VMQVRceOPLuGRWcxW5orTTiR9ZAtqTAe4rQUjNADTeR81bezBVFa0MqIwp0YmHIM1KkhSjZM7o+IQhaPbQ==", + "requires": { + "compute-lcm": "^1.1.0", + "json-schema-compare": "^0.2.2", + "lodash": "^4.17.4" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, "jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, + "jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" + }, "juice": { "version": "8.1.0", "resolved": "https://registry.npmmirror.com/juice/-/juice-8.1.0.tgz", @@ -2237,6 +5105,152 @@ "web-resource-inliner": "^6.0.1" } }, + "level": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/level/-/level-6.0.1.tgz", + "integrity": "sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw==", + "optional": true, + "requires": { + "level-js": "^5.0.0", + "level-packager": "^5.1.0", + "leveldown": "^5.4.0" + } + }, + "level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmmirror.com/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "optional": true, + "requires": { + "buffer": "^5.6.0" + } + }, + "level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "optional": true + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "optional": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", + "optional": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + } + }, + "level-js": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/level-js/-/level-js-5.0.2.tgz", + "integrity": "sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg==", + "optional": true, + "requires": { + "abstract-leveldown": "~6.2.3", + "buffer": "^5.5.0", + "inherits": "^2.0.3", + "ltgt": "^2.1.2" + } + }, + "level-packager": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/level-packager/-/level-packager-5.1.1.tgz", + "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", + "optional": true, + "requires": { + "encoding-down": "^6.3.0", + "levelup": "^4.3.2" + } + }, + "level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "optional": true, + "requires": { + "xtend": "^4.0.2" + } + }, + "leveldown": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/leveldown/-/leveldown-5.6.0.tgz", + "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", + "optional": true, + "requires": { + "abstract-leveldown": "~6.2.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "~4.1.0" + } + }, + "levelup": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "optional": true, + "requires": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "lib0": { + "version": "0.2.74", + "resolved": "https://registry.npmmirror.com/lib0/-/lib0-0.2.74.tgz", + "integrity": "sha512-roj9i46/JwG5ik5KNTkxP2IytlnrssAkD/OhlAVtE+GqectrdkfR+pttszVLrOzMDeXNs1MPt6yo66MUolWSiA==", + "requires": { + "isomorphic.js": "^0.2.4" + } + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "optional": true + }, "magic-string": { "version": "0.25.9", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", @@ -2252,6 +5266,25 @@ "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", "dev": true }, + "markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "entities": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" + } + } + }, "markdown-it-mathjax3": { "version": "4.3.2", "resolved": "https://registry.npmmirror.com/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz", @@ -2262,6 +5295,11 @@ "mathjax-full": "^3.2.0" } }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==" + }, "mathjax-full": { "version": "3.2.2", "resolved": "https://registry.npmmirror.com/mathjax-full/-/mathjax-full-3.2.2.tgz", @@ -2274,6 +5312,11 @@ "speech-rule-engine": "^4.0.6" } }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, "mensch": { "version": "0.3.4", "resolved": "https://registry.npmmirror.com/mensch/-/mensch-0.3.4.tgz", @@ -2292,6 +5335,11 @@ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, "minisearch": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/minisearch/-/minisearch-6.0.1.tgz", @@ -2304,21 +5352,41 @@ "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==", "dev": true }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, "nanoid": { "version": "3.3.6", "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + }, + "napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", + "optional": true }, "node-fetch": { "version": "2.6.9", "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.9.tgz", "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, "requires": { "whatwg-url": "^5.0.0" } }, + "node-gyp-build": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz", + "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==", + "optional": true + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", @@ -2328,6 +5396,30 @@ "boolbase": "^1.0.0" } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" + }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", @@ -2343,17 +5435,25 @@ "parse5": "^6.0.1" } }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" }, "postcss": { "version": "8.4.21", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz", "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -2366,6 +5466,122 @@ "integrity": "sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==", "dev": true }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmmirror.com/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmmirror.com/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "requires": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + }, + "react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "requires": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "rollup": { "version": "3.20.2", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.20.2.tgz", @@ -2375,6 +5591,34 @@ "fsevents": "~2.3.2" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "optional": true + }, + "sanitize-html": { + "version": "2.7.3", + "resolved": "https://registry.npmmirror.com/sanitize-html/-/sanitize-html-2.7.3.tgz", + "integrity": "sha512-jMaHG29ak4miiJ8wgqA1849iInqORgNv7SLfSw9LtfOhEUQ1C0YHKH73R+hgyufBW9ZFeJrb057k9hjlfBCVlw==", + "requires": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^6.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "shiki": { "version": "0.14.1", "resolved": "https://registry.npmmirror.com/shiki/-/shiki-0.14.1.tgz", @@ -2402,8 +5646,7 @@ "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "sourcemap-codec": { "version": "1.4.8", @@ -2430,11 +5673,24 @@ } } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "optional": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "style-mod": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.0.3.tgz", + "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==" + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "tslib": { "version": "2.5.0", @@ -2442,12 +5698,109 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmmirror.com/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "typestyle": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/typestyle/-/typestyle-2.4.0.tgz", + "integrity": "sha512-/d1BL6Qi+YlMLEydnUEB8KL/CAjAN8cyt3/UyGnOyBrWf7bLGcR/6yhmsaUstO2IcYwZfagjE7AIzuI2vUW9mg==", + "requires": { + "csstype": "3.0.10", + "free-style": "3.1.0" + }, + "dependencies": { + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + } + } + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "optional": true + }, "valid-data-url": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/valid-data-url/-/valid-data-url-3.0.1.tgz", "integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==", "dev": true }, + "validate.io-array": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/validate.io-array/-/validate.io-array-1.0.6.tgz", + "integrity": "sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==" + }, + "validate.io-function": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/validate.io-function/-/validate.io-function-1.0.2.tgz", + "integrity": "sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==" + }, + "validate.io-integer": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/validate.io-integer/-/validate.io-integer-1.0.5.tgz", + "integrity": "sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==", + "requires": { + "validate.io-number": "^1.0.3" + } + }, + "validate.io-integer-array": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", + "integrity": "sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==", + "requires": { + "validate.io-array": "^1.0.3", + "validate.io-integer": "^1.0.4" + } + }, + "validate.io-number": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/validate.io-number/-/validate.io-number-1.0.3.tgz", + "integrity": "sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==" + }, "vite": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.3.0.tgz", @@ -2504,6 +5857,19 @@ "@vue/shared": "3.2.47" } }, + "w3c-keyname": { + "version": "2.2.6", + "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz", + "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==" + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "web-resource-inliner": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz", @@ -2544,14 +5910,12 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -2563,11 +5927,80 @@ "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==", "dev": true }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + }, "xmldom-sre": { "version": "0.1.31", "resolved": "https://registry.npmmirror.com/xmldom-sre/-/xmldom-sre-0.1.31.tgz", "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==", "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "optional": true + }, + "y-codemirror": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/y-codemirror/-/y-codemirror-3.0.1.tgz", + "integrity": "sha512-TsLSoouAZxkxOKbmTj7qdwZNS0lZMVqIdp7/j9EgUUqYj0remZYDGl6VBABrmp9UX1QvX6RoXXqzbNhftgfCbA==", + "requires": { + "lib0": "^0.2.42" + } + }, + "y-leveldb": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/y-leveldb/-/y-leveldb-0.1.2.tgz", + "integrity": "sha512-6ulEn5AXfXJYi89rXPEg2mMHAyyw8+ZfeMMdOtBbV8FJpQ1NOrcgi6DTAcXof0dap84NjHPT2+9d0rb6cFsjEg==", + "optional": true, + "requires": { + "level": "^6.0.1", + "lib0": "^0.2.31" + } + }, + "y-protocols": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/y-protocols/-/y-protocols-1.0.5.tgz", + "integrity": "sha512-Wil92b7cGk712lRHDqS4T90IczF6RkcvCwAD0A2OPg+adKmOe+nOiT/N2hvpQIWS3zfjmtL4CPaH5sIW1Hkm/A==", + "requires": { + "lib0": "^0.2.42" + } + }, + "y-websocket": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/y-websocket/-/y-websocket-1.5.0.tgz", + "integrity": "sha512-A8AO6XtnQlYwWFytWdkDCeXg4l8ghRTIw5h2YUgUYDmEC9ugWGIwYNW80yadhSFAF7CvuWTEkQNEpevnH6EiZw==", + "requires": { + "lib0": "^0.2.52", + "lodash.debounce": "^4.0.8", + "ws": "^6.2.1", + "y-leveldb": "^0.1.0", + "y-protocols": "^1.0.5" + }, + "dependencies": { + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "optional": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "yjs": { + "version": "13.6.0", + "resolved": "https://registry.npmmirror.com/yjs/-/yjs-13.6.0.tgz", + "integrity": "sha512-tFZtuQV6XamtDa9SfZhUsxchUcTBWe7fzpo1UWZDLXGejTZ5t9MCswGYzyvq7+BDzfEc9oX54QEbzI/4NyS6+g==", + "requires": { + "lib0": "^0.2.74" + } } } } diff --git a/package.json b/package.json index d907633..55eaf01 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,13 @@ "docs:build": "vitepress build", "docs:preview": "vitepress preview" }, + "dependencies": { + "@codemirror/lang-python": "^6.1.2", + "@codemirror/lang-sql": "^6.4.1", + "@jupyterlab/mathjax2": "^3.6.3", + "@jupyterlab/theme-light-extension": "^3.6.3", + "markdown-it": "^13.0.1" + }, "devDependencies": { "markdown-it-mathjax3": "^4.3.2", "vitepress": "^1.0.0-alpha.73" diff --git a/utils/index.js b/utils/index.js new file mode 100644 index 0000000..acd6a2f --- /dev/null +++ b/utils/index.js @@ -0,0 +1 @@ +export * from "./notebook"; diff --git a/utils/notebook/codemirror.js b/utils/notebook/codemirror.js new file mode 100644 index 0000000..10b612f --- /dev/null +++ b/utils/notebook/codemirror.js @@ -0,0 +1,50 @@ +/** + * 调用 codemirror 插件渲染code,并调用 jupyterlab 的 codemirror 主题样式做渲染 + * codemirror 插件: https://codemirror.net/ + */ + +import { EditorState } from "@codemirror/state"; +import { EditorView } from "@codemirror/view"; +import { python } from "@codemirror/lang-python"; +import { sql } from "@codemirror/lang-sql"; +import { Theme } from "./codemirror.theme"; + +// Codemirror 扩展配置 +const extensionsConfig = [ + EditorState.readOnly.of(true), + EditorView.editable.of(false), + Theme.getTheme("jupyter"), // 主题引入 + + /* 引入所需的编程语言 START */ + python(), + sql(), + /* 引入所需的编程语言 END */ +]; + +/** + * 调用codemirror插件渲染code + * + * @param {string} codeString 需要渲染的code字符串 + * @param {Element} parent 父元素,渲染成功后得元素将作为其的子元素 + * @returns {Element} 渲染完成后的父元素 + */ +export function createCodemirror(codeString, parent) { + if (codeString instanceof Array) codeString = codeString.join(""); + if (typeof codeString !== "string") + throw "Function createCodemirror: 参数 codeString 必须是字符串!"; + if (!parent) console.warn("Function createCodemirror: 参数 parent 不能为空"); + if (!("appendChild" in document.body)) { + console.warn( + "Function createCodemirror: 参数 parent 类型错误,需为HTML元素" + ); + codeString = document.body; + } + + return new EditorView({ + state: EditorState.create({ + doc: codeString || "", + extensions: extensionsConfig, + }), + parent: parent || document.body, + }); +} diff --git a/utils/notebook/codemirror.theme.js b/utils/notebook/codemirror.theme.js new file mode 100644 index 0000000..4891340 --- /dev/null +++ b/utils/notebook/codemirror.theme.js @@ -0,0 +1,180 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +/** + * 本文件为 Jupyter lab 源码。 + * 用于设置 codemirror 相关的主题,提供了 codemirror 以及 jupyter 两种主题。其中 jupyter 为默认主题 + * + * 源码TS版:https://github.com/jupyterlab/jupyterlab/blob/master/packages/codemirror/src/editortheme.ts + */ + +import { + defaultHighlightStyle, + HighlightStyle, + syntaxHighlighting, +} from "@codemirror/language"; +import { EditorView } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; +export const jupyterEditorTheme = EditorView.theme({ + /** + * CodeMirror themes are handling the background/color in this way. This works + * fine for CodeMirror editors outside the notebook, but the notebook styles + * these things differently. + */ + "&": { + background: "var(--jp-layout-color0)", + color: "var(--jp-content-font-color1)", + }, + /* In the notebook, we want this styling to be handled by its container */ + ".jp-CodeConsole &, .jp-Notebook &": { + background: "transparent", + }, + ".cm-content": { + caretColor: "var(--jp-editor-cursor-color)", + }, + ".cm-cursor, .cm-dropCursor": { + borderLeft: + "var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color)", + }, + ".cm-selectionBackground, .cm-content ::selection": { + backgroundColor: "var(--jp-editor-selected-background)", + }, + "&.cm-focused .cm-selectionBackground": { + backgroundColor: "var(--jp-editor-selected-focused-background)", + }, + ".cm-gutters": { + borderRight: "1px solid var(--jp-border-color2)", + backgroundColor: "var(--jp-layout-color2)", + }, + ".cm-gutter, .cm-activeLine": { + backgroundColor: "var(--jp-layout-color2)", + }, + ".cm-searchMatch": { + backgroundColor: "var(--jp-search-unselected-match-background-color)", + color: "var(--jp-search-unselected-match-color)", + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: + "var(--jp-search-selected-match-background-color) !important", + color: "var(--jp-search-selected-match-color) !important", + }, +}); +// The list of available tags for syntax highlighting is available at +// https://lezer.codemirror.net/docs/ref/#highlight.tags +export const jupyterHighlightStyle = HighlightStyle.define([ + // Order matters - a rule will override the previous ones; important for example for in headings styles. + { tag: t.meta, color: "var(--jp-mirror-editor-meta-color)" }, + { tag: t.heading, color: "var(--jp-mirror-editor-header-color)" }, + { + tag: [t.heading1, t.heading2, t.heading3, t.heading4], + color: "var(--jp-mirror-editor-header-color)", + fontWeight: "bold", + }, + { + tag: t.keyword, + color: "var(--jp-mirror-editor-keyword-color)", + fontWeight: "bold", + }, + { tag: t.atom, color: "var(--jp-mirror-editor-atom-color)" }, + { tag: t.number, color: "var(--jp-mirror-editor-number-color)" }, + { + tag: [t.definition(t.name), t.function(t.definition(t.variableName))], + color: "var(--jp-mirror-editor-def-color)", + }, + { tag: t.variableName, color: "var(--jp-mirror-editor-variable-color)" }, + { + tag: [t.special(t.variableName), t.self], + color: "var(--jp-mirror-editor-variable-2-color)", + }, + { tag: t.punctuation, color: "var(--jp-mirror-editor-punctuation-color)" }, + { tag: t.propertyName, color: "var(--jp-mirror-editor-property-color)" }, + { + tag: t.operator, + color: "var(--jp-mirror-editor-operator-color)", + fontWeight: "bold", + }, + { + tag: t.comment, + color: "var(--jp-mirror-editor-comment-color)", + fontStyle: "italic", + }, + { tag: t.string, color: "var(--jp-mirror-editor-string-color)" }, + { + tag: [t.labelName, t.monospace, t.special(t.string)], + color: "var(--jp-mirror-editor-string-2-color)", + }, + { tag: t.bracket, color: "var(--jp-mirror-editor-bracket-color)" }, + { tag: t.tagName, color: "var(--jp-mirror-editor-tag-color)" }, + { tag: t.attributeName, color: "var(--jp-mirror-editor-attribute-color)" }, + { tag: t.quote, color: "var(--jp-mirror-editor-quote-color)" }, + { + tag: t.link, + color: "var(--jp-mirror-editor-link-color)", + textDecoration: "underline", + }, + { tag: [t.separator, t.derefOperator, t.paren], color: "" }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); +/** + * JupyterLab CodeMirror 6 theme + */ +export const jupyterTheme = [ + jupyterEditorTheme, + syntaxHighlighting(jupyterHighlightStyle), +]; +/** + * A namespace to handle CodeMirror 6 theme + * + * @alpha + */ +export var Theme; +(function (Theme) { + /** + * CodeMirror 6 themes + */ + const themeMap = new Map([ + [ + "codemirror", + [EditorView.baseTheme({}), syntaxHighlighting(defaultHighlightStyle)], + ], + ["jupyter", jupyterTheme], + ]); + /** + * Get the default CodeMirror 6 theme for JupyterLab + * + * @alpha + * @returns Default theme + */ + function defaultTheme() { + return themeMap.get("jupyter"); + } + Theme.defaultTheme = defaultTheme; + /** + * Register a new theme. + * + * @alpha + * @param name Theme name + * @param theme Codemirror 6 theme extension + */ + function registerTheme(name, theme) { + themeMap.set(name, theme); + } + Theme.registerTheme = registerTheme; + /** + * Get a theme. + * + * #### Notes + * It falls back to the default theme + * + * @alpha + * @param name Theme name + * @returns Theme extension + */ + function getTheme(name) { + let ext = themeMap.get(name); + return ext !== null && ext !== void 0 ? ext : this.defaultTheme(); + } + Theme.getTheme = getTheme; +})(Theme || (Theme = {})); diff --git a/utils/notebook/index.js b/utils/notebook/index.js new file mode 100644 index 0000000..92824e1 --- /dev/null +++ b/utils/notebook/index.js @@ -0,0 +1,348 @@ +import "@jupyterlab/theme-light-extension/style/theme.css"; +import "../../.vitepress/theme/css/jupyterlab/index.css"; +import { createCodemirror } from "./codemirror"; +import { defaultSanitizer } from "./sanitizer"; +import { MathJaxTypesetter } from "./lib/index.js"; +import { + renderHTML, + renderImage, + renderLatex, + renderMarkdown, + renderSVG, + renderText, +} from "./renderers"; +import defaultMarkdownParser from "./markdown.js"; // 引入cngbdb-ui的markdown渲染逻辑 + +export class Notebook { + #source; // notebook源数据 + #cells; // notebook cell列表;cell表示一个最基础的渲染单元,例如inputCell,outputCell,outputResultCell + #fragment; // notebook 渲染结果片段,是个div元素 + #trusted; // 当前渲染字符是安全或者但求运行环境是否可信,涉及Script,SVG渲染 + #sanitizer; // 字符串无害化处理 + #shouldTypeset; // 是否对数学公式字符进行latex排版,这里默认为true + #latexTypesetter; // latex 插件实例 + #markdownParser; // markdown 渲染工具 + + /** + * 构造函数 + * @param {Object} sourceOfJson Notebook 源数据,JSON 对象 + * @param {Boolean} trusted 当前渲染字符是安全或者当前运行环境是否可信,涉及Script,SVG渲染,默认为False + * @param {Boolean} shouldTypeset 是否对数学公式字符进行latex排版,默认为true + * @param {*} markdownParser markdown 渲染工具 + */ + constructor(source, trusted, shouldTypeset, markdownParser) { + if (!source.cells || !(source.cells instanceof Array)) + throw "The Notebook is Error! Cells attribute is required and is Array!"; + this.#source = JSON.parse(JSON.stringify(source)); + const { cells } = this.#source; + this.#cells = cells; + this.#fragment = document.createElement("div"); // 创建一个新的空白的div片段,notebook渲染的结果都暂时存储在其中 + + /*---------- 默认配置项 START ----------*/ + this.#trusted = trusted || false; // 当前运行环境是否安全可信,涉及Script,SVG渲染 + this.#sanitizer = defaultSanitizer; // 字符串无害化处理 + this.#shouldTypeset = shouldTypeset || true; // 是否对数学公式字符进行latex排版,这里默认为true + this.#latexTypesetter = new MathJaxTypesetter({ + url: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js", + config: "TeX-AMS_HTML-full,Safe", + }); // latex 插件实例化 + this.#markdownParser = markdownParser || defaultMarkdownParser; // markdown 渲染工具 + /*---------- 默认配置项 END ----------*/ + } + + // notebook渲染成HTML的结果 + get notebookHTML() { + return this.#fragment; + } + + /** + * cells 渲染 + * 此处是 notebook 渲染的总入口 + * + * 每个 cell 由input和output两个模块组成; + * input 分为三类数据,即cell_type = markdown/code/raw。其中只有code会有output; + * output 处理详见 renderCommonCell 方法; + * + * @author 王志杰 + * @returns {DocumentFragment} 返回一个 DocumentFragment 对象 + */ + async render() { + try { + for (let cell of this.#cells) { + let node = null; + let { cell_type, source } = cell; + cell.source = typeof source === "string" ? source : source.join(""); + switch (cell_type) { + case "markdown": + node = await this.#renderMarkdownCell(cell); + break; + case "code": + node = await this.#renderCodeCell(cell); + break; + case "raw": + node = await this.#renderRawCell(cell); + break; + } + this.#fragment.appendChild(node); + } + } catch (error) { + console.error(error); + } + return this.#fragment; + } + + /** + * 数据渲染总模块,input和output的数据渲染都经由这里分发到具体的渲染模块 + * + * @param {string} param0 type-数据模块类型,所支持的类型为output_type全部类型‘ + * @param {object} param1 options-渲染模块所需的参数 + */ + async #renderCommonCell({ type, options }) { + // 对未设置的配置项,设置为全局默认配置对应的属性值 + options.trusted = options.trusted || this.#trusted; + options.sanitizer = options.sanitizer || this.#sanitizer; + options.shouldTypeset = options.shouldTypeset || this.#shouldTypeset; + options.latexTypesetter = options.latexTypesetter || this.#latexTypesetter; + options.markdownParser = options.markdownParser || this.#markdownParser; + + switch (type) { + case "text/html": + await renderHTML(options); + break; + case "markdown": + case "text/markdown": + await renderMarkdown(options); + break; + case "text/plain": + case "application/vnd.jupyter.stdout": + case "application/vnd.jupyter.stderr": + await renderText(options); + break; + case "text/latex": + await renderLatex(options); + break; + case "image/bmp": + case "image/png": + case "image/jpeg": + case "image/gif": + case "image/webp": + await renderImage(options); + break; + case "image/svg+xml": + await renderSVG(options); + break; + case "text/javascript": + case "application/javascript": + // 禁止输出 JavaScript + options.source = "JavaScript output is disabled in JupyterLab"; + await renderText(options); + break; + default: + break; + } + } + + /** + * 渲染markdown DOM + * @param {Object} cell + */ + async #renderMarkdownCell(cell) { + let { source, execution_count: executionCount } = cell; + let contentNode = document.createElement("div"); + await this.#renderCommonCell({ + type: "text/markdown", + options: { host: contentNode, source: source }, + }); + return this.#createContainerNode( + "inputMarkdown", + contentNode, + executionCount + ); + } + + /** + * 渲染Code DOM + * @param {Object} cell + */ + async #renderCodeCell(cell) { + let node = null; + let { source, outputs, execution_count: executionCount } = cell; + let contentNode = document.createElement("div"); + contentNode.className = + "lm-Widget p-Widget jp-Cell jp-CodeCell jp-Notebook-cell "; + createCodemirror(source, contentNode); // input代码块渲染 + node = this.#createContainerNode("inputCode", contentNode, executionCount); + await this.#renderOutputCell(outputs, contentNode.parentNode.parentNode); + + return node; + } + + async #renderRawCell(cell) { + let { source } = cell; + let node = document.createElement("div"); + await this.#renderCommonCell({ + type: "text/plain", + options: { host: node, source: source }, + }); + return node; + } + + /** + * 渲染 outputs + * @param {Array} outputs + */ + async #renderOutputCell(outputs, parentNode) { + if (!outputs || !outputs.length) return; + const OutputAreaNode = document.createElement("div"); + OutputAreaNode.className = + "lm-Widget jp-OutputArea jp-Cell-outputArea q-mt-sm"; + parentNode.appendChild(OutputAreaNode); + for (let output of outputs) { + let sources = []; + switch (output.output_type) { + case "stream": // 文本流输出 + sources = output.text; + for (const source of sources) { + let node = document.createElement("div"); + await this.#renderCommonCell({ + type: "application/vnd.jupyter." + output.name, + options: { host: node, source: source }, + }); + + OutputAreaNode.appendChild( + this.#createContainerNode( + "application/vnd.jupyter." + output.name, + node, + "" + ) + ); + } + break; + case "display_data": + case "execute_result": { + // 富文本输出 + const { data: outputData, execution_count: executionCount } = output; + const keys = Object.keys(outputData); + const key = keys[0]; + let source = outputData[key]; + if (!source) return; + let node = document.createElement("div"); + source = typeof source === "string" ? source : source.join("\n"); + await this.#renderCommonCell({ + type: key, + options: { host: node, source: source }, + }); + + OutputAreaNode.appendChild( + this.#createContainerNode(key, node, executionCount) + ); + break; + } + case "error": // 错误信息输出 + sources = output.traceback; + for (const source of sources) { + let node = document.createElement("div"); + await this.#renderCommonCell({ + type: "application/vnd.jupyter.stderr", + options: { host: node, source: source }, + }); + OutputAreaNode.appendChild( + this.#createContainerNode( + "application/vnd.jupyter.stderr", + node, + "" + ) + ); + } + break; + } + } + } + + #createContainerNode(type, contentNode, executionCount) { + let node = document.createElement("div"); + let areaNode = document.createElement("div"); + let promptNode = document.createElement("div"); + if (executionCount || executionCount === null) { + promptNode.innerText = `[${executionCount === null ? " " : executionCount + }]`; + } + // prompt class设置。prompt 样式分为input和output两种 + ["inputMarkdown", "inputCode"].includes(type) + ? (promptNode.className = + "lm-Widget p-Widget jp-InputPrompt jp-InputArea-prompt") + : (promptNode.className = + "lm-Widget p-Widget jp-OutputPrompt jp-OutputArea-prompt"); + switch (type) { + case "inputMarkdown": { + node.className = + "lm-Widget p-Widget jp-Cell jp-MarkdownCell jp-mod-rendered jp-Notebook-cell"; + areaNode.className = + "lm-Widget p-Widget jp-InputArea jp-Cell-inputArea"; + contentNode.className = + "lm-Widget p-Widget jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput"; + contentNode.setAttribute("data-mime-type", "text/markdown"); + break; + } + case "inputCode": { + node.className = + "lm-Widget p-Widget jp-Cell jp-CodeCell jp-mod-noOutputs jp-Notebook-cell"; + areaNode.className = + "lm-Widget p-Widget jp-InputArea jp-Cell-inputArea"; + contentNode.className = + "lm-Widget p-Widget jp-CodeMirrorEditor jp-Editor jp-InputArea-editor"; + break; + } + case "application/vnd.jupyter.stdout": { + node.className = "lm-Widget lm-Panel jp-OutputArea-child"; + areaNode.className = + "lm-Widget p-Widget lm-Panel p-Panel jp-OutputArea-child"; + contentNode.className = + "lm-Widget p-Widget jp-RenderedText jp-OutputArea-output"; + contentNode.setAttribute( + "data-mime-type", + "application/vnd.jupyter.stdout" + ); + break; + } + case "application/vnd.jupyter.stderr": { + node.className = "lm-Widget lm-Panel jp-OutputArea-child"; + areaNode.className = + "lm-Widget p-Widget lm-Panel p-Panel jp-OutputArea-child"; + contentNode.className = + "lm-Widget p-Widget jp-RenderedText jp-OutputArea-output"; + contentNode.setAttribute( + "data-mime-type", + "application/vnd.jupyter.stderr" + ); + break; + } + default: { + const typeClassMap = new Map([ + ["image/bmp", "jp-RenderedImage"], + ["image/png", "jp-RenderedImage"], + ["image/jpeg", "jp-RenderedImage"], + ["image/gif", "jp-RenderedImage"], + ["image/webp", "jp-RenderedImage"], + ["text/latex", "jp-RenderedLatex"], + ["image/svg+xml", "jp-RenderedSVG"], + ["text/markdown", "jp-RenderedHTMLCommon jp-RenderedHTML"], + ]); + + node.className = + "lm-Widget p-Widget lm-Panel p-Panel jp-OutputArea-child jp-OutputArea-executeResult"; + areaNode.className = + "lm-Widget p-Widget lm-Panel p-Panel jp-OutputArea-child"; + contentNode.className = `lm-Widget p-Widget ${typeClassMap.get(type) || "jp-RenderedHTMLCommon" + } jp-OutputArea-output`; + contentNode.setAttribute("data-mime-type", type); + break; + } + } + areaNode.appendChild(promptNode); + areaNode.appendChild(contentNode); + node.appendChild(areaNode); + + return node; + } +} diff --git a/utils/notebook/latex.js b/utils/notebook/latex.js new file mode 100644 index 0000000..e615730 --- /dev/null +++ b/utils/notebook/latex.js @@ -0,0 +1,194 @@ +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ +// Some magic for deferring mathematical expressions to MathJax +// by hiding them from the Markdown parser. +// Some of the code here is adapted with permission from Davide Cervone +// under the terms of the Apache2 license governing the MathJax project. +// Other minor modifications are also due to StackExchange and are used with +// permission. + +/** + * 本文件为 Jupyter lab 源码。 + * 用于 latex 字符渲染 + * + * 源码TS版:https://github.com/jupyterlab/jupyterlab/blob/master/packages/rendermime/src/latex.ts + */ + +const inline = "$"; // the inline math delimiter +// MATHSPLIT contains the pattern for math delimiters and special symbols +// needed for searching for math in the text input. +const MATHSPLIT = + /(\$\$?|\\(?:begin|end)\{[a-z]*\*?\}|\\[{}$]|[{}]|(?:\n\s*)+|@@\d+@@|\\\\(?:\(|\)|\[|\]))/i; +/** + * Break up the text into its component parts and search + * through them for math delimiters, braces, linebreaks, etc. + * Math delimiters must match and braces must balance. + * Don't allow math to pass through a double linebreak + * (which will be a paragraph). + */ +export function removeMath(text) { + const math = []; // stores math strings for later + let start = null; + let end = null; + let last = null; + let braces = 0; + let deTilde; + // Except for extreme edge cases, this should catch precisely those pieces of the markdown + // source that will later be turned into code spans. While MathJax will not TeXify code spans, + // we still have to consider them at this point; the following issue has happened several times: + // + // `$foo` and `$bar` are variables. --> $foo ` and `$bar are variables. + const hasCodeSpans = text.includes("`") || text.includes("~~~"); + if (hasCodeSpans) { + text = text + .replace(/~/g, "~T") + // note: the `fence` (three or more consecutive tildes or backticks) + // can be followed by an `info string` but this cannot include backticks, + // see specification: https://spec.commonmark.org/0.30/#info-string + .replace( + /^(?`{3,}|(~T){3,})[^`\n]*\n([\s\S]*?)^\k`*$/gm, + (wholematch) => wholematch.replace(/\$/g, "~D") + ) + .replace(/(^|[^\\])(`+)([^\n]*?[^`\n])\2(?!`)/gm, (wholematch) => + wholematch.replace(/\$/g, "~D") + ); + deTilde = (text) => { + return text.replace(/~([TD])/g, (wholematch, character) => + character === "T" ? "~" : inline + ); + }; + } else { + deTilde = (text) => { + return text; + }; + } + let blocks = text.replace(/\r\n?/g, "\n").split(MATHSPLIT); + for (let i = 1, m = blocks.length; i < m; i += 2) { + const block = blocks[i]; + if (block.charAt(0) === "@") { + // + // Things that look like our math markers will get + // stored and then retrieved along with the math. + // + blocks[i] = "@@" + math.length + "@@"; + math.push(block); + } else if (start !== null) { + // + // If we are in math, look for the end delimiter, + // but don't go past double line breaks, and + // and balance braces within the math. + // + if (block === end) { + if (braces) { + last = i; + } else { + blocks = processMath(start, i, deTilde, math, blocks); + start = null; + end = null; + last = null; + } + } else if (block.match(/\n.*\n/)) { + if (last !== null) { + i = last; + blocks = processMath(start, i, deTilde, math, blocks); + } + start = null; + end = null; + last = null; + braces = 0; + } else if (block === "{") { + braces++; + } else if (block === "}" && braces) { + braces--; + } + } else { + // + // Look for math start delimiters and when + // found, set up the end delimiter. + // + if (block === inline || block === "$$") { + start = i; + end = block; + braces = 0; + } else if (block === "\\\\(" || block === "\\\\[") { + start = i; + end = block.slice(-1) === "(" ? "\\\\)" : "\\\\]"; + braces = 0; + } else if (block.substr(1, 5) === "begin") { + start = i; + end = "\\end" + block.substr(6); + braces = 0; + } + } + } + if (start !== null && last !== null) { + blocks = processMath(start, last, deTilde, math, blocks); + start = null; + end = null; + last = null; + } + return { text: deTilde(blocks.join("")), math }; +} +/** + * Put back the math strings that were saved, + * and clear the math array (no need to keep it around). + */ +export function replaceMath(text, math) { + /** + * Replace a math placeholder with its corresponding group. + * The math delimiters "\\(", "\\[", "\\)" and "\\]" are replaced + * removing one backslash in order to be interpreted correctly by MathJax. + */ + const process = (match, n) => { + let group = math[n]; + if ( + group.substr(0, 3) === "\\\\(" && + group.substr(group.length - 3) === "\\\\)" + ) { + group = "\\(" + group.substring(3, group.length - 3) + "\\)"; + } else if ( + group.substr(0, 3) === "\\\\[" && + group.substr(group.length - 3) === "\\\\]" + ) { + group = "\\[" + group.substring(3, group.length - 3) + "\\]"; + } + return group; + }; + // Replace all the math group placeholders in the text + // with the saved strings. + return text.replace(/@@(\d+)@@/g, process); +} +/** + * Process math blocks. + * + * The math is in blocks i through j, so + * collect it into one block and clear the others. + * Replace &, <, and > by named entities. + * For IE, put
at the ends of comments since IE removes \n. + * Clear the current math positions and store the index of the + * math, then push the math string onto the storage array. + * The preProcess function is called on all blocks if it has been passed in + */ +function processMath(i, j, preProcess, math, blocks) { + let block = blocks + .slice(i, j + 1) + .join("") + .replace(/&/g, "&") // use HTML entity for & + .replace(//g, ">"); // use HTML entity for > + if (navigator && navigator.appName === "Microsoft Internet Explorer") { + block = block.replace(/(%[^\n]*)\n/g, "$1
\n"); + } + while (j > i) { + blocks[j] = ""; + j--; + } + blocks[i] = "@@" + math.length + "@@"; // replace the current block text with a unique tag to find later + if (preProcess) { + block = preProcess(block); + } + math.push(block); + return blocks; +} diff --git a/utils/notebook/lib/index.js b/utils/notebook/lib/index.js new file mode 100644 index 0000000..85c327c --- /dev/null +++ b/utils/notebook/lib/index.js @@ -0,0 +1,108 @@ +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ +/** + * @packageDocumentation + * @module mathjax2 + */ +import { PromiseDelegate } from '@lumino/coreutils'; +/** + * The MathJax Typesetter. + */ +export class MathJaxTypesetter { + /** + * Create a new MathJax typesetter. + */ + constructor(options) { + this._initPromise = new PromiseDelegate(); + this._initialized = false; + this._url = options.url; + this._config = options.config; + } + /** + * Typeset the math in a node. + * + * #### Notes + * MathJax schedules the typesetting asynchronously, + * but there are not currently any callbacks or Promises + * firing when it is done. + */ + typeset(node) { + if (!this._initialized) { + this._init(); + } + void this._initPromise.promise.then(() => { + MathJax.Hub.Queue(['Typeset', MathJax.Hub, node]); + try { + MathJax.Hub.Queue(['Require', MathJax.Ajax, '[MathJax]/extensions/TeX/AMSmath.js'], () => { + MathJax.InputJax.TeX.resetEquationNumbers(); + }); + } + catch (e) { + console.error('Error queueing resetEquationNumbers:', e); + } + }); + } + /** + * Initialize MathJax. + */ + _init() { + const head = document.getElementsByTagName('head')[0]; + const script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = `${this._url}?config=${this._config}&delayStartupUntil=configured`; + script.charset = 'utf-8'; + head.appendChild(script); + script.addEventListener('load', () => { + this._onLoad(); + }); + this._initialized = true; + } + /** + * Handle MathJax loading. + */ + _onLoad() { + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [ + ['$', '$'], + ['\\(', '\\)'] + ], + displayMath: [ + ['$$', '$$'], + ['\\[', '\\]'] + ], + processEscapes: true, + processEnvironments: true + }, + // Center justify equations in code and markdown cells. Elsewhere + // we use CSS to left justify single line equations in code cells. + displayAlign: 'center', + CommonHTML: { + linebreaks: { automatic: true } + }, + 'HTML-CSS': { + availableFonts: [], + imageFont: null, + preferredFont: null, + webFont: 'STIX-Web', + styles: { '.MathJax_Display': { margin: 0 } }, + linebreaks: { automatic: true } + }, + skipStartupTypeset: true, + messageStyle: 'none' + }); + MathJax.Hub.Register.StartupHook('End Config', () => { + var _a, _b, _c, _d, _e, _f; + // Disable `:hover span` styles which cause performance issues in Chromium browsers + // c-f https://github.com/jupyterlab/jupyterlab/issues/9757 + // Note that we cannot overwrite them in config earlier due to how `CombineConfig` + // is implemented in MathJax 2 (it does not allow removing styles, just expanding). + (_c = (_b = (_a = MathJax.Hub) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.MathEvents) === null || _c === void 0 ? true : delete _c.styles['.MathJax_Hover_Arrow:hover span']; + (_f = (_e = (_d = MathJax.Hub) === null || _d === void 0 ? void 0 : _d.config) === null || _e === void 0 ? void 0 : _e.MathMenu) === null || _f === void 0 ? true : delete _f.styles['.MathJax_MenuClose:hover span']; + }); + MathJax.Hub.Configured(); + this._initPromise.resolve(void 0); + } +} \ No newline at end of file diff --git a/utils/notebook/markdown.js b/utils/notebook/markdown.js new file mode 100644 index 0000000..9c3f592 --- /dev/null +++ b/utils/notebook/markdown.js @@ -0,0 +1,10 @@ +import markdown from "markdown-it"; + +const MD = markdown({ + html: true, + xhtmlOut: true, + breaks: true, + linkify: true, +}); + +export default MD; diff --git a/utils/notebook/renderers.js b/utils/notebook/renderers.js new file mode 100644 index 0000000..d502243 --- /dev/null +++ b/utils/notebook/renderers.js @@ -0,0 +1,701 @@ +/* eslint-disable no-func-assign */ +/* eslint-disable no-unused-vars */ +/* ----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * jupyter lab notebook output 渲染模块 + * 本模块基于 @jupyterlab\rendermime\lib\renderers.js 二次开发 + * 移除了部分功能,如:a 标签url处理,markdown 标题的自动生成对应链接等。 + * 此外还去除了所需传参:resolver、linkHandler、translator + * + * 源码TS版:https://github.com/jupyterlab/jupyterlab/blob/master/packages/rendermime/src/renderers.ts + * + */ + +import { removeMath, replaceMath } from "./latex"; +import { URLExt } from "@jupyterlab/coreutils"; +import escape from "lodash.escape"; +/** + * Render HTML into a host node. + * + * @param options - The options for rendering. + * + * @returns A promise which resolves when rendering is complete. + */ +export function renderHTML(options) { + // Unpack the options. + let { host, source, trusted, sanitizer, shouldTypeset, latexTypesetter } = + options; + let originalSource = source; + // Bail early if the source is empty. + if (!source) { + host.textContent = ""; + return Promise.resolve(undefined); + } + // Sanitize the source if it is not trusted. This removes all + // `