Spaces:
Runtime error
Runtime error
Javier Real
commited on
Commit
·
ee84cd3
1
Parent(s):
9d07038
Project
Browse files- .dockerignore +22 -0
- .env.example +12 -0
- .gitignore +420 -0
- Dockerfile +51 -0
- README.md +3 -2
- app.py +76 -0
- convert_markdown_to_html.js +56 -0
- favicon.ico +0 -0
- markdown_generator.py +106 -0
- markdowns/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.md +41 -0
- markdowns/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.md +56 -0
- markdowns/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.md +57 -0
- markdowns/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.md +55 -0
- mindmap_service.py +160 -0
- package-lock.json +1214 -0
- package.json +7 -0
- project-title.txt +1 -0
- requirements.txt +4 -0
- rollback.py +33 -0
- static/assets/logo.png +0 -0
- static/css/styles.css +165 -0
- templates/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.html +45 -0
- templates/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.html +45 -0
- templates/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.html +45 -0
- templates/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.html +45 -0
- templates/index.html +196 -0
.dockerignore
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.env
|
| 2 |
+
__pycache__
|
| 3 |
+
*.pyc
|
| 4 |
+
*.pyo
|
| 5 |
+
*.pyd
|
| 6 |
+
.Python
|
| 7 |
+
build/
|
| 8 |
+
develop-eggs/
|
| 9 |
+
dist/
|
| 10 |
+
downloads/
|
| 11 |
+
eggs/
|
| 12 |
+
.eggs/
|
| 13 |
+
lib/
|
| 14 |
+
lib64/
|
| 15 |
+
parts/
|
| 16 |
+
sdist/
|
| 17 |
+
var/
|
| 18 |
+
wheels/
|
| 19 |
+
*.egg-info/
|
| 20 |
+
.installed.cfg
|
| 21 |
+
*.egg
|
| 22 |
+
MANIFEST
|
.env.example
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
API_URL = https://api.openai.com/v1
|
| 2 |
+
API_KEY= <HERE_GOES_YOUR_OPENAI_API_KEY>
|
| 3 |
+
OMDB_API_KEY= <HERE_GOES_YOUR_OMDB_API_KEY>
|
| 4 |
+
OPENAI_ASSISTANT_ID=<HERE_GOES_YOUR_OPENAI_ASSISTANT_ID>
|
| 5 |
+
OMDB_URL = https://www.omdbapi.com/
|
| 6 |
+
X-RapidAPI-Key = <HERE_GOES_YOUR_X_RAPID_API_KEY>
|
| 7 |
+
X-RapidAPI-Host = coinranking1.p.rapidapi.com
|
| 8 |
+
COIN_RANKING_HOST = https://coinranking1.p.rapidapi.com/
|
| 9 |
+
DB_USER = <HERE_GOES_YOUR_DB_USERNAME>
|
| 10 |
+
DB_PASS = <HERE_GOES_YOUR_DB_PASSWORD>
|
| 11 |
+
DB_HOST = <HERE_GOES_YOUR_DB_HOST_NAME>
|
| 12 |
+
DATABASE = <HERE_GOES_YOUR_DATABASE_NAME>
|
.gitignore
ADDED
|
@@ -0,0 +1,420 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### dotenv ###
|
| 2 |
+
.env
|
| 3 |
+
|
| 4 |
+
### Flask ###
|
| 5 |
+
instance/*
|
| 6 |
+
!instance/.gitignore
|
| 7 |
+
.webassets-cache
|
| 8 |
+
|
| 9 |
+
### Flask.Python Stack ###
|
| 10 |
+
# Byte-compiled / optimized / DLL files
|
| 11 |
+
__pycache__/
|
| 12 |
+
*.py[cod]
|
| 13 |
+
*$py.class
|
| 14 |
+
|
| 15 |
+
# C extensions
|
| 16 |
+
*.so
|
| 17 |
+
|
| 18 |
+
# Distribution / packaging
|
| 19 |
+
.Python
|
| 20 |
+
build/
|
| 21 |
+
develop-eggs/
|
| 22 |
+
dist/
|
| 23 |
+
downloads/
|
| 24 |
+
eggs/
|
| 25 |
+
.eggs/
|
| 26 |
+
lib/
|
| 27 |
+
lib64/
|
| 28 |
+
parts/
|
| 29 |
+
sdist/
|
| 30 |
+
var/
|
| 31 |
+
wheels/
|
| 32 |
+
share/python-wheels/
|
| 33 |
+
*.egg-info/
|
| 34 |
+
.installed.cfg
|
| 35 |
+
*.egg
|
| 36 |
+
MANIFEST
|
| 37 |
+
|
| 38 |
+
# PyInstaller
|
| 39 |
+
# Usually these files are written by a python script from a template
|
| 40 |
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
| 41 |
+
*.manifest
|
| 42 |
+
*.spec
|
| 43 |
+
|
| 44 |
+
# Installer logs
|
| 45 |
+
pip-log.txt
|
| 46 |
+
pip-delete-this-directory.txt
|
| 47 |
+
|
| 48 |
+
# Unit test / coverage reports
|
| 49 |
+
htmlcov/
|
| 50 |
+
.tox/
|
| 51 |
+
.nox/
|
| 52 |
+
.coverage
|
| 53 |
+
.coverage.*
|
| 54 |
+
.cache
|
| 55 |
+
nosetests.xml
|
| 56 |
+
coverage.xml
|
| 57 |
+
*.cover
|
| 58 |
+
*.py,cover
|
| 59 |
+
.hypothesis/
|
| 60 |
+
.pytest_cache/
|
| 61 |
+
cover/
|
| 62 |
+
|
| 63 |
+
# Translations
|
| 64 |
+
*.mo
|
| 65 |
+
*.pot
|
| 66 |
+
|
| 67 |
+
# Django stuff:
|
| 68 |
+
*.log
|
| 69 |
+
local_settings.py
|
| 70 |
+
db.sqlite3
|
| 71 |
+
db.sqlite3-journal
|
| 72 |
+
|
| 73 |
+
# Flask stuff:
|
| 74 |
+
instance/
|
| 75 |
+
|
| 76 |
+
# Scrapy stuff:
|
| 77 |
+
.scrapy
|
| 78 |
+
|
| 79 |
+
# Sphinx documentation
|
| 80 |
+
docs/_build/
|
| 81 |
+
|
| 82 |
+
# PyBuilder
|
| 83 |
+
.pybuilder/
|
| 84 |
+
target/
|
| 85 |
+
|
| 86 |
+
# Jupyter Notebook
|
| 87 |
+
.ipynb_checkpoints
|
| 88 |
+
|
| 89 |
+
# IPython
|
| 90 |
+
profile_default/
|
| 91 |
+
ipython_config.py
|
| 92 |
+
|
| 93 |
+
# pyenv
|
| 94 |
+
# For a library or package, you might want to ignore these files since the code is
|
| 95 |
+
# intended to run in multiple environments; otherwise, check them in:
|
| 96 |
+
# .python-version
|
| 97 |
+
|
| 98 |
+
# pipenv
|
| 99 |
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
| 100 |
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
| 101 |
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
| 102 |
+
# install all needed dependencies.
|
| 103 |
+
#Pipfile.lock
|
| 104 |
+
|
| 105 |
+
# poetry
|
| 106 |
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
| 107 |
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
| 108 |
+
# commonly ignored for libraries.
|
| 109 |
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
| 110 |
+
#poetry.lock
|
| 111 |
+
|
| 112 |
+
# pdm
|
| 113 |
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
| 114 |
+
#pdm.lock
|
| 115 |
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
| 116 |
+
# in version control.
|
| 117 |
+
# https://pdm.fming.dev/#use-with-ide
|
| 118 |
+
.pdm.toml
|
| 119 |
+
|
| 120 |
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
| 121 |
+
__pypackages__/
|
| 122 |
+
|
| 123 |
+
# Celery stuff
|
| 124 |
+
celerybeat-schedule
|
| 125 |
+
celerybeat.pid
|
| 126 |
+
|
| 127 |
+
# SageMath parsed files
|
| 128 |
+
*.sage.py
|
| 129 |
+
|
| 130 |
+
# Environments
|
| 131 |
+
.venv
|
| 132 |
+
env/
|
| 133 |
+
venv/
|
| 134 |
+
ENV/
|
| 135 |
+
env.bak/
|
| 136 |
+
venv.bak/
|
| 137 |
+
|
| 138 |
+
# Spyder project settings
|
| 139 |
+
.spyderproject
|
| 140 |
+
.spyproject
|
| 141 |
+
|
| 142 |
+
# Rope project settings
|
| 143 |
+
.ropeproject
|
| 144 |
+
|
| 145 |
+
# mkdocs documentation
|
| 146 |
+
/site
|
| 147 |
+
|
| 148 |
+
# mypy
|
| 149 |
+
.mypy_cache/
|
| 150 |
+
.dmypy.json
|
| 151 |
+
dmypy.json
|
| 152 |
+
|
| 153 |
+
# Pyre type checker
|
| 154 |
+
.pyre/
|
| 155 |
+
|
| 156 |
+
# pytype static type analyzer
|
| 157 |
+
.pytype/
|
| 158 |
+
|
| 159 |
+
# Cython debug symbols
|
| 160 |
+
cython_debug/
|
| 161 |
+
|
| 162 |
+
# PyCharm
|
| 163 |
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
| 164 |
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
| 165 |
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
| 166 |
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
| 167 |
+
#.idea/
|
| 168 |
+
|
| 169 |
+
### Node ###
|
| 170 |
+
# Logs
|
| 171 |
+
logs
|
| 172 |
+
npm-debug.log*
|
| 173 |
+
yarn-debug.log*
|
| 174 |
+
yarn-error.log*
|
| 175 |
+
lerna-debug.log*
|
| 176 |
+
.pnpm-debug.log*
|
| 177 |
+
|
| 178 |
+
# Diagnostic reports (https://nodejs.org/api/report.html)
|
| 179 |
+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
| 180 |
+
|
| 181 |
+
# Runtime data
|
| 182 |
+
pids
|
| 183 |
+
*.pid
|
| 184 |
+
*.seed
|
| 185 |
+
*.pid.lock
|
| 186 |
+
|
| 187 |
+
# Directory for instrumented libs generated by jscoverage/JSCover
|
| 188 |
+
lib-cov
|
| 189 |
+
|
| 190 |
+
# Coverage directory used by tools like istanbul
|
| 191 |
+
coverage
|
| 192 |
+
*.lcov
|
| 193 |
+
|
| 194 |
+
# nyc test coverage
|
| 195 |
+
.nyc_output
|
| 196 |
+
|
| 197 |
+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
| 198 |
+
.grunt
|
| 199 |
+
|
| 200 |
+
# Bower dependency directory (https://bower.io/)
|
| 201 |
+
bower_components
|
| 202 |
+
|
| 203 |
+
# node-waf configuration
|
| 204 |
+
.lock-wscript
|
| 205 |
+
|
| 206 |
+
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
| 207 |
+
build/Release
|
| 208 |
+
|
| 209 |
+
# Dependency directories
|
| 210 |
+
node_modules/
|
| 211 |
+
jspm_packages/
|
| 212 |
+
|
| 213 |
+
# Snowpack dependency directory (https://snowpack.dev/)
|
| 214 |
+
web_modules/
|
| 215 |
+
|
| 216 |
+
# TypeScript cache
|
| 217 |
+
*.tsbuildinfo
|
| 218 |
+
|
| 219 |
+
# Optional npm cache directory
|
| 220 |
+
.npm
|
| 221 |
+
|
| 222 |
+
# Optional eslint cache
|
| 223 |
+
.eslintcache
|
| 224 |
+
|
| 225 |
+
# Optional stylelint cache
|
| 226 |
+
.stylelintcache
|
| 227 |
+
|
| 228 |
+
# Microbundle cache
|
| 229 |
+
.rpt2_cache/
|
| 230 |
+
.rts2_cache_cjs/
|
| 231 |
+
.rts2_cache_es/
|
| 232 |
+
.rts2_cache_umd/
|
| 233 |
+
|
| 234 |
+
# Optional REPL history
|
| 235 |
+
.node_repl_history
|
| 236 |
+
|
| 237 |
+
# Output of 'npm pack'
|
| 238 |
+
*.tgz
|
| 239 |
+
|
| 240 |
+
# Yarn Integrity file
|
| 241 |
+
.yarn-integrity
|
| 242 |
+
|
| 243 |
+
# dotenv environment variable files
|
| 244 |
+
.env.development.local
|
| 245 |
+
.env.test.local
|
| 246 |
+
.env.production.local
|
| 247 |
+
.env.local
|
| 248 |
+
|
| 249 |
+
# parcel-bundler cache (https://parceljs.org/)
|
| 250 |
+
.parcel-cache
|
| 251 |
+
|
| 252 |
+
# Next.js build output
|
| 253 |
+
.next
|
| 254 |
+
out
|
| 255 |
+
|
| 256 |
+
# Nuxt.js build / generate output
|
| 257 |
+
.nuxt
|
| 258 |
+
dist
|
| 259 |
+
|
| 260 |
+
# Gatsby files
|
| 261 |
+
.cache/
|
| 262 |
+
# Comment in the public line in if your project uses Gatsby and not Next.js
|
| 263 |
+
# https://nextjs.org/blog/next-9-1#public-directory-support
|
| 264 |
+
# public
|
| 265 |
+
|
| 266 |
+
# vuepress build output
|
| 267 |
+
.vuepress/dist
|
| 268 |
+
|
| 269 |
+
# vuepress v2.x temp and cache directory
|
| 270 |
+
.temp
|
| 271 |
+
|
| 272 |
+
# Docusaurus cache and generated files
|
| 273 |
+
.docusaurus
|
| 274 |
+
|
| 275 |
+
# Serverless directories
|
| 276 |
+
.serverless/
|
| 277 |
+
|
| 278 |
+
# FuseBox cache
|
| 279 |
+
.fusebox/
|
| 280 |
+
|
| 281 |
+
# DynamoDB Local files
|
| 282 |
+
.dynamodb/
|
| 283 |
+
|
| 284 |
+
# TernJS port file
|
| 285 |
+
.tern-port
|
| 286 |
+
|
| 287 |
+
# Stores VSCode versions used for testing VSCode extensions
|
| 288 |
+
.vscode-test
|
| 289 |
+
|
| 290 |
+
# yarn v2
|
| 291 |
+
.yarn/cache
|
| 292 |
+
.yarn/unplugged
|
| 293 |
+
.yarn/build-state.yml
|
| 294 |
+
.yarn/install-state.gz
|
| 295 |
+
.pnp.*
|
| 296 |
+
|
| 297 |
+
### Node Patch ###
|
| 298 |
+
# Serverless Webpack directories
|
| 299 |
+
.webpack/
|
| 300 |
+
|
| 301 |
+
# Optional stylelint cache
|
| 302 |
+
|
| 303 |
+
# SvelteKit build / generate output
|
| 304 |
+
.svelte-kit
|
| 305 |
+
|
| 306 |
+
### Python ###
|
| 307 |
+
# Byte-compiled / optimized / DLL files
|
| 308 |
+
|
| 309 |
+
# C extensions
|
| 310 |
+
|
| 311 |
+
# Distribution / packaging
|
| 312 |
+
|
| 313 |
+
# PyInstaller
|
| 314 |
+
# Usually these files are written by a python script from a template
|
| 315 |
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
| 316 |
+
|
| 317 |
+
# Installer logs
|
| 318 |
+
|
| 319 |
+
# Unit test / coverage reports
|
| 320 |
+
|
| 321 |
+
# Translations
|
| 322 |
+
|
| 323 |
+
# Django stuff:
|
| 324 |
+
|
| 325 |
+
# Flask stuff:
|
| 326 |
+
|
| 327 |
+
# Scrapy stuff:
|
| 328 |
+
|
| 329 |
+
# Sphinx documentation
|
| 330 |
+
|
| 331 |
+
# PyBuilder
|
| 332 |
+
|
| 333 |
+
# Jupyter Notebook
|
| 334 |
+
|
| 335 |
+
# IPython
|
| 336 |
+
|
| 337 |
+
# pyenv
|
| 338 |
+
# For a library or package, you might want to ignore these files since the code is
|
| 339 |
+
# intended to run in multiple environments; otherwise, check them in:
|
| 340 |
+
# .python-version
|
| 341 |
+
|
| 342 |
+
# pipenv
|
| 343 |
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
| 344 |
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
| 345 |
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
| 346 |
+
# install all needed dependencies.
|
| 347 |
+
|
| 348 |
+
# poetry
|
| 349 |
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
| 350 |
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
| 351 |
+
# commonly ignored for libraries.
|
| 352 |
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
| 353 |
+
|
| 354 |
+
# pdm
|
| 355 |
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
| 356 |
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
| 357 |
+
# in version control.
|
| 358 |
+
# https://pdm.fming.dev/#use-with-ide
|
| 359 |
+
|
| 360 |
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
| 361 |
+
|
| 362 |
+
# Celery stuff
|
| 363 |
+
|
| 364 |
+
# SageMath parsed files
|
| 365 |
+
|
| 366 |
+
# Environments
|
| 367 |
+
|
| 368 |
+
# Spyder project settings
|
| 369 |
+
|
| 370 |
+
# Rope project settings
|
| 371 |
+
|
| 372 |
+
# mkdocs documentation
|
| 373 |
+
|
| 374 |
+
# mypy
|
| 375 |
+
|
| 376 |
+
# Pyre type checker
|
| 377 |
+
|
| 378 |
+
# pytype static type analyzer
|
| 379 |
+
|
| 380 |
+
# Cython debug symbols
|
| 381 |
+
|
| 382 |
+
# PyCharm
|
| 383 |
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
| 384 |
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
| 385 |
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
| 386 |
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
| 387 |
+
|
| 388 |
+
### Python Patch ###
|
| 389 |
+
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration
|
| 390 |
+
poetry.toml
|
| 391 |
+
|
| 392 |
+
# ruff
|
| 393 |
+
.ruff_cache/
|
| 394 |
+
|
| 395 |
+
# LSP config files
|
| 396 |
+
pyrightconfig.json
|
| 397 |
+
|
| 398 |
+
### PythonVanilla ###
|
| 399 |
+
# Byte-compiled / optimized / DLL files
|
| 400 |
+
|
| 401 |
+
# C extensions
|
| 402 |
+
|
| 403 |
+
# Distribution / packaging
|
| 404 |
+
|
| 405 |
+
# Installer logs
|
| 406 |
+
|
| 407 |
+
# Unit test / coverage reports
|
| 408 |
+
|
| 409 |
+
# Translations
|
| 410 |
+
|
| 411 |
+
# pyenv
|
| 412 |
+
# For a library or package, you might want to ignore these files since the code is
|
| 413 |
+
# intended to run in multiple environments; otherwise, check them in:
|
| 414 |
+
# .python-version
|
| 415 |
+
|
| 416 |
+
# pipenv
|
| 417 |
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
| 418 |
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
| 419 |
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
| 420 |
+
# install all needed dependencies.
|
Dockerfile
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# docker build -t map-master .
|
| 2 |
+
# cd Documents/gen_ai_course_project/map-master
|
| 3 |
+
# docker run -p 5000:7860 --env-file .env map-master
|
| 4 |
+
# Luego ir a http://localhost:5000 o http://192.168.1.91:7860
|
| 5 |
+
# Crea un mapa mental sobre Daredevil
|
| 6 |
+
|
| 7 |
+
FROM python:3.9-slim
|
| 8 |
+
|
| 9 |
+
RUN apt-get update && apt-get install -y nodejs npm
|
| 10 |
+
# Crear un nuevo usuario "user" con el ID de usuario 1000
|
| 11 |
+
RUN useradd -m -u 1000 user
|
| 12 |
+
|
| 13 |
+
# Cambiar al usuario "user"
|
| 14 |
+
USER user
|
| 15 |
+
|
| 16 |
+
# Configurar el directorio de trabajo y las variables de entorno
|
| 17 |
+
ENV HOME=/home/user \
|
| 18 |
+
PATH=/home/user/.local/bin:$PATH
|
| 19 |
+
WORKDIR $HOME/app
|
| 20 |
+
|
| 21 |
+
# Actualizar pip e instalar las dependencias de Python
|
| 22 |
+
RUN pip install --no-cache-dir --upgrade pip
|
| 23 |
+
|
| 24 |
+
# Copiar el archivo requirements.txt e instalar dependencias
|
| 25 |
+
COPY --chown=user requirements.txt .
|
| 26 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 27 |
+
|
| 28 |
+
# Copiar package.json y package-lock.json
|
| 29 |
+
COPY --chown=user package*.json ./
|
| 30 |
+
|
| 31 |
+
# Ajustar permisos para evitar errores de acceso
|
| 32 |
+
USER root
|
| 33 |
+
RUN chown -R user:user /home/user/app
|
| 34 |
+
|
| 35 |
+
# Volver al usuario "user" para instalar las dependencias de npm
|
| 36 |
+
USER user
|
| 37 |
+
RUN npm install
|
| 38 |
+
|
| 39 |
+
# Copiar el resto del código de la aplicación
|
| 40 |
+
COPY --chown=user . $HOME/app
|
| 41 |
+
|
| 42 |
+
# Crear y establecer permisos para el directorio de markdowns
|
| 43 |
+
RUN mkdir -p $HOME/app/markdowns
|
| 44 |
+
RUN chmod 777 $HOME/app/markdowns
|
| 45 |
+
|
| 46 |
+
# Exponer el puerto 7860
|
| 47 |
+
EXPOSE 7860
|
| 48 |
+
|
| 49 |
+
# Comando para ejecutar la aplicación usando Gunicorn
|
| 50 |
+
CMD ["gunicorn", "-b", "0.0.0.0:7860", "app:app"]
|
| 51 |
+
|
README.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
| 1 |
---
|
| 2 |
title: Map Master
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
colorTo: green
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
---
|
| 2 |
title: Map Master
|
| 3 |
+
emoji: 🌍
|
| 4 |
+
colorFrom: pink
|
| 5 |
colorTo: green
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
+
license: apache-2.0
|
| 9 |
---
|
| 10 |
|
| 11 |
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
app.py
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from flask import Flask, request, render_template, jsonify, send_from_directory
|
| 2 |
+
from mindmap_service import MindMapService
|
| 3 |
+
from markdown_generator import MarkdownGenerator
|
| 4 |
+
import os
|
| 5 |
+
import re
|
| 6 |
+
|
| 7 |
+
app = Flask(__name__)
|
| 8 |
+
markdown_generator = MarkdownGenerator()
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
@app.route('/')
|
| 12 |
+
def index():
|
| 13 |
+
return render_template('index.html')
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
@app.route('/send_message', methods=['POST'])
|
| 17 |
+
def send_message():
|
| 18 |
+
user_input = request.form['message']
|
| 19 |
+
markdown, messages = markdown_generator.send_message(user_input)
|
| 20 |
+
response = {'markdown': markdown, 'messages': messages}
|
| 21 |
+
return jsonify(response)
|
| 22 |
+
|
| 23 |
+
# Nueva ruta para servir los archivos HTML generados
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
@app.route('/templates/<path:filename>')
|
| 27 |
+
def serve_page(filename):
|
| 28 |
+
return send_from_directory('templates', filename)
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
@app.route('/get_maps', methods=['GET'])
|
| 32 |
+
def get_maps():
|
| 33 |
+
maps = []
|
| 34 |
+
for filename in os.listdir('templates'):
|
| 35 |
+
if filename != 'index.html' and filename.endswith('.html'):
|
| 36 |
+
with open(os.path.join('templates', filename), 'r', encoding='utf-8') as f:
|
| 37 |
+
content = f.read()
|
| 38 |
+
title_match = re.search(r"<title>(.*?)</title>", content)
|
| 39 |
+
title = title_match.group(
|
| 40 |
+
1) if title_match else os.path.splitext(filename)[0]
|
| 41 |
+
maps.append({'title': title, 'filename': filename})
|
| 42 |
+
return jsonify({'maps': maps})
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
@app.route('/delete_map/<filename>', methods=['DELETE'])
|
| 46 |
+
def delete_map(filename):
|
| 47 |
+
try:
|
| 48 |
+
html_path = os.path.join('templates', filename)
|
| 49 |
+
markdown_path = os.path.join(
|
| 50 |
+
'markdowns', f"{os.path.splitext(filename)[0]}.md")
|
| 51 |
+
|
| 52 |
+
if os.path.exists(html_path):
|
| 53 |
+
os.remove(html_path)
|
| 54 |
+
if os.path.exists(markdown_path):
|
| 55 |
+
os.remove(markdown_path)
|
| 56 |
+
mindmap_service = MindMapService()
|
| 57 |
+
mindmap_service.generate_menu()
|
| 58 |
+
return jsonify({'success': True})
|
| 59 |
+
except Exception as e:
|
| 60 |
+
return jsonify({'success': False, 'error': str(e)})
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
@app.route('/regenerate_content', methods=['POST'])
|
| 64 |
+
def regenerate_content():
|
| 65 |
+
try:
|
| 66 |
+
mindmap_service = MindMapService()
|
| 67 |
+
mindmap_service.convert_markdown_to_html()
|
| 68 |
+
mindmap_service.style_htmls()
|
| 69 |
+
mindmap_service.generate_menu()
|
| 70 |
+
return jsonify({'success': True})
|
| 71 |
+
except Exception as e:
|
| 72 |
+
return jsonify({'success': False, 'error': str(e)})
|
| 73 |
+
|
| 74 |
+
|
| 75 |
+
if __name__ == '__main__':
|
| 76 |
+
app.run(host='0.0.0.0', port=7860, debug=False)
|
convert_markdown_to_html.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const fs = require('fs');
|
| 2 |
+
const path = require('path');
|
| 3 |
+
const { Transformer } = require('markmap-lib');
|
| 4 |
+
const { fillTemplate } = require('markmap-render');
|
| 5 |
+
const yamlFront = require('yaml-front-matter');
|
| 6 |
+
|
| 7 |
+
const markdownDir = path.join(__dirname, 'markdowns');
|
| 8 |
+
const outputDir = path.join(__dirname, 'templates');
|
| 9 |
+
|
| 10 |
+
const transformer = new Transformer();
|
| 11 |
+
|
| 12 |
+
function convertMarkdownToHtml(markdown, title) {
|
| 13 |
+
const { root, features } = transformer.transform(markdown);
|
| 14 |
+
const keys = Object.keys(features);
|
| 15 |
+
const assets = transformer.getAssets(keys);
|
| 16 |
+
let html = fillTemplate(root, assets);
|
| 17 |
+
|
| 18 |
+
// Insert the title into the HTML
|
| 19 |
+
html = html.replace('<title>Markmap</title>', `<title>${title}</title>`);
|
| 20 |
+
return html;
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
fs.readdir(markdownDir, (err, files) => {
|
| 24 |
+
if (err) {
|
| 25 |
+
return console.error('Unable to scan directory:', err);
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
files.forEach((file) => {
|
| 29 |
+
if (path.extname(file) === '.md') {
|
| 30 |
+
const markdownPath = path.join(markdownDir, file);
|
| 31 |
+
const outputFilePath = path.join(outputDir, path.basename(file, '.md') + '.html');
|
| 32 |
+
|
| 33 |
+
fs.readFile(markdownPath, 'utf8', (err, markdown) => {
|
| 34 |
+
if (err) {
|
| 35 |
+
return console.error('Unable to read file:', err);
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
// Extract YAML front matter and the content
|
| 39 |
+
const parsedMarkdown = yamlFront.loadFront(markdown);
|
| 40 |
+
|
| 41 |
+
const title = parsedMarkdown.markmap.title || 'Document';
|
| 42 |
+
const content = parsedMarkdown.__content;
|
| 43 |
+
|
| 44 |
+
const html = convertMarkdownToHtml(content, title);
|
| 45 |
+
|
| 46 |
+
fs.writeFile(outputFilePath, html, (err) => {
|
| 47 |
+
if (err) {
|
| 48 |
+
return console.error('Unable to write HTML file:', err);
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
console.log(`HTML file generated: ${outputFilePath}`);
|
| 52 |
+
});
|
| 53 |
+
});
|
| 54 |
+
}
|
| 55 |
+
});
|
| 56 |
+
});
|
favicon.ico
ADDED
|
|
markdown_generator.py
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from openai import OpenAI
|
| 2 |
+
from dotenv import load_dotenv
|
| 3 |
+
import os
|
| 4 |
+
import re
|
| 5 |
+
import hashlib
|
| 6 |
+
from mindmap_service import MindMapService
|
| 7 |
+
|
| 8 |
+
load_dotenv()
|
| 9 |
+
|
| 10 |
+
api_key = os.getenv('OPENAI_API_KEY')
|
| 11 |
+
assistant_id = os.getenv('OPENAI_ASSISTANT_ID')
|
| 12 |
+
client = OpenAI(api_key=api_key)
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class MarkdownGenerator:
|
| 16 |
+
def __init__(self):
|
| 17 |
+
self.thread = client.beta.threads.create()
|
| 18 |
+
|
| 19 |
+
def send_message(self, user_input):
|
| 20 |
+
# Verificar y cancelar cualquier ejecución activa antes de añadir un nuevo mensaje
|
| 21 |
+
self.cancel_active_run()
|
| 22 |
+
|
| 23 |
+
# Añadir un nuevo mensaje al hilo
|
| 24 |
+
message = client.beta.threads.messages.create(
|
| 25 |
+
thread_id=self.thread.id,
|
| 26 |
+
role="user",
|
| 27 |
+
content=user_input
|
| 28 |
+
)
|
| 29 |
+
|
| 30 |
+
run = client.beta.threads.runs.create_and_poll(
|
| 31 |
+
thread_id=self.thread.id,
|
| 32 |
+
assistant_id=assistant_id
|
| 33 |
+
)
|
| 34 |
+
|
| 35 |
+
if run.status == 'completed':
|
| 36 |
+
messages = client.beta.threads.messages.list(
|
| 37 |
+
thread_id=self.thread.id
|
| 38 |
+
)
|
| 39 |
+
markdown = self.__extract_markdown(messages)
|
| 40 |
+
if markdown and "---\nmarkmap" in markdown:
|
| 41 |
+
# Guardar el markdown solo si contiene una cabecera y cuerpo válidos
|
| 42 |
+
self.save_markdown(user_input, markdown)
|
| 43 |
+
|
| 44 |
+
return markdown, self.__serialize_messages(messages)
|
| 45 |
+
else:
|
| 46 |
+
return None, run.status
|
| 47 |
+
|
| 48 |
+
def cancel_active_run(self):
|
| 49 |
+
runs = client.beta.threads.runs.list(thread_id=self.thread.id)
|
| 50 |
+
for run in runs.data:
|
| 51 |
+
if run.status == 'active':
|
| 52 |
+
client.beta.threads.runs.cancel(run_id=run.id)
|
| 53 |
+
|
| 54 |
+
def __extract_markdown(self, messages):
|
| 55 |
+
text = ""
|
| 56 |
+
for element in messages.data:
|
| 57 |
+
for content in element.content:
|
| 58 |
+
if content.type == 'text':
|
| 59 |
+
text += content.text.value + "\n"
|
| 60 |
+
|
| 61 |
+
if not text:
|
| 62 |
+
print("No text content found in messages.")
|
| 63 |
+
return None
|
| 64 |
+
|
| 65 |
+
# Extraer el contenido de la cabecera entre ---
|
| 66 |
+
header_pattern = r"---\n([\s\S]*?)\n---"
|
| 67 |
+
header_match = re.search(header_pattern, text)
|
| 68 |
+
header = header_match.group(0) if header_match else ""
|
| 69 |
+
|
| 70 |
+
# Extraer el contenido entre los delimitadores <!--midmap-start--> y <!--midmap-end-->
|
| 71 |
+
body_pattern = r"<!--midmap-start-->([\s\S]*?)<!--midmap-end-->"
|
| 72 |
+
body_match = re.search(body_pattern, text)
|
| 73 |
+
body = body_match.group(1).strip() if body_match else ""
|
| 74 |
+
|
| 75 |
+
if header and body:
|
| 76 |
+
return f"{header}\n{body}"
|
| 77 |
+
return text if text else None
|
| 78 |
+
|
| 79 |
+
def __serialize_messages(self, messages):
|
| 80 |
+
serialized_messages = []
|
| 81 |
+
for element in messages.data:
|
| 82 |
+
message_content = []
|
| 83 |
+
for content in element.content:
|
| 84 |
+
if content.type == 'text':
|
| 85 |
+
message_content.append(content.text.value)
|
| 86 |
+
serialized_messages.append({
|
| 87 |
+
'role': element.role,
|
| 88 |
+
'content': message_content
|
| 89 |
+
})
|
| 90 |
+
return serialized_messages
|
| 91 |
+
|
| 92 |
+
def save_markdown(self, user_input, markdown):
|
| 93 |
+
# Reemplazar espacios en el nombre del archivo
|
| 94 |
+
hash_object = hashlib.sha256(user_input.encode())
|
| 95 |
+
filename = f"markdowns/{hash_object.hexdigest()}.md"
|
| 96 |
+
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
| 97 |
+
with open(filename, 'w', encoding='utf-8') as f:
|
| 98 |
+
f.write(markdown)
|
| 99 |
+
# Ejecutar los scripts en el orden especificado
|
| 100 |
+
self.regenerate_content()
|
| 101 |
+
|
| 102 |
+
def regenerate_content(self):
|
| 103 |
+
service = MindMapService()
|
| 104 |
+
service.convert_markdown_to_html()
|
| 105 |
+
service.style_htmls()
|
| 106 |
+
service.generate_menu()
|
markdowns/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
markmap:
|
| 3 |
+
title: Impresionismo Español
|
| 4 |
+
maxWidth: 300
|
| 5 |
+
embedAssets: true
|
| 6 |
+
extraJs:
|
| 7 |
+
- npm:katex/dist/contrib/mhchem.min.js
|
| 8 |
+
---
|
| 9 |
+
# Impresionismo Español
|
| 10 |
+
|
| 11 |
+
## Contexto Histórico
|
| 12 |
+
- Finales del siglo XIX
|
| 13 |
+
- Influencias Francesas
|
| 14 |
+
|
| 15 |
+
## Características
|
| 16 |
+
- Uso de la luz y el color
|
| 17 |
+
- Pinceladas sueltas y rápidas
|
| 18 |
+
- Temas cotidianos y naturales
|
| 19 |
+
|
| 20 |
+
## Principales Artistas
|
| 21 |
+
- Joaquín Sorolla
|
| 22 |
+
- Especialización en escenas de playa
|
| 23 |
+
- Dominio de la luz mediterránea
|
| 24 |
+
- Darío de Regoyos
|
| 25 |
+
- Experimentación con color y técnica
|
| 26 |
+
- Influencia del impresionismo europeo
|
| 27 |
+
|
| 28 |
+
## Obras Representativas
|
| 29 |
+
- "Paseo a orillas del mar" - Sorolla
|
| 30 |
+
- "La Concha, nocturno" - Regoyos
|
| 31 |
+
|
| 32 |
+
## Influencias Externas
|
| 33 |
+
- Claude Monet
|
| 34 |
+
- Édouard Manet
|
| 35 |
+
|
| 36 |
+
## Impacto y Legado
|
| 37 |
+
- Evolución hacia el modernismo
|
| 38 |
+
- Influencia en generaciones posteriores de artistas
|
| 39 |
+
|
| 40 |
+
## Links
|
| 41 |
+
- [Impresionismo](https://es.wikipedia.org/wiki/Impresionismo)
|
markdowns/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
markmap:
|
| 3 |
+
title: Daredevil
|
| 4 |
+
maxWidth: 300
|
| 5 |
+
embedAssets: true
|
| 6 |
+
extraJs:
|
| 7 |
+
- npm:katex/dist/contrib/mhchem.min.js
|
| 8 |
+
---
|
| 9 |
+
# Daredevil
|
| 10 |
+
|
| 11 |
+
## Identidad
|
| 12 |
+
- Nombre real: Matt Murdock
|
| 13 |
+
- Ocupación: Abogado, Vigilante
|
| 14 |
+
|
| 15 |
+
## Origen
|
| 16 |
+
- Creado por: Stan Lee y Bill Everett
|
| 17 |
+
- Primera aparición: Daredevil #1 (1964)
|
| 18 |
+
- Accidentes: exposición a residuos radiactivos
|
| 19 |
+
|
| 20 |
+
## Habilidades
|
| 21 |
+
- Sentidos superdesarrollados
|
| 22 |
+
- Vista
|
| 23 |
+
- Oído
|
| 24 |
+
- Olfato
|
| 25 |
+
- Tacto
|
| 26 |
+
- Gusto
|
| 27 |
+
- Acrobacias y combate cuerpo a cuerpo
|
| 28 |
+
|
| 29 |
+
## Villanos
|
| 30 |
+
- Kingpin
|
| 31 |
+
- Bullseye
|
| 32 |
+
- The Hand
|
| 33 |
+
- Elektra (a veces)
|
| 34 |
+
|
| 35 |
+
## Aliados
|
| 36 |
+
- Foggy Nelson
|
| 37 |
+
- Karen Page
|
| 38 |
+
- Elektra
|
| 39 |
+
- Spider-Man
|
| 40 |
+
|
| 41 |
+
## Adaptaciones
|
| 42 |
+
- Series de TV
|
| 43 |
+
- Daredevil (Netflix)
|
| 44 |
+
- Películas
|
| 45 |
+
- Daredevil (2003)
|
| 46 |
+
|
| 47 |
+
## Cultura Popular
|
| 48 |
+
- Comic
|
| 49 |
+
- Series regulares
|
| 50 |
+
- Miniseries
|
| 51 |
+
- Juegos
|
| 52 |
+
- Videojuegos
|
| 53 |
+
- Juegos de mesa
|
| 54 |
+
|
| 55 |
+
## Links
|
| 56 |
+
- [Más información en Wikipedia](https://es.wikipedia.org/wiki/Daredevil_(c%C3%B3mic))
|
markdowns/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
markmap:
|
| 3 |
+
title: Spider-Man
|
| 4 |
+
maxWidth: 300
|
| 5 |
+
embedAssets: true
|
| 6 |
+
extraJs:
|
| 7 |
+
- npm:katex/dist/contrib/mhchem.min.js
|
| 8 |
+
---
|
| 9 |
+
# Spider-Man
|
| 10 |
+
|
| 11 |
+
## Origins
|
| 12 |
+
- Created by Stan Lee and Steve Ditko
|
| 13 |
+
- First appearance in Amazing Fantasy #15 (1962)
|
| 14 |
+
- Bitten by a radioactive spider
|
| 15 |
+
|
| 16 |
+
## Superpowers
|
| 17 |
+
- Superhuman strength
|
| 18 |
+
- Wall-crawling
|
| 19 |
+
- Spider-sense
|
| 20 |
+
- Enhanced agility and reflexes
|
| 21 |
+
- Web-shooting (via mechanical web-shooters)
|
| 22 |
+
|
| 23 |
+
## Alter Ego
|
| 24 |
+
- Peter Parker
|
| 25 |
+
- High school student/photographer/scientist
|
| 26 |
+
- Uncle Ben's "With great power, comes great responsibility"
|
| 27 |
+
|
| 28 |
+
## Main Villains
|
| 29 |
+
- Green Goblin (Norman Osborn)
|
| 30 |
+
- Doctor Octopus (Otto Octavius)
|
| 31 |
+
- Venom (Eddie Brock)
|
| 32 |
+
- The Vulture (Adrian Toomes)
|
| 33 |
+
- Sandman (Flint Marko)
|
| 34 |
+
|
| 35 |
+
## Allies
|
| 36 |
+
- Aunt May
|
| 37 |
+
- Mary Jane Watson
|
| 38 |
+
- Gwen Stacy
|
| 39 |
+
- Harry Osborn
|
| 40 |
+
- The Avengers
|
| 41 |
+
|
| 42 |
+
## Adaptations
|
| 43 |
+
- Comics
|
| 44 |
+
- Animated TV Shows
|
| 45 |
+
- Movies
|
| 46 |
+
- Tobey Maguire
|
| 47 |
+
- Andrew Garfield
|
| 48 |
+
- Tom Holland
|
| 49 |
+
- Video Games
|
| 50 |
+
|
| 51 |
+
## Impact
|
| 52 |
+
- Cultural Icon
|
| 53 |
+
- Merchandise
|
| 54 |
+
- Inspiration to fans
|
| 55 |
+
|
| 56 |
+
## Links
|
| 57 |
+
- [Spider-Man (Wikipedia)](https://en.wikipedia.org/wiki/Spider-Man)
|
markdowns/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
markmap:
|
| 3 |
+
title: Arte Abstracto Español
|
| 4 |
+
maxWidth: 300
|
| 5 |
+
embedAssets: true
|
| 6 |
+
extraJs:
|
| 7 |
+
- npm:katex/dist/contrib/mhchem.min.js
|
| 8 |
+
---
|
| 9 |
+
# Arte Abstracto Español
|
| 10 |
+
|
| 11 |
+
## Origen
|
| 12 |
+
- Vanguardias del Siglo XX
|
| 13 |
+
- Influencias Europeas
|
| 14 |
+
- Guerra Civil Española
|
| 15 |
+
|
| 16 |
+
## Artistas Destacados
|
| 17 |
+
- Antoni Tàpies
|
| 18 |
+
- Materialidad
|
| 19 |
+
- Textura
|
| 20 |
+
- Pablo Picasso
|
| 21 |
+
- Periodo Azul
|
| 22 |
+
- Cubismo
|
| 23 |
+
- Juan Gris
|
| 24 |
+
- Collage
|
| 25 |
+
- Geometría
|
| 26 |
+
|
| 27 |
+
## Movimientos
|
| 28 |
+
- Surrealismo
|
| 29 |
+
- Expresionismo Abstracto
|
| 30 |
+
- Informalismo
|
| 31 |
+
|
| 32 |
+
## Técnicas y Estilos
|
| 33 |
+
- Pintura
|
| 34 |
+
- Óleo
|
| 35 |
+
- Acrílico
|
| 36 |
+
- Escultura
|
| 37 |
+
- Materiales Diversos
|
| 38 |
+
- Instalaciones
|
| 39 |
+
- Arte Conceptual
|
| 40 |
+
|
| 41 |
+
## Exposiciones Notables
|
| 42 |
+
- Museo Reina Sofía
|
| 43 |
+
- Retrospectivas
|
| 44 |
+
- Exposiciones Temporales
|
| 45 |
+
- Museo Guggenheim Bilbao
|
| 46 |
+
- Exposiciones Permanentes
|
| 47 |
+
- Obras Internacionales
|
| 48 |
+
|
| 49 |
+
## Influencia Internacional
|
| 50 |
+
- Simposios y Bienales
|
| 51 |
+
- Colecciones en Museos Internacionales
|
| 52 |
+
- Intercambio Cultural
|
| 53 |
+
|
| 54 |
+
## Recursos
|
| 55 |
+
- [Wikipedia](https://es.wikipedia.org/wiki/Arte_abstracto)
|
mindmap_service.py
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import subprocess
|
| 3 |
+
import re
|
| 4 |
+
import shutil
|
| 5 |
+
from datetime import datetime
|
| 6 |
+
from dotenv import load_dotenv
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
class MindMapService:
|
| 10 |
+
def __init__(self):
|
| 11 |
+
load_dotenv()
|
| 12 |
+
self.project_name = os.getenv('PROJECT_NAME', 'Project')
|
| 13 |
+
self.templates_directory = os.path.join(
|
| 14 |
+
os.path.dirname(os.path.abspath(__file__)), "templates")
|
| 15 |
+
self.markdowns_directory = os.path.join(os.path.dirname(
|
| 16 |
+
os.path.abspath(__file__)), "markdowns")
|
| 17 |
+
self.css_path = 'static/css/styles.css'
|
| 18 |
+
|
| 19 |
+
def convert_markdown_to_html(self):
|
| 20 |
+
try:
|
| 21 |
+
result = subprocess.run(['node', 'convert_markdown_to_html.js'],
|
| 22 |
+
check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
| 23 |
+
print(result.stdout.decode())
|
| 24 |
+
except subprocess.CalledProcessError as e:
|
| 25 |
+
print(f"Error converting markdown to HTML: {e.stderr.decode()}")
|
| 26 |
+
|
| 27 |
+
def style_htmls(self):
|
| 28 |
+
css_link = f'<link rel="stylesheet" type="text/css" href="/{self.css_path}">'
|
| 29 |
+
|
| 30 |
+
# Define el directorio de respaldo con marca de tiempo
|
| 31 |
+
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
|
| 32 |
+
"""
|
| 33 |
+
backup_directory = os.path.join(
|
| 34 |
+
self.templates_directory, f"backup_{timestamp}")
|
| 35 |
+
|
| 36 |
+
# Crea el directorio de respaldo si no existe
|
| 37 |
+
if not os.path.exists(backup_directory):
|
| 38 |
+
os.makedirs(backup_directory)
|
| 39 |
+
"""
|
| 40 |
+
# Copia los archivos originales al directorio de respaldo
|
| 41 |
+
files = [f for f in os.listdir(
|
| 42 |
+
self.templates_directory) if f.endswith('.html')]
|
| 43 |
+
"""
|
| 44 |
+
for file in files:
|
| 45 |
+
shutil.copy2(os.path.join(
|
| 46 |
+
self.templates_directory, file), backup_directory)
|
| 47 |
+
"""
|
| 48 |
+
# Itera sobre cada archivo y realiza la sustitución
|
| 49 |
+
for file in files:
|
| 50 |
+
file_path = os.path.join(self.templates_directory, file)
|
| 51 |
+
|
| 52 |
+
# Lee el contenido del archivo
|
| 53 |
+
with open(file_path, 'r', encoding='utf-8') as f:
|
| 54 |
+
content = f.read()
|
| 55 |
+
|
| 56 |
+
# Agrega el enlace al CSS si no existe
|
| 57 |
+
if css_link not in content:
|
| 58 |
+
if '<head>' in content:
|
| 59 |
+
new_content = content.replace(
|
| 60 |
+
'<head>', f'<head>\n {css_link}')
|
| 61 |
+
elif '<head ' in content: # Manejo de variaciones de la etiqueta <head>
|
| 62 |
+
new_content = re.sub(
|
| 63 |
+
r'(<head\s*.*?>)', r'\1\n ' + css_link, content, flags=re.IGNORECASE)
|
| 64 |
+
else:
|
| 65 |
+
new_content = re.sub(r'(<html\s*.*?>)', r'\1\n<head>\n ' +
|
| 66 |
+
css_link + '\n</head>', content, flags=re.IGNORECASE)
|
| 67 |
+
else:
|
| 68 |
+
new_content = content
|
| 69 |
+
|
| 70 |
+
# Inserta el logo al final del body
|
| 71 |
+
if '<img id="logo" src="static/assets/logo.png"' not in new_content:
|
| 72 |
+
new_content = new_content.replace(
|
| 73 |
+
"</body>", '<img id="logo" src="/static/assets/logo.png" alt="Logo">\n</body>')
|
| 74 |
+
|
| 75 |
+
# Guarda el contenido modificado en el archivo
|
| 76 |
+
with open(file_path, 'w', encoding='utf-8') as f:
|
| 77 |
+
f.write(new_content)
|
| 78 |
+
|
| 79 |
+
print(
|
| 80 |
+
f"Enlace al CSS actualizado y logo añadido en todos los archivos HTML. Respaldo creado en el directorio 'backup_{timestamp}'.")
|
| 81 |
+
|
| 82 |
+
def generate_menu(self):
|
| 83 |
+
# Define el template del sidebar con comillas consistentes
|
| 84 |
+
sidebar_template = """
|
| 85 |
+
<div id="sidebar">
|
| 86 |
+
<h2>{0}</h2>
|
| 87 |
+
{1}
|
| 88 |
+
</div>
|
| 89 |
+
"""
|
| 90 |
+
|
| 91 |
+
# Define el directorio de respaldo con marca de tiempo
|
| 92 |
+
timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
|
| 93 |
+
backup_directory = os.path.join(
|
| 94 |
+
self.templates_directory, f"backup_{timestamp}")
|
| 95 |
+
|
| 96 |
+
# Crea el directorio de respaldo si no existe
|
| 97 |
+
"""
|
| 98 |
+
if not os.path.exists(backup_directory):
|
| 99 |
+
os.makedirs(backup_directory)
|
| 100 |
+
"""
|
| 101 |
+
# Copia los archivos originales al directorio de respaldo
|
| 102 |
+
files = [f for f in os.listdir(
|
| 103 |
+
self.templates_directory) if f.endswith('.html')]
|
| 104 |
+
"""
|
| 105 |
+
for file in files:
|
| 106 |
+
shutil.copy2(os.path.join(
|
| 107 |
+
self.templates_directory, file), backup_directory)
|
| 108 |
+
"""
|
| 109 |
+
# Construye el sidebar con los enlaces a todos los archivos HTML
|
| 110 |
+
sidebar_links = ""
|
| 111 |
+
for file in files:
|
| 112 |
+
file_path = os.path.join(self.templates_directory, file)
|
| 113 |
+
with open(file_path, 'r', encoding='utf-8') as f:
|
| 114 |
+
content = f.read()
|
| 115 |
+
match = re.search(r"<title>(.*?)</title>", content)
|
| 116 |
+
if match:
|
| 117 |
+
title = match.group(1)
|
| 118 |
+
else:
|
| 119 |
+
# Usa el nombre del archivo si no se encuentra <title>
|
| 120 |
+
title = os.path.splitext(file)[0]
|
| 121 |
+
|
| 122 |
+
# Ajusta la ruta para Flask
|
| 123 |
+
sidebar_links += f'<a href="/templates/{file}">{title}</a>\n'
|
| 124 |
+
|
| 125 |
+
# Itera sobre cada archivo y realiza la modificación del título y la inserción del sidebar
|
| 126 |
+
for file in files:
|
| 127 |
+
file_path = os.path.join(self.templates_directory, file)
|
| 128 |
+
|
| 129 |
+
# Lee el contenido del archivo
|
| 130 |
+
with open(file_path, 'r', encoding='utf-8') as f:
|
| 131 |
+
content = f.read()
|
| 132 |
+
|
| 133 |
+
# Define el nuevo contenido con el sidebar
|
| 134 |
+
new_sidebar_links = re.sub(
|
| 135 |
+
f'<a href="/templates/{file}"', f'<a href="/templates/{file}" class="active"', sidebar_links)
|
| 136 |
+
sidebar = sidebar_template.format(
|
| 137 |
+
self.project_name, new_sidebar_links)
|
| 138 |
+
|
| 139 |
+
# Reemplaza o inserta el sidebar de manera robusta
|
| 140 |
+
if '<div id="sidebar">' in content:
|
| 141 |
+
new_content = re.sub(
|
| 142 |
+
r'<div id="sidebar">.*?</div>', sidebar, content, flags=re.DOTALL)
|
| 143 |
+
else:
|
| 144 |
+
new_content = re.sub(
|
| 145 |
+
r'(<body.*?>)', r'\1\n' + sidebar, content, flags=re.IGNORECASE)
|
| 146 |
+
|
| 147 |
+
# Guarda el contenido modificado en el archivo
|
| 148 |
+
with open(file_path, 'w', encoding='utf-8') as f:
|
| 149 |
+
f.write(new_content)
|
| 150 |
+
|
| 151 |
+
print(
|
| 152 |
+
f"Título y menú actualizados en todos los archivos HTML. Respaldo creado en el directorio 'backup_{timestamp}'.")
|
| 153 |
+
|
| 154 |
+
|
| 155 |
+
# Ejemplo de uso
|
| 156 |
+
if __name__ == '__main__':
|
| 157 |
+
service = MindMapService()
|
| 158 |
+
service.convert_markdown_to_html()
|
| 159 |
+
service.style_htmls()
|
| 160 |
+
service.generate_menu()
|
package-lock.json
ADDED
|
@@ -0,0 +1,1214 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "map-master",
|
| 3 |
+
"lockfileVersion": 3,
|
| 4 |
+
"requires": true,
|
| 5 |
+
"packages": {
|
| 6 |
+
"": {
|
| 7 |
+
"name": "map-master",
|
| 8 |
+
"dependencies": {
|
| 9 |
+
"markmap-lib": "^0.16.1",
|
| 10 |
+
"markmap-render": "^0.17.0",
|
| 11 |
+
"yaml-front-matter": "^4.1.1"
|
| 12 |
+
}
|
| 13 |
+
},
|
| 14 |
+
"node_modules/@babel/runtime": {
|
| 15 |
+
"version": "7.24.5",
|
| 16 |
+
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz",
|
| 17 |
+
"integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
|
| 18 |
+
"license": "MIT",
|
| 19 |
+
"dependencies": {
|
| 20 |
+
"regenerator-runtime": "^0.14.0"
|
| 21 |
+
},
|
| 22 |
+
"engines": {
|
| 23 |
+
"node": ">=6.9.0"
|
| 24 |
+
}
|
| 25 |
+
},
|
| 26 |
+
"node_modules/@gera2ld/jsx-dom": {
|
| 27 |
+
"version": "2.2.2",
|
| 28 |
+
"resolved": "https://registry.npmjs.org/@gera2ld/jsx-dom/-/jsx-dom-2.2.2.tgz",
|
| 29 |
+
"integrity": "sha512-EOqf31IATRE6zS1W1EoWmXZhGfLAoO9FIlwTtHduSrBdud4npYBxYAkv8dZ5hudDPwJeeSjn40kbCL4wAzr8dA==",
|
| 30 |
+
"license": "ISC",
|
| 31 |
+
"dependencies": {
|
| 32 |
+
"@babel/runtime": "^7.21.5"
|
| 33 |
+
}
|
| 34 |
+
},
|
| 35 |
+
"node_modules/@types/d3": {
|
| 36 |
+
"version": "7.4.3",
|
| 37 |
+
"resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
|
| 38 |
+
"integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
|
| 39 |
+
"license": "MIT",
|
| 40 |
+
"dependencies": {
|
| 41 |
+
"@types/d3-array": "*",
|
| 42 |
+
"@types/d3-axis": "*",
|
| 43 |
+
"@types/d3-brush": "*",
|
| 44 |
+
"@types/d3-chord": "*",
|
| 45 |
+
"@types/d3-color": "*",
|
| 46 |
+
"@types/d3-contour": "*",
|
| 47 |
+
"@types/d3-delaunay": "*",
|
| 48 |
+
"@types/d3-dispatch": "*",
|
| 49 |
+
"@types/d3-drag": "*",
|
| 50 |
+
"@types/d3-dsv": "*",
|
| 51 |
+
"@types/d3-ease": "*",
|
| 52 |
+
"@types/d3-fetch": "*",
|
| 53 |
+
"@types/d3-force": "*",
|
| 54 |
+
"@types/d3-format": "*",
|
| 55 |
+
"@types/d3-geo": "*",
|
| 56 |
+
"@types/d3-hierarchy": "*",
|
| 57 |
+
"@types/d3-interpolate": "*",
|
| 58 |
+
"@types/d3-path": "*",
|
| 59 |
+
"@types/d3-polygon": "*",
|
| 60 |
+
"@types/d3-quadtree": "*",
|
| 61 |
+
"@types/d3-random": "*",
|
| 62 |
+
"@types/d3-scale": "*",
|
| 63 |
+
"@types/d3-scale-chromatic": "*",
|
| 64 |
+
"@types/d3-selection": "*",
|
| 65 |
+
"@types/d3-shape": "*",
|
| 66 |
+
"@types/d3-time": "*",
|
| 67 |
+
"@types/d3-time-format": "*",
|
| 68 |
+
"@types/d3-timer": "*",
|
| 69 |
+
"@types/d3-transition": "*",
|
| 70 |
+
"@types/d3-zoom": "*"
|
| 71 |
+
}
|
| 72 |
+
},
|
| 73 |
+
"node_modules/@types/d3-array": {
|
| 74 |
+
"version": "3.2.1",
|
| 75 |
+
"resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
|
| 76 |
+
"integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==",
|
| 77 |
+
"license": "MIT"
|
| 78 |
+
},
|
| 79 |
+
"node_modules/@types/d3-axis": {
|
| 80 |
+
"version": "3.0.6",
|
| 81 |
+
"resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
|
| 82 |
+
"integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
|
| 83 |
+
"license": "MIT",
|
| 84 |
+
"dependencies": {
|
| 85 |
+
"@types/d3-selection": "*"
|
| 86 |
+
}
|
| 87 |
+
},
|
| 88 |
+
"node_modules/@types/d3-brush": {
|
| 89 |
+
"version": "3.0.6",
|
| 90 |
+
"resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
|
| 91 |
+
"integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
|
| 92 |
+
"license": "MIT",
|
| 93 |
+
"dependencies": {
|
| 94 |
+
"@types/d3-selection": "*"
|
| 95 |
+
}
|
| 96 |
+
},
|
| 97 |
+
"node_modules/@types/d3-chord": {
|
| 98 |
+
"version": "3.0.6",
|
| 99 |
+
"resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
|
| 100 |
+
"integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
|
| 101 |
+
"license": "MIT"
|
| 102 |
+
},
|
| 103 |
+
"node_modules/@types/d3-color": {
|
| 104 |
+
"version": "3.1.3",
|
| 105 |
+
"resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
|
| 106 |
+
"integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
|
| 107 |
+
"license": "MIT"
|
| 108 |
+
},
|
| 109 |
+
"node_modules/@types/d3-contour": {
|
| 110 |
+
"version": "3.0.6",
|
| 111 |
+
"resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
|
| 112 |
+
"integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
|
| 113 |
+
"license": "MIT",
|
| 114 |
+
"dependencies": {
|
| 115 |
+
"@types/d3-array": "*",
|
| 116 |
+
"@types/geojson": "*"
|
| 117 |
+
}
|
| 118 |
+
},
|
| 119 |
+
"node_modules/@types/d3-delaunay": {
|
| 120 |
+
"version": "6.0.4",
|
| 121 |
+
"resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
|
| 122 |
+
"integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
|
| 123 |
+
"license": "MIT"
|
| 124 |
+
},
|
| 125 |
+
"node_modules/@types/d3-dispatch": {
|
| 126 |
+
"version": "3.0.6",
|
| 127 |
+
"resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz",
|
| 128 |
+
"integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==",
|
| 129 |
+
"license": "MIT"
|
| 130 |
+
},
|
| 131 |
+
"node_modules/@types/d3-drag": {
|
| 132 |
+
"version": "3.0.7",
|
| 133 |
+
"resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
|
| 134 |
+
"integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
|
| 135 |
+
"license": "MIT",
|
| 136 |
+
"dependencies": {
|
| 137 |
+
"@types/d3-selection": "*"
|
| 138 |
+
}
|
| 139 |
+
},
|
| 140 |
+
"node_modules/@types/d3-dsv": {
|
| 141 |
+
"version": "3.0.7",
|
| 142 |
+
"resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
|
| 143 |
+
"integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
|
| 144 |
+
"license": "MIT"
|
| 145 |
+
},
|
| 146 |
+
"node_modules/@types/d3-ease": {
|
| 147 |
+
"version": "3.0.2",
|
| 148 |
+
"resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
|
| 149 |
+
"integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
|
| 150 |
+
"license": "MIT"
|
| 151 |
+
},
|
| 152 |
+
"node_modules/@types/d3-fetch": {
|
| 153 |
+
"version": "3.0.7",
|
| 154 |
+
"resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
|
| 155 |
+
"integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
|
| 156 |
+
"license": "MIT",
|
| 157 |
+
"dependencies": {
|
| 158 |
+
"@types/d3-dsv": "*"
|
| 159 |
+
}
|
| 160 |
+
},
|
| 161 |
+
"node_modules/@types/d3-force": {
|
| 162 |
+
"version": "3.0.9",
|
| 163 |
+
"resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz",
|
| 164 |
+
"integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==",
|
| 165 |
+
"license": "MIT"
|
| 166 |
+
},
|
| 167 |
+
"node_modules/@types/d3-format": {
|
| 168 |
+
"version": "3.0.4",
|
| 169 |
+
"resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
|
| 170 |
+
"integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
|
| 171 |
+
"license": "MIT"
|
| 172 |
+
},
|
| 173 |
+
"node_modules/@types/d3-geo": {
|
| 174 |
+
"version": "3.1.0",
|
| 175 |
+
"resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
|
| 176 |
+
"integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
|
| 177 |
+
"license": "MIT",
|
| 178 |
+
"dependencies": {
|
| 179 |
+
"@types/geojson": "*"
|
| 180 |
+
}
|
| 181 |
+
},
|
| 182 |
+
"node_modules/@types/d3-hierarchy": {
|
| 183 |
+
"version": "3.1.7",
|
| 184 |
+
"resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz",
|
| 185 |
+
"integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==",
|
| 186 |
+
"license": "MIT"
|
| 187 |
+
},
|
| 188 |
+
"node_modules/@types/d3-interpolate": {
|
| 189 |
+
"version": "3.0.4",
|
| 190 |
+
"resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
|
| 191 |
+
"integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
|
| 192 |
+
"license": "MIT",
|
| 193 |
+
"dependencies": {
|
| 194 |
+
"@types/d3-color": "*"
|
| 195 |
+
}
|
| 196 |
+
},
|
| 197 |
+
"node_modules/@types/d3-path": {
|
| 198 |
+
"version": "3.1.0",
|
| 199 |
+
"resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
|
| 200 |
+
"integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==",
|
| 201 |
+
"license": "MIT"
|
| 202 |
+
},
|
| 203 |
+
"node_modules/@types/d3-polygon": {
|
| 204 |
+
"version": "3.0.2",
|
| 205 |
+
"resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
|
| 206 |
+
"integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
|
| 207 |
+
"license": "MIT"
|
| 208 |
+
},
|
| 209 |
+
"node_modules/@types/d3-quadtree": {
|
| 210 |
+
"version": "3.0.6",
|
| 211 |
+
"resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
|
| 212 |
+
"integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
|
| 213 |
+
"license": "MIT"
|
| 214 |
+
},
|
| 215 |
+
"node_modules/@types/d3-random": {
|
| 216 |
+
"version": "3.0.3",
|
| 217 |
+
"resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
|
| 218 |
+
"integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
|
| 219 |
+
"license": "MIT"
|
| 220 |
+
},
|
| 221 |
+
"node_modules/@types/d3-scale": {
|
| 222 |
+
"version": "4.0.8",
|
| 223 |
+
"resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
|
| 224 |
+
"integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
|
| 225 |
+
"license": "MIT",
|
| 226 |
+
"dependencies": {
|
| 227 |
+
"@types/d3-time": "*"
|
| 228 |
+
}
|
| 229 |
+
},
|
| 230 |
+
"node_modules/@types/d3-scale-chromatic": {
|
| 231 |
+
"version": "3.0.3",
|
| 232 |
+
"resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz",
|
| 233 |
+
"integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==",
|
| 234 |
+
"license": "MIT"
|
| 235 |
+
},
|
| 236 |
+
"node_modules/@types/d3-selection": {
|
| 237 |
+
"version": "3.0.10",
|
| 238 |
+
"resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz",
|
| 239 |
+
"integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==",
|
| 240 |
+
"license": "MIT"
|
| 241 |
+
},
|
| 242 |
+
"node_modules/@types/d3-shape": {
|
| 243 |
+
"version": "3.1.6",
|
| 244 |
+
"resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
|
| 245 |
+
"integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
|
| 246 |
+
"license": "MIT",
|
| 247 |
+
"dependencies": {
|
| 248 |
+
"@types/d3-path": "*"
|
| 249 |
+
}
|
| 250 |
+
},
|
| 251 |
+
"node_modules/@types/d3-time": {
|
| 252 |
+
"version": "3.0.3",
|
| 253 |
+
"resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
|
| 254 |
+
"integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==",
|
| 255 |
+
"license": "MIT"
|
| 256 |
+
},
|
| 257 |
+
"node_modules/@types/d3-time-format": {
|
| 258 |
+
"version": "4.0.3",
|
| 259 |
+
"resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
|
| 260 |
+
"integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
|
| 261 |
+
"license": "MIT"
|
| 262 |
+
},
|
| 263 |
+
"node_modules/@types/d3-timer": {
|
| 264 |
+
"version": "3.0.2",
|
| 265 |
+
"resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
|
| 266 |
+
"integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
|
| 267 |
+
"license": "MIT"
|
| 268 |
+
},
|
| 269 |
+
"node_modules/@types/d3-transition": {
|
| 270 |
+
"version": "3.0.8",
|
| 271 |
+
"resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz",
|
| 272 |
+
"integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==",
|
| 273 |
+
"license": "MIT",
|
| 274 |
+
"dependencies": {
|
| 275 |
+
"@types/d3-selection": "*"
|
| 276 |
+
}
|
| 277 |
+
},
|
| 278 |
+
"node_modules/@types/d3-zoom": {
|
| 279 |
+
"version": "3.0.8",
|
| 280 |
+
"resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
|
| 281 |
+
"integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
|
| 282 |
+
"license": "MIT",
|
| 283 |
+
"dependencies": {
|
| 284 |
+
"@types/d3-interpolate": "*",
|
| 285 |
+
"@types/d3-selection": "*"
|
| 286 |
+
}
|
| 287 |
+
},
|
| 288 |
+
"node_modules/@types/geojson": {
|
| 289 |
+
"version": "7946.0.14",
|
| 290 |
+
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
|
| 291 |
+
"integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==",
|
| 292 |
+
"license": "MIT"
|
| 293 |
+
},
|
| 294 |
+
"node_modules/argparse": {
|
| 295 |
+
"version": "2.0.1",
|
| 296 |
+
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
| 297 |
+
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
| 298 |
+
"license": "Python-2.0"
|
| 299 |
+
},
|
| 300 |
+
"node_modules/autolinker": {
|
| 301 |
+
"version": "3.16.2",
|
| 302 |
+
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz",
|
| 303 |
+
"integrity": "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==",
|
| 304 |
+
"dependencies": {
|
| 305 |
+
"tslib": "^2.3.0"
|
| 306 |
+
}
|
| 307 |
+
},
|
| 308 |
+
"node_modules/boolbase": {
|
| 309 |
+
"version": "1.0.0",
|
| 310 |
+
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
| 311 |
+
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
|
| 312 |
+
},
|
| 313 |
+
"node_modules/cheerio": {
|
| 314 |
+
"version": "1.0.0-rc.12",
|
| 315 |
+
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
|
| 316 |
+
"integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
|
| 317 |
+
"dependencies": {
|
| 318 |
+
"cheerio-select": "^2.1.0",
|
| 319 |
+
"dom-serializer": "^2.0.0",
|
| 320 |
+
"domhandler": "^5.0.3",
|
| 321 |
+
"domutils": "^3.0.1",
|
| 322 |
+
"htmlparser2": "^8.0.1",
|
| 323 |
+
"parse5": "^7.0.0",
|
| 324 |
+
"parse5-htmlparser2-tree-adapter": "^7.0.0"
|
| 325 |
+
},
|
| 326 |
+
"engines": {
|
| 327 |
+
"node": ">= 6"
|
| 328 |
+
},
|
| 329 |
+
"funding": {
|
| 330 |
+
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
|
| 331 |
+
}
|
| 332 |
+
},
|
| 333 |
+
"node_modules/cheerio-select": {
|
| 334 |
+
"version": "2.1.0",
|
| 335 |
+
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
|
| 336 |
+
"integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
|
| 337 |
+
"dependencies": {
|
| 338 |
+
"boolbase": "^1.0.0",
|
| 339 |
+
"css-select": "^5.1.0",
|
| 340 |
+
"css-what": "^6.1.0",
|
| 341 |
+
"domelementtype": "^2.3.0",
|
| 342 |
+
"domhandler": "^5.0.3",
|
| 343 |
+
"domutils": "^3.0.1"
|
| 344 |
+
},
|
| 345 |
+
"funding": {
|
| 346 |
+
"url": "https://github.com/sponsors/fb55"
|
| 347 |
+
}
|
| 348 |
+
},
|
| 349 |
+
"node_modules/commander": {
|
| 350 |
+
"version": "8.3.0",
|
| 351 |
+
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
|
| 352 |
+
"integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
|
| 353 |
+
"license": "MIT",
|
| 354 |
+
"engines": {
|
| 355 |
+
"node": ">= 12"
|
| 356 |
+
}
|
| 357 |
+
},
|
| 358 |
+
"node_modules/css-select": {
|
| 359 |
+
"version": "5.1.0",
|
| 360 |
+
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
|
| 361 |
+
"integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
|
| 362 |
+
"dependencies": {
|
| 363 |
+
"boolbase": "^1.0.0",
|
| 364 |
+
"css-what": "^6.1.0",
|
| 365 |
+
"domhandler": "^5.0.2",
|
| 366 |
+
"domutils": "^3.0.1",
|
| 367 |
+
"nth-check": "^2.0.1"
|
| 368 |
+
},
|
| 369 |
+
"funding": {
|
| 370 |
+
"url": "https://github.com/sponsors/fb55"
|
| 371 |
+
}
|
| 372 |
+
},
|
| 373 |
+
"node_modules/css-what": {
|
| 374 |
+
"version": "6.1.0",
|
| 375 |
+
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
|
| 376 |
+
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
|
| 377 |
+
"engines": {
|
| 378 |
+
"node": ">= 6"
|
| 379 |
+
},
|
| 380 |
+
"funding": {
|
| 381 |
+
"url": "https://github.com/sponsors/fb55"
|
| 382 |
+
}
|
| 383 |
+
},
|
| 384 |
+
"node_modules/d3": {
|
| 385 |
+
"version": "7.9.0",
|
| 386 |
+
"resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz",
|
| 387 |
+
"integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
|
| 388 |
+
"license": "ISC",
|
| 389 |
+
"dependencies": {
|
| 390 |
+
"d3-array": "3",
|
| 391 |
+
"d3-axis": "3",
|
| 392 |
+
"d3-brush": "3",
|
| 393 |
+
"d3-chord": "3",
|
| 394 |
+
"d3-color": "3",
|
| 395 |
+
"d3-contour": "4",
|
| 396 |
+
"d3-delaunay": "6",
|
| 397 |
+
"d3-dispatch": "3",
|
| 398 |
+
"d3-drag": "3",
|
| 399 |
+
"d3-dsv": "3",
|
| 400 |
+
"d3-ease": "3",
|
| 401 |
+
"d3-fetch": "3",
|
| 402 |
+
"d3-force": "3",
|
| 403 |
+
"d3-format": "3",
|
| 404 |
+
"d3-geo": "3",
|
| 405 |
+
"d3-hierarchy": "3",
|
| 406 |
+
"d3-interpolate": "3",
|
| 407 |
+
"d3-path": "3",
|
| 408 |
+
"d3-polygon": "3",
|
| 409 |
+
"d3-quadtree": "3",
|
| 410 |
+
"d3-random": "3",
|
| 411 |
+
"d3-scale": "4",
|
| 412 |
+
"d3-scale-chromatic": "3",
|
| 413 |
+
"d3-selection": "3",
|
| 414 |
+
"d3-shape": "3",
|
| 415 |
+
"d3-time": "3",
|
| 416 |
+
"d3-time-format": "4",
|
| 417 |
+
"d3-timer": "3",
|
| 418 |
+
"d3-transition": "3",
|
| 419 |
+
"d3-zoom": "3"
|
| 420 |
+
},
|
| 421 |
+
"engines": {
|
| 422 |
+
"node": ">=12"
|
| 423 |
+
}
|
| 424 |
+
},
|
| 425 |
+
"node_modules/d3-array": {
|
| 426 |
+
"version": "3.2.4",
|
| 427 |
+
"resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
|
| 428 |
+
"integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
|
| 429 |
+
"license": "ISC",
|
| 430 |
+
"dependencies": {
|
| 431 |
+
"internmap": "1 - 2"
|
| 432 |
+
},
|
| 433 |
+
"engines": {
|
| 434 |
+
"node": ">=12"
|
| 435 |
+
}
|
| 436 |
+
},
|
| 437 |
+
"node_modules/d3-axis": {
|
| 438 |
+
"version": "3.0.0",
|
| 439 |
+
"resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
|
| 440 |
+
"integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
|
| 441 |
+
"license": "ISC",
|
| 442 |
+
"engines": {
|
| 443 |
+
"node": ">=12"
|
| 444 |
+
}
|
| 445 |
+
},
|
| 446 |
+
"node_modules/d3-brush": {
|
| 447 |
+
"version": "3.0.0",
|
| 448 |
+
"resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
|
| 449 |
+
"integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
|
| 450 |
+
"license": "ISC",
|
| 451 |
+
"dependencies": {
|
| 452 |
+
"d3-dispatch": "1 - 3",
|
| 453 |
+
"d3-drag": "2 - 3",
|
| 454 |
+
"d3-interpolate": "1 - 3",
|
| 455 |
+
"d3-selection": "3",
|
| 456 |
+
"d3-transition": "3"
|
| 457 |
+
},
|
| 458 |
+
"engines": {
|
| 459 |
+
"node": ">=12"
|
| 460 |
+
}
|
| 461 |
+
},
|
| 462 |
+
"node_modules/d3-chord": {
|
| 463 |
+
"version": "3.0.1",
|
| 464 |
+
"resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
|
| 465 |
+
"integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
|
| 466 |
+
"license": "ISC",
|
| 467 |
+
"dependencies": {
|
| 468 |
+
"d3-path": "1 - 3"
|
| 469 |
+
},
|
| 470 |
+
"engines": {
|
| 471 |
+
"node": ">=12"
|
| 472 |
+
}
|
| 473 |
+
},
|
| 474 |
+
"node_modules/d3-color": {
|
| 475 |
+
"version": "3.1.0",
|
| 476 |
+
"resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
|
| 477 |
+
"integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
|
| 478 |
+
"license": "ISC",
|
| 479 |
+
"engines": {
|
| 480 |
+
"node": ">=12"
|
| 481 |
+
}
|
| 482 |
+
},
|
| 483 |
+
"node_modules/d3-contour": {
|
| 484 |
+
"version": "4.0.2",
|
| 485 |
+
"resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
|
| 486 |
+
"integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
|
| 487 |
+
"license": "ISC",
|
| 488 |
+
"dependencies": {
|
| 489 |
+
"d3-array": "^3.2.0"
|
| 490 |
+
},
|
| 491 |
+
"engines": {
|
| 492 |
+
"node": ">=12"
|
| 493 |
+
}
|
| 494 |
+
},
|
| 495 |
+
"node_modules/d3-delaunay": {
|
| 496 |
+
"version": "6.0.4",
|
| 497 |
+
"resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
|
| 498 |
+
"integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
|
| 499 |
+
"license": "ISC",
|
| 500 |
+
"dependencies": {
|
| 501 |
+
"delaunator": "5"
|
| 502 |
+
},
|
| 503 |
+
"engines": {
|
| 504 |
+
"node": ">=12"
|
| 505 |
+
}
|
| 506 |
+
},
|
| 507 |
+
"node_modules/d3-dispatch": {
|
| 508 |
+
"version": "3.0.1",
|
| 509 |
+
"resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
|
| 510 |
+
"integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
|
| 511 |
+
"license": "ISC",
|
| 512 |
+
"engines": {
|
| 513 |
+
"node": ">=12"
|
| 514 |
+
}
|
| 515 |
+
},
|
| 516 |
+
"node_modules/d3-drag": {
|
| 517 |
+
"version": "3.0.0",
|
| 518 |
+
"resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
|
| 519 |
+
"integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
|
| 520 |
+
"license": "ISC",
|
| 521 |
+
"dependencies": {
|
| 522 |
+
"d3-dispatch": "1 - 3",
|
| 523 |
+
"d3-selection": "3"
|
| 524 |
+
},
|
| 525 |
+
"engines": {
|
| 526 |
+
"node": ">=12"
|
| 527 |
+
}
|
| 528 |
+
},
|
| 529 |
+
"node_modules/d3-dsv": {
|
| 530 |
+
"version": "3.0.1",
|
| 531 |
+
"resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
|
| 532 |
+
"integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
|
| 533 |
+
"license": "ISC",
|
| 534 |
+
"dependencies": {
|
| 535 |
+
"commander": "7",
|
| 536 |
+
"iconv-lite": "0.6",
|
| 537 |
+
"rw": "1"
|
| 538 |
+
},
|
| 539 |
+
"bin": {
|
| 540 |
+
"csv2json": "bin/dsv2json.js",
|
| 541 |
+
"csv2tsv": "bin/dsv2dsv.js",
|
| 542 |
+
"dsv2dsv": "bin/dsv2dsv.js",
|
| 543 |
+
"dsv2json": "bin/dsv2json.js",
|
| 544 |
+
"json2csv": "bin/json2dsv.js",
|
| 545 |
+
"json2dsv": "bin/json2dsv.js",
|
| 546 |
+
"json2tsv": "bin/json2dsv.js",
|
| 547 |
+
"tsv2csv": "bin/dsv2dsv.js",
|
| 548 |
+
"tsv2json": "bin/dsv2json.js"
|
| 549 |
+
},
|
| 550 |
+
"engines": {
|
| 551 |
+
"node": ">=12"
|
| 552 |
+
}
|
| 553 |
+
},
|
| 554 |
+
"node_modules/d3-dsv/node_modules/commander": {
|
| 555 |
+
"version": "7.2.0",
|
| 556 |
+
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
|
| 557 |
+
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
|
| 558 |
+
"license": "MIT",
|
| 559 |
+
"engines": {
|
| 560 |
+
"node": ">= 10"
|
| 561 |
+
}
|
| 562 |
+
},
|
| 563 |
+
"node_modules/d3-ease": {
|
| 564 |
+
"version": "3.0.1",
|
| 565 |
+
"resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
|
| 566 |
+
"integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
|
| 567 |
+
"license": "BSD-3-Clause",
|
| 568 |
+
"engines": {
|
| 569 |
+
"node": ">=12"
|
| 570 |
+
}
|
| 571 |
+
},
|
| 572 |
+
"node_modules/d3-fetch": {
|
| 573 |
+
"version": "3.0.1",
|
| 574 |
+
"resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
|
| 575 |
+
"integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
|
| 576 |
+
"license": "ISC",
|
| 577 |
+
"dependencies": {
|
| 578 |
+
"d3-dsv": "1 - 3"
|
| 579 |
+
},
|
| 580 |
+
"engines": {
|
| 581 |
+
"node": ">=12"
|
| 582 |
+
}
|
| 583 |
+
},
|
| 584 |
+
"node_modules/d3-flextree": {
|
| 585 |
+
"version": "2.1.2",
|
| 586 |
+
"resolved": "https://registry.npmjs.org/d3-flextree/-/d3-flextree-2.1.2.tgz",
|
| 587 |
+
"integrity": "sha512-gJiHrx5uTTHq44bjyIb3xpbmmdZcWLYPKeO9EPVOq8EylMFOiH2+9sWqKAiQ4DcFuOZTAxPOQyv0Rnmji/g15A==",
|
| 588 |
+
"license": "WTFPL",
|
| 589 |
+
"dependencies": {
|
| 590 |
+
"d3-hierarchy": "^1.1.5"
|
| 591 |
+
}
|
| 592 |
+
},
|
| 593 |
+
"node_modules/d3-flextree/node_modules/d3-hierarchy": {
|
| 594 |
+
"version": "1.1.9",
|
| 595 |
+
"resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz",
|
| 596 |
+
"integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==",
|
| 597 |
+
"license": "BSD-3-Clause"
|
| 598 |
+
},
|
| 599 |
+
"node_modules/d3-force": {
|
| 600 |
+
"version": "3.0.0",
|
| 601 |
+
"resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
|
| 602 |
+
"integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
|
| 603 |
+
"license": "ISC",
|
| 604 |
+
"dependencies": {
|
| 605 |
+
"d3-dispatch": "1 - 3",
|
| 606 |
+
"d3-quadtree": "1 - 3",
|
| 607 |
+
"d3-timer": "1 - 3"
|
| 608 |
+
},
|
| 609 |
+
"engines": {
|
| 610 |
+
"node": ">=12"
|
| 611 |
+
}
|
| 612 |
+
},
|
| 613 |
+
"node_modules/d3-format": {
|
| 614 |
+
"version": "3.1.0",
|
| 615 |
+
"resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
|
| 616 |
+
"integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
|
| 617 |
+
"license": "ISC",
|
| 618 |
+
"engines": {
|
| 619 |
+
"node": ">=12"
|
| 620 |
+
}
|
| 621 |
+
},
|
| 622 |
+
"node_modules/d3-geo": {
|
| 623 |
+
"version": "3.1.1",
|
| 624 |
+
"resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
|
| 625 |
+
"integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
|
| 626 |
+
"license": "ISC",
|
| 627 |
+
"dependencies": {
|
| 628 |
+
"d3-array": "2.5.0 - 3"
|
| 629 |
+
},
|
| 630 |
+
"engines": {
|
| 631 |
+
"node": ">=12"
|
| 632 |
+
}
|
| 633 |
+
},
|
| 634 |
+
"node_modules/d3-hierarchy": {
|
| 635 |
+
"version": "3.1.2",
|
| 636 |
+
"resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
|
| 637 |
+
"integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
|
| 638 |
+
"license": "ISC",
|
| 639 |
+
"engines": {
|
| 640 |
+
"node": ">=12"
|
| 641 |
+
}
|
| 642 |
+
},
|
| 643 |
+
"node_modules/d3-interpolate": {
|
| 644 |
+
"version": "3.0.1",
|
| 645 |
+
"resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
|
| 646 |
+
"integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
|
| 647 |
+
"license": "ISC",
|
| 648 |
+
"dependencies": {
|
| 649 |
+
"d3-color": "1 - 3"
|
| 650 |
+
},
|
| 651 |
+
"engines": {
|
| 652 |
+
"node": ">=12"
|
| 653 |
+
}
|
| 654 |
+
},
|
| 655 |
+
"node_modules/d3-path": {
|
| 656 |
+
"version": "3.1.0",
|
| 657 |
+
"resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
|
| 658 |
+
"integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
|
| 659 |
+
"license": "ISC",
|
| 660 |
+
"engines": {
|
| 661 |
+
"node": ">=12"
|
| 662 |
+
}
|
| 663 |
+
},
|
| 664 |
+
"node_modules/d3-polygon": {
|
| 665 |
+
"version": "3.0.1",
|
| 666 |
+
"resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
|
| 667 |
+
"integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
|
| 668 |
+
"license": "ISC",
|
| 669 |
+
"engines": {
|
| 670 |
+
"node": ">=12"
|
| 671 |
+
}
|
| 672 |
+
},
|
| 673 |
+
"node_modules/d3-quadtree": {
|
| 674 |
+
"version": "3.0.1",
|
| 675 |
+
"resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
|
| 676 |
+
"integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
|
| 677 |
+
"license": "ISC",
|
| 678 |
+
"engines": {
|
| 679 |
+
"node": ">=12"
|
| 680 |
+
}
|
| 681 |
+
},
|
| 682 |
+
"node_modules/d3-random": {
|
| 683 |
+
"version": "3.0.1",
|
| 684 |
+
"resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
|
| 685 |
+
"integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
|
| 686 |
+
"license": "ISC",
|
| 687 |
+
"engines": {
|
| 688 |
+
"node": ">=12"
|
| 689 |
+
}
|
| 690 |
+
},
|
| 691 |
+
"node_modules/d3-scale": {
|
| 692 |
+
"version": "4.0.2",
|
| 693 |
+
"resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
|
| 694 |
+
"integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
|
| 695 |
+
"license": "ISC",
|
| 696 |
+
"dependencies": {
|
| 697 |
+
"d3-array": "2.10.0 - 3",
|
| 698 |
+
"d3-format": "1 - 3",
|
| 699 |
+
"d3-interpolate": "1.2.0 - 3",
|
| 700 |
+
"d3-time": "2.1.1 - 3",
|
| 701 |
+
"d3-time-format": "2 - 4"
|
| 702 |
+
},
|
| 703 |
+
"engines": {
|
| 704 |
+
"node": ">=12"
|
| 705 |
+
}
|
| 706 |
+
},
|
| 707 |
+
"node_modules/d3-scale-chromatic": {
|
| 708 |
+
"version": "3.1.0",
|
| 709 |
+
"resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
|
| 710 |
+
"integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
|
| 711 |
+
"license": "ISC",
|
| 712 |
+
"dependencies": {
|
| 713 |
+
"d3-color": "1 - 3",
|
| 714 |
+
"d3-interpolate": "1 - 3"
|
| 715 |
+
},
|
| 716 |
+
"engines": {
|
| 717 |
+
"node": ">=12"
|
| 718 |
+
}
|
| 719 |
+
},
|
| 720 |
+
"node_modules/d3-selection": {
|
| 721 |
+
"version": "3.0.0",
|
| 722 |
+
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
|
| 723 |
+
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
|
| 724 |
+
"license": "ISC",
|
| 725 |
+
"engines": {
|
| 726 |
+
"node": ">=12"
|
| 727 |
+
}
|
| 728 |
+
},
|
| 729 |
+
"node_modules/d3-shape": {
|
| 730 |
+
"version": "3.2.0",
|
| 731 |
+
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
|
| 732 |
+
"integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
|
| 733 |
+
"license": "ISC",
|
| 734 |
+
"dependencies": {
|
| 735 |
+
"d3-path": "^3.1.0"
|
| 736 |
+
},
|
| 737 |
+
"engines": {
|
| 738 |
+
"node": ">=12"
|
| 739 |
+
}
|
| 740 |
+
},
|
| 741 |
+
"node_modules/d3-time": {
|
| 742 |
+
"version": "3.1.0",
|
| 743 |
+
"resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
|
| 744 |
+
"integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
|
| 745 |
+
"license": "ISC",
|
| 746 |
+
"dependencies": {
|
| 747 |
+
"d3-array": "2 - 3"
|
| 748 |
+
},
|
| 749 |
+
"engines": {
|
| 750 |
+
"node": ">=12"
|
| 751 |
+
}
|
| 752 |
+
},
|
| 753 |
+
"node_modules/d3-time-format": {
|
| 754 |
+
"version": "4.1.0",
|
| 755 |
+
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
|
| 756 |
+
"integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
|
| 757 |
+
"license": "ISC",
|
| 758 |
+
"dependencies": {
|
| 759 |
+
"d3-time": "1 - 3"
|
| 760 |
+
},
|
| 761 |
+
"engines": {
|
| 762 |
+
"node": ">=12"
|
| 763 |
+
}
|
| 764 |
+
},
|
| 765 |
+
"node_modules/d3-timer": {
|
| 766 |
+
"version": "3.0.1",
|
| 767 |
+
"resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
|
| 768 |
+
"integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
|
| 769 |
+
"license": "ISC",
|
| 770 |
+
"engines": {
|
| 771 |
+
"node": ">=12"
|
| 772 |
+
}
|
| 773 |
+
},
|
| 774 |
+
"node_modules/d3-transition": {
|
| 775 |
+
"version": "3.0.1",
|
| 776 |
+
"resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
|
| 777 |
+
"integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
|
| 778 |
+
"license": "ISC",
|
| 779 |
+
"dependencies": {
|
| 780 |
+
"d3-color": "1 - 3",
|
| 781 |
+
"d3-dispatch": "1 - 3",
|
| 782 |
+
"d3-ease": "1 - 3",
|
| 783 |
+
"d3-interpolate": "1 - 3",
|
| 784 |
+
"d3-timer": "1 - 3"
|
| 785 |
+
},
|
| 786 |
+
"engines": {
|
| 787 |
+
"node": ">=12"
|
| 788 |
+
},
|
| 789 |
+
"peerDependencies": {
|
| 790 |
+
"d3-selection": "2 - 3"
|
| 791 |
+
}
|
| 792 |
+
},
|
| 793 |
+
"node_modules/d3-zoom": {
|
| 794 |
+
"version": "3.0.0",
|
| 795 |
+
"resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
|
| 796 |
+
"integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
|
| 797 |
+
"license": "ISC",
|
| 798 |
+
"dependencies": {
|
| 799 |
+
"d3-dispatch": "1 - 3",
|
| 800 |
+
"d3-drag": "2 - 3",
|
| 801 |
+
"d3-interpolate": "1 - 3",
|
| 802 |
+
"d3-selection": "2 - 3",
|
| 803 |
+
"d3-transition": "2 - 3"
|
| 804 |
+
},
|
| 805 |
+
"engines": {
|
| 806 |
+
"node": ">=12"
|
| 807 |
+
}
|
| 808 |
+
},
|
| 809 |
+
"node_modules/delaunator": {
|
| 810 |
+
"version": "5.0.1",
|
| 811 |
+
"resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
|
| 812 |
+
"integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
|
| 813 |
+
"license": "ISC",
|
| 814 |
+
"dependencies": {
|
| 815 |
+
"robust-predicates": "^3.0.2"
|
| 816 |
+
}
|
| 817 |
+
},
|
| 818 |
+
"node_modules/dom-serializer": {
|
| 819 |
+
"version": "2.0.0",
|
| 820 |
+
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
|
| 821 |
+
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
|
| 822 |
+
"dependencies": {
|
| 823 |
+
"domelementtype": "^2.3.0",
|
| 824 |
+
"domhandler": "^5.0.2",
|
| 825 |
+
"entities": "^4.2.0"
|
| 826 |
+
},
|
| 827 |
+
"funding": {
|
| 828 |
+
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
|
| 829 |
+
}
|
| 830 |
+
},
|
| 831 |
+
"node_modules/domelementtype": {
|
| 832 |
+
"version": "2.3.0",
|
| 833 |
+
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
|
| 834 |
+
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
|
| 835 |
+
"funding": [
|
| 836 |
+
{
|
| 837 |
+
"type": "github",
|
| 838 |
+
"url": "https://github.com/sponsors/fb55"
|
| 839 |
+
}
|
| 840 |
+
]
|
| 841 |
+
},
|
| 842 |
+
"node_modules/domhandler": {
|
| 843 |
+
"version": "5.0.3",
|
| 844 |
+
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
|
| 845 |
+
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
|
| 846 |
+
"dependencies": {
|
| 847 |
+
"domelementtype": "^2.3.0"
|
| 848 |
+
},
|
| 849 |
+
"engines": {
|
| 850 |
+
"node": ">= 4"
|
| 851 |
+
},
|
| 852 |
+
"funding": {
|
| 853 |
+
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
| 854 |
+
}
|
| 855 |
+
},
|
| 856 |
+
"node_modules/domutils": {
|
| 857 |
+
"version": "3.1.0",
|
| 858 |
+
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
|
| 859 |
+
"integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
|
| 860 |
+
"dependencies": {
|
| 861 |
+
"dom-serializer": "^2.0.0",
|
| 862 |
+
"domelementtype": "^2.3.0",
|
| 863 |
+
"domhandler": "^5.0.3"
|
| 864 |
+
},
|
| 865 |
+
"funding": {
|
| 866 |
+
"url": "https://github.com/fb55/domutils?sponsor=1"
|
| 867 |
+
}
|
| 868 |
+
},
|
| 869 |
+
"node_modules/entities": {
|
| 870 |
+
"version": "4.5.0",
|
| 871 |
+
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
| 872 |
+
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
| 873 |
+
"engines": {
|
| 874 |
+
"node": ">=0.12"
|
| 875 |
+
},
|
| 876 |
+
"funding": {
|
| 877 |
+
"url": "https://github.com/fb55/entities?sponsor=1"
|
| 878 |
+
}
|
| 879 |
+
},
|
| 880 |
+
"node_modules/esprima": {
|
| 881 |
+
"version": "4.0.1",
|
| 882 |
+
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
| 883 |
+
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
| 884 |
+
"license": "BSD-2-Clause",
|
| 885 |
+
"bin": {
|
| 886 |
+
"esparse": "bin/esparse.js",
|
| 887 |
+
"esvalidate": "bin/esvalidate.js"
|
| 888 |
+
},
|
| 889 |
+
"engines": {
|
| 890 |
+
"node": ">=4"
|
| 891 |
+
}
|
| 892 |
+
},
|
| 893 |
+
"node_modules/highlight.js": {
|
| 894 |
+
"version": "11.9.0",
|
| 895 |
+
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
|
| 896 |
+
"integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
|
| 897 |
+
"license": "BSD-3-Clause",
|
| 898 |
+
"engines": {
|
| 899 |
+
"node": ">=12.0.0"
|
| 900 |
+
}
|
| 901 |
+
},
|
| 902 |
+
"node_modules/htmlparser2": {
|
| 903 |
+
"version": "8.0.2",
|
| 904 |
+
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
|
| 905 |
+
"integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
|
| 906 |
+
"funding": [
|
| 907 |
+
"https://github.com/fb55/htmlparser2?sponsor=1",
|
| 908 |
+
{
|
| 909 |
+
"type": "github",
|
| 910 |
+
"url": "https://github.com/sponsors/fb55"
|
| 911 |
+
}
|
| 912 |
+
],
|
| 913 |
+
"dependencies": {
|
| 914 |
+
"domelementtype": "^2.3.0",
|
| 915 |
+
"domhandler": "^5.0.3",
|
| 916 |
+
"domutils": "^3.0.1",
|
| 917 |
+
"entities": "^4.4.0"
|
| 918 |
+
}
|
| 919 |
+
},
|
| 920 |
+
"node_modules/iconv-lite": {
|
| 921 |
+
"version": "0.6.3",
|
| 922 |
+
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
| 923 |
+
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
|
| 924 |
+
"license": "MIT",
|
| 925 |
+
"dependencies": {
|
| 926 |
+
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
| 927 |
+
},
|
| 928 |
+
"engines": {
|
| 929 |
+
"node": ">=0.10.0"
|
| 930 |
+
}
|
| 931 |
+
},
|
| 932 |
+
"node_modules/internmap": {
|
| 933 |
+
"version": "2.0.3",
|
| 934 |
+
"resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
|
| 935 |
+
"integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
|
| 936 |
+
"license": "ISC",
|
| 937 |
+
"engines": {
|
| 938 |
+
"node": ">=12"
|
| 939 |
+
}
|
| 940 |
+
},
|
| 941 |
+
"node_modules/js-yaml": {
|
| 942 |
+
"version": "4.1.0",
|
| 943 |
+
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
| 944 |
+
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
| 945 |
+
"license": "MIT",
|
| 946 |
+
"dependencies": {
|
| 947 |
+
"argparse": "^2.0.1"
|
| 948 |
+
},
|
| 949 |
+
"bin": {
|
| 950 |
+
"js-yaml": "bin/js-yaml.js"
|
| 951 |
+
}
|
| 952 |
+
},
|
| 953 |
+
"node_modules/katex": {
|
| 954 |
+
"version": "0.16.10",
|
| 955 |
+
"resolved": "https://registry.npmjs.org/katex/-/katex-0.16.10.tgz",
|
| 956 |
+
"integrity": "sha512-ZiqaC04tp2O5utMsl2TEZTXxa6WSC4yo0fv5ML++D3QZv/vx2Mct0mTlRx3O+uUkjfuAgOkzsCmq5MiUEsDDdA==",
|
| 957 |
+
"funding": [
|
| 958 |
+
"https://opencollective.com/katex",
|
| 959 |
+
"https://github.com/sponsors/katex"
|
| 960 |
+
],
|
| 961 |
+
"license": "MIT",
|
| 962 |
+
"dependencies": {
|
| 963 |
+
"commander": "^8.3.0"
|
| 964 |
+
},
|
| 965 |
+
"bin": {
|
| 966 |
+
"katex": "cli.js"
|
| 967 |
+
}
|
| 968 |
+
},
|
| 969 |
+
"node_modules/markmap-common": {
|
| 970 |
+
"version": "0.17.0",
|
| 971 |
+
"resolved": "https://registry.npmjs.org/markmap-common/-/markmap-common-0.17.0.tgz",
|
| 972 |
+
"integrity": "sha512-3tuU6PxjrQxivZD18czJKcGKTTRJKMNne1bBflcHqu7yASznJRBM80CC4DzIVGiAb74hTuX8tTfkEQUMu0yKMg==",
|
| 973 |
+
"license": "MIT",
|
| 974 |
+
"peer": true,
|
| 975 |
+
"dependencies": {
|
| 976 |
+
"@babel/runtime": "^7.22.6",
|
| 977 |
+
"@gera2ld/jsx-dom": "^2.2.2",
|
| 978 |
+
"npm2url": "^0.2.4"
|
| 979 |
+
}
|
| 980 |
+
},
|
| 981 |
+
"node_modules/markmap-html-parser": {
|
| 982 |
+
"version": "0.16.1",
|
| 983 |
+
"resolved": "https://registry.npmjs.org/markmap-html-parser/-/markmap-html-parser-0.16.1.tgz",
|
| 984 |
+
"integrity": "sha512-/Mgm4g1qMQ8uEOz8h8K+jPspdgjfw29NqmfTLZSt8yG+vW7fWWduPjGRFc5axAZxCzP7PTzZLEuOxAqOwEg8Bg==",
|
| 985 |
+
"dependencies": {
|
| 986 |
+
"@babel/runtime": "^7.22.6",
|
| 987 |
+
"cheerio": "1.0.0-rc.12"
|
| 988 |
+
},
|
| 989 |
+
"peerDependencies": {
|
| 990 |
+
"markmap-common": "*"
|
| 991 |
+
}
|
| 992 |
+
},
|
| 993 |
+
"node_modules/markmap-lib": {
|
| 994 |
+
"version": "0.16.1",
|
| 995 |
+
"resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.16.1.tgz",
|
| 996 |
+
"integrity": "sha512-jD8VsB67m677IRehGSwwVJDlC6PS+xzDKsJOwdvjZ+ndfXrHa1lyqfvR6mIwvGGUIciF86YEITSKL9hQTHE4Rw==",
|
| 997 |
+
"dependencies": {
|
| 998 |
+
"@babel/runtime": "^7.22.6",
|
| 999 |
+
"highlight.js": "^11.8.0",
|
| 1000 |
+
"js-yaml": "^4.1.0",
|
| 1001 |
+
"katex": "^0.16.8",
|
| 1002 |
+
"markmap-html-parser": "0.16.1",
|
| 1003 |
+
"markmap-view": "0.16.0",
|
| 1004 |
+
"prismjs": "^1.29.0",
|
| 1005 |
+
"remarkable": "^2.0.1",
|
| 1006 |
+
"remarkable-katex": "^1.2.1"
|
| 1007 |
+
},
|
| 1008 |
+
"peerDependencies": {
|
| 1009 |
+
"markmap-common": "*"
|
| 1010 |
+
}
|
| 1011 |
+
},
|
| 1012 |
+
"node_modules/markmap-lib/node_modules/markmap-view": {
|
| 1013 |
+
"version": "0.16.0",
|
| 1014 |
+
"resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.16.0.tgz",
|
| 1015 |
+
"integrity": "sha512-JOiSEThs8B4bAP9E6rcCWOz2SsMwCBFaR76wLARRVb04C/qLiLmvrm675kNPq4lRBAwtugHCYvjG0otpSlB4Cw==",
|
| 1016 |
+
"dependencies": {
|
| 1017 |
+
"@babel/runtime": "^7.22.6",
|
| 1018 |
+
"@gera2ld/jsx-dom": "^2.2.2",
|
| 1019 |
+
"@types/d3": "^7.4.0",
|
| 1020 |
+
"d3": "^7.8.5",
|
| 1021 |
+
"d3-flextree": "^2.1.2"
|
| 1022 |
+
},
|
| 1023 |
+
"peerDependencies": {
|
| 1024 |
+
"markmap-common": "*"
|
| 1025 |
+
}
|
| 1026 |
+
},
|
| 1027 |
+
"node_modules/markmap-render": {
|
| 1028 |
+
"version": "0.17.0",
|
| 1029 |
+
"resolved": "https://registry.npmjs.org/markmap-render/-/markmap-render-0.17.0.tgz",
|
| 1030 |
+
"integrity": "sha512-xSJ7stB2nhdVD5FImCNc6lKfDSt8P9zqV4K5GbbqS/5ByJei4Ssdnl7aI2iKOTkM9m8NlJcDrn+jHorNIgFwbQ==",
|
| 1031 |
+
"license": "MIT",
|
| 1032 |
+
"dependencies": {
|
| 1033 |
+
"@babel/runtime": "^7.22.6",
|
| 1034 |
+
"markmap-view": "0.17.0"
|
| 1035 |
+
},
|
| 1036 |
+
"peerDependencies": {
|
| 1037 |
+
"markmap-common": "*"
|
| 1038 |
+
}
|
| 1039 |
+
},
|
| 1040 |
+
"node_modules/markmap-view": {
|
| 1041 |
+
"version": "0.17.0",
|
| 1042 |
+
"resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.17.0.tgz",
|
| 1043 |
+
"integrity": "sha512-V4n5gXbIk7b/ns/gzoNoMaRu7Es+9OLUqfRqj/EiWuiYMlmmQ/rN8NDCgPcuTAnr0hJmor7UXaKYqWL275LspA==",
|
| 1044 |
+
"license": "MIT",
|
| 1045 |
+
"dependencies": {
|
| 1046 |
+
"@babel/runtime": "^7.22.6",
|
| 1047 |
+
"@gera2ld/jsx-dom": "^2.2.2",
|
| 1048 |
+
"@types/d3": "^7.4.0",
|
| 1049 |
+
"d3": "^7.8.5",
|
| 1050 |
+
"d3-flextree": "^2.1.2"
|
| 1051 |
+
},
|
| 1052 |
+
"peerDependencies": {
|
| 1053 |
+
"markmap-common": "*"
|
| 1054 |
+
}
|
| 1055 |
+
},
|
| 1056 |
+
"node_modules/npm2url": {
|
| 1057 |
+
"version": "0.2.4",
|
| 1058 |
+
"resolved": "https://registry.npmjs.org/npm2url/-/npm2url-0.2.4.tgz",
|
| 1059 |
+
"integrity": "sha512-arzGp/hQz0Ey+ZGhF64XVH7Xqwd+1Q/po5uGiBbzph8ebX6T0uvt3N7c1nBHQNsQVykQgHhqoRTX7JFcHecGuw==",
|
| 1060 |
+
"license": "MIT",
|
| 1061 |
+
"peer": true
|
| 1062 |
+
},
|
| 1063 |
+
"node_modules/nth-check": {
|
| 1064 |
+
"version": "2.1.1",
|
| 1065 |
+
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
| 1066 |
+
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
|
| 1067 |
+
"dependencies": {
|
| 1068 |
+
"boolbase": "^1.0.0"
|
| 1069 |
+
},
|
| 1070 |
+
"funding": {
|
| 1071 |
+
"url": "https://github.com/fb55/nth-check?sponsor=1"
|
| 1072 |
+
}
|
| 1073 |
+
},
|
| 1074 |
+
"node_modules/parse5": {
|
| 1075 |
+
"version": "7.1.2",
|
| 1076 |
+
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
|
| 1077 |
+
"integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
|
| 1078 |
+
"dependencies": {
|
| 1079 |
+
"entities": "^4.4.0"
|
| 1080 |
+
},
|
| 1081 |
+
"funding": {
|
| 1082 |
+
"url": "https://github.com/inikulin/parse5?sponsor=1"
|
| 1083 |
+
}
|
| 1084 |
+
},
|
| 1085 |
+
"node_modules/parse5-htmlparser2-tree-adapter": {
|
| 1086 |
+
"version": "7.0.0",
|
| 1087 |
+
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
|
| 1088 |
+
"integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
|
| 1089 |
+
"dependencies": {
|
| 1090 |
+
"domhandler": "^5.0.2",
|
| 1091 |
+
"parse5": "^7.0.0"
|
| 1092 |
+
},
|
| 1093 |
+
"funding": {
|
| 1094 |
+
"url": "https://github.com/inikulin/parse5?sponsor=1"
|
| 1095 |
+
}
|
| 1096 |
+
},
|
| 1097 |
+
"node_modules/prismjs": {
|
| 1098 |
+
"version": "1.29.0",
|
| 1099 |
+
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
|
| 1100 |
+
"integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
|
| 1101 |
+
"license": "MIT",
|
| 1102 |
+
"engines": {
|
| 1103 |
+
"node": ">=6"
|
| 1104 |
+
}
|
| 1105 |
+
},
|
| 1106 |
+
"node_modules/regenerator-runtime": {
|
| 1107 |
+
"version": "0.14.1",
|
| 1108 |
+
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
| 1109 |
+
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
|
| 1110 |
+
"license": "MIT"
|
| 1111 |
+
},
|
| 1112 |
+
"node_modules/remarkable": {
|
| 1113 |
+
"version": "2.0.1",
|
| 1114 |
+
"resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz",
|
| 1115 |
+
"integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==",
|
| 1116 |
+
"dependencies": {
|
| 1117 |
+
"argparse": "^1.0.10",
|
| 1118 |
+
"autolinker": "^3.11.0"
|
| 1119 |
+
},
|
| 1120 |
+
"bin": {
|
| 1121 |
+
"remarkable": "bin/remarkable.js"
|
| 1122 |
+
},
|
| 1123 |
+
"engines": {
|
| 1124 |
+
"node": ">= 6.0.0"
|
| 1125 |
+
}
|
| 1126 |
+
},
|
| 1127 |
+
"node_modules/remarkable-katex": {
|
| 1128 |
+
"version": "1.2.1",
|
| 1129 |
+
"resolved": "https://registry.npmjs.org/remarkable-katex/-/remarkable-katex-1.2.1.tgz",
|
| 1130 |
+
"integrity": "sha512-Y1VquJBZnaVsfsVcKW2hmjT+pDL7mp8l5WAVlvuvViltrdok2m1AIKmJv8SsH+mBY84PoMw67t3kTWw1dIm8+g=="
|
| 1131 |
+
},
|
| 1132 |
+
"node_modules/remarkable/node_modules/argparse": {
|
| 1133 |
+
"version": "1.0.10",
|
| 1134 |
+
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
| 1135 |
+
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
| 1136 |
+
"dependencies": {
|
| 1137 |
+
"sprintf-js": "~1.0.2"
|
| 1138 |
+
}
|
| 1139 |
+
},
|
| 1140 |
+
"node_modules/robust-predicates": {
|
| 1141 |
+
"version": "3.0.2",
|
| 1142 |
+
"resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
|
| 1143 |
+
"integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==",
|
| 1144 |
+
"license": "Unlicense"
|
| 1145 |
+
},
|
| 1146 |
+
"node_modules/rw": {
|
| 1147 |
+
"version": "1.3.3",
|
| 1148 |
+
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
|
| 1149 |
+
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
|
| 1150 |
+
"license": "BSD-3-Clause"
|
| 1151 |
+
},
|
| 1152 |
+
"node_modules/safer-buffer": {
|
| 1153 |
+
"version": "2.1.2",
|
| 1154 |
+
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
| 1155 |
+
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
| 1156 |
+
"license": "MIT"
|
| 1157 |
+
},
|
| 1158 |
+
"node_modules/sprintf-js": {
|
| 1159 |
+
"version": "1.0.3",
|
| 1160 |
+
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
| 1161 |
+
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
|
| 1162 |
+
"license": "BSD-3-Clause"
|
| 1163 |
+
},
|
| 1164 |
+
"node_modules/tslib": {
|
| 1165 |
+
"version": "2.6.2",
|
| 1166 |
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
| 1167 |
+
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
|
| 1168 |
+
},
|
| 1169 |
+
"node_modules/yaml-front-matter": {
|
| 1170 |
+
"version": "4.1.1",
|
| 1171 |
+
"resolved": "https://registry.npmjs.org/yaml-front-matter/-/yaml-front-matter-4.1.1.tgz",
|
| 1172 |
+
"integrity": "sha512-ULGbghCLsN8Hs8vfExlqrJIe8Hl2TUjD7/zsIGMP8U+dgRXEsDXk4yydxeZJgdGiimP1XB7zhmhOB4/HyfqOyQ==",
|
| 1173 |
+
"license": "MIT",
|
| 1174 |
+
"dependencies": {
|
| 1175 |
+
"commander": "^6.2.0",
|
| 1176 |
+
"js-yaml": "^3.14.1"
|
| 1177 |
+
},
|
| 1178 |
+
"bin": {
|
| 1179 |
+
"yaml-front-matter": "bin/js-yaml-front.js"
|
| 1180 |
+
}
|
| 1181 |
+
},
|
| 1182 |
+
"node_modules/yaml-front-matter/node_modules/argparse": {
|
| 1183 |
+
"version": "1.0.10",
|
| 1184 |
+
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
| 1185 |
+
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
| 1186 |
+
"license": "MIT",
|
| 1187 |
+
"dependencies": {
|
| 1188 |
+
"sprintf-js": "~1.0.2"
|
| 1189 |
+
}
|
| 1190 |
+
},
|
| 1191 |
+
"node_modules/yaml-front-matter/node_modules/commander": {
|
| 1192 |
+
"version": "6.2.1",
|
| 1193 |
+
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
| 1194 |
+
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
|
| 1195 |
+
"license": "MIT",
|
| 1196 |
+
"engines": {
|
| 1197 |
+
"node": ">= 6"
|
| 1198 |
+
}
|
| 1199 |
+
},
|
| 1200 |
+
"node_modules/yaml-front-matter/node_modules/js-yaml": {
|
| 1201 |
+
"version": "3.14.1",
|
| 1202 |
+
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
| 1203 |
+
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
|
| 1204 |
+
"license": "MIT",
|
| 1205 |
+
"dependencies": {
|
| 1206 |
+
"argparse": "^1.0.7",
|
| 1207 |
+
"esprima": "^4.0.0"
|
| 1208 |
+
},
|
| 1209 |
+
"bin": {
|
| 1210 |
+
"js-yaml": "bin/js-yaml.js"
|
| 1211 |
+
}
|
| 1212 |
+
}
|
| 1213 |
+
}
|
| 1214 |
+
}
|
package.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"dependencies": {
|
| 3 |
+
"markmap-lib": "^0.16.1",
|
| 4 |
+
"markmap-render": "^0.17.0",
|
| 5 |
+
"yaml-front-matter": "^4.1.1"
|
| 6 |
+
}
|
| 7 |
+
}
|
project-title.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
MapMaster
|
requirements.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Flask
|
| 2 |
+
python-dotenv
|
| 3 |
+
openai
|
| 4 |
+
gunicorn
|
rollback.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
import shutil
|
| 3 |
+
from datetime import datetime
|
| 4 |
+
|
| 5 |
+
# Obtiene el directorio del script actual
|
| 6 |
+
script_directory = os.path.dirname(os.path.abspath(__file__))
|
| 7 |
+
|
| 8 |
+
# Obtiene todos los directorios de respaldo ordenados por fecha
|
| 9 |
+
backup_directories = sorted(
|
| 10 |
+
[d for d in os.listdir(script_directory) if d.startswith('backup_')],
|
| 11 |
+
key=lambda x: os.path.getmtime(os.path.join(script_directory, x)),
|
| 12 |
+
reverse=True
|
| 13 |
+
)
|
| 14 |
+
|
| 15 |
+
# Verifica si existen directorios de respaldo
|
| 16 |
+
if not backup_directories:
|
| 17 |
+
print("No se encontraron directorios de respaldo. No se puede realizar el rollback.")
|
| 18 |
+
exit()
|
| 19 |
+
|
| 20 |
+
# Selecciona el último directorio de respaldo
|
| 21 |
+
latest_backup_directory = os.path.join(script_directory, backup_directories[0])
|
| 22 |
+
|
| 23 |
+
# Restaura los archivos originales desde el último directorio de respaldo
|
| 24 |
+
backup_files = [f for f in os.listdir(
|
| 25 |
+
latest_backup_directory) if f.endswith('.html')]
|
| 26 |
+
for file in backup_files:
|
| 27 |
+
shutil.copy2(os.path.join(latest_backup_directory, file), script_directory)
|
| 28 |
+
|
| 29 |
+
# Elimina el último directorio de respaldo
|
| 30 |
+
shutil.rmtree(latest_backup_directory)
|
| 31 |
+
|
| 32 |
+
print(
|
| 33 |
+
f"Rollback completado. Los archivos originales han sido restaurados desde '{latest_backup_directory}' y el respaldo ha sido eliminado.")
|
static/assets/logo.png
ADDED
|
static/css/styles.css
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
* {
|
| 2 |
+
margin: 0;
|
| 3 |
+
padding: 0;
|
| 4 |
+
font-family: Arial, sans-serif;
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
body {
|
| 8 |
+
background-color: #242e3d;
|
| 9 |
+
color: white;
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
#mindmap {
|
| 13 |
+
display: block;
|
| 14 |
+
width: 100vw;
|
| 15 |
+
height: 100vh;
|
| 16 |
+
color: white;
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
#sidebar {
|
| 20 |
+
position: fixed;
|
| 21 |
+
left: 0;
|
| 22 |
+
top: 0;
|
| 23 |
+
width: 200px;
|
| 24 |
+
height: 100%;
|
| 25 |
+
background-color: #33475b;
|
| 26 |
+
color: white;
|
| 27 |
+
padding: 10px;
|
| 28 |
+
box-sizing: border-box;
|
| 29 |
+
overflow-y: auto;
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
#sidebar h2 {
|
| 33 |
+
font-size: 24px;
|
| 34 |
+
text-align: center;
|
| 35 |
+
margin-bottom: 20px;
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
#sidebar a {
|
| 39 |
+
display: block;
|
| 40 |
+
color: white;
|
| 41 |
+
padding: 10px 20px;
|
| 42 |
+
text-decoration: none;
|
| 43 |
+
transition: background-color 0.3s;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
#sidebar a.active {
|
| 47 |
+
background-color: #4caf50;
|
| 48 |
+
color: white;
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
#sidebar a:hover:not(.active) {
|
| 52 |
+
background-color: #555;
|
| 53 |
+
color: white;
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
#logo {
|
| 57 |
+
position: fixed;
|
| 58 |
+
bottom: 10px;
|
| 59 |
+
right: 10px;
|
| 60 |
+
width: 50px;
|
| 61 |
+
height: auto;
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
#loading {
|
| 65 |
+
display: none;
|
| 66 |
+
color: white;
|
| 67 |
+
text-align: center;
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
#response-container {
|
| 71 |
+
background-color: white;
|
| 72 |
+
color: black;
|
| 73 |
+
padding: 10px;
|
| 74 |
+
border-radius: 5px;
|
| 75 |
+
margin-top: 20px;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
pre {
|
| 79 |
+
white-space: pre-wrap;
|
| 80 |
+
word-wrap: break-word;
|
| 81 |
+
background-color: #f8f9fa;
|
| 82 |
+
padding: 10px;
|
| 83 |
+
border-radius: 5px;
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
#settings {
|
| 87 |
+
position: fixed;
|
| 88 |
+
top: 10px;
|
| 89 |
+
right: 10px;
|
| 90 |
+
cursor: pointer;
|
| 91 |
+
font-size: 24px;
|
| 92 |
+
color: white;
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
#settings-menu {
|
| 96 |
+
display: none;
|
| 97 |
+
position: fixed;
|
| 98 |
+
top: 40px;
|
| 99 |
+
right: 10px;
|
| 100 |
+
background-color: #33475b;
|
| 101 |
+
padding: 10px;
|
| 102 |
+
border-radius: 5px;
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
#settings-menu ul {
|
| 106 |
+
list-style: none;
|
| 107 |
+
padding: 0;
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
#settings-menu ul li {
|
| 111 |
+
padding: 5px 0;
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
#settings-menu ul li a {
|
| 115 |
+
color: white;
|
| 116 |
+
text-decoration: none;
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
#settings-menu ul li a:hover {
|
| 120 |
+
text-decoration: underline;
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
#response-container ul {
|
| 124 |
+
list-style-type: none;
|
| 125 |
+
padding: 0;
|
| 126 |
+
margin: 0;
|
| 127 |
+
max-width: 600px;
|
| 128 |
+
margin: auto;
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
#response-container ul li {
|
| 132 |
+
background: #fff;
|
| 133 |
+
margin: 10px 0;
|
| 134 |
+
padding: 15px;
|
| 135 |
+
border-radius: 5px;
|
| 136 |
+
display: flex;
|
| 137 |
+
justify-content: space-between;
|
| 138 |
+
align-items: center;
|
| 139 |
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
| 140 |
+
transition: background 0.3s;
|
| 141 |
+
}
|
| 142 |
+
|
| 143 |
+
#response-container ul li:hover {
|
| 144 |
+
background: #f9f9f9;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
#response-container ul li button {
|
| 148 |
+
background-color: #ff6b6b;
|
| 149 |
+
border: none;
|
| 150 |
+
color: white;
|
| 151 |
+
padding: 10px 15px;
|
| 152 |
+
border-radius: 5px;
|
| 153 |
+
cursor: pointer;
|
| 154 |
+
font-size: 14px;
|
| 155 |
+
transition: background-color 0.3s;
|
| 156 |
+
}
|
| 157 |
+
|
| 158 |
+
#response-container ul li button:hover {
|
| 159 |
+
background-color: #ff4c4c;
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
#response-container ul li span {
|
| 163 |
+
flex-grow: 1;
|
| 164 |
+
margin-right: 10px;
|
| 165 |
+
}
|
templates/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.html
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
<head>
|
| 4 |
+
<link rel="stylesheet" type="text/css" href="/static/css/styles.css">
|
| 5 |
+
<meta charset="UTF-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
| 8 |
+
<title>Impresionismo Español</title>
|
| 9 |
+
<style>
|
| 10 |
+
* {
|
| 11 |
+
margin: 0;
|
| 12 |
+
padding: 0;
|
| 13 |
+
}
|
| 14 |
+
#mindmap {
|
| 15 |
+
display: block;
|
| 16 |
+
width: 100vw;
|
| 17 |
+
height: 100vh;
|
| 18 |
+
}
|
| 19 |
+
</style>
|
| 20 |
+
|
| 21 |
+
</head>
|
| 22 |
+
<body>
|
| 23 |
+
|
| 24 |
+
<div id="sidebar">
|
| 25 |
+
<h2>Project</h2>
|
| 26 |
+
<a href="/templates/index.html">MapMaster Chat</a>
|
| 27 |
+
<a href="/templates/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.html">Spider-Man</a>
|
| 28 |
+
<a href="/templates/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.html" class="active">Impresionismo Español</a>
|
| 29 |
+
<a href="/templates/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.html">Arte Abstracto Español</a>
|
| 30 |
+
<a href="/templates/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.html">Daredevil</a>
|
| 31 |
+
|
| 32 |
+
</div>
|
| 33 |
+
|
| 34 |
+
<svg id="mindmap"></svg>
|
| 35 |
+
<script src="https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.min.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-view@0.17.0/dist/browser/index.js"></script><script>((getMarkmap, getOptions, root2, jsonOptions) => {
|
| 36 |
+
const markmap = getMarkmap();
|
| 37 |
+
window.mm = markmap.Markmap.create(
|
| 38 |
+
"svg#mindmap",
|
| 39 |
+
(getOptions || markmap.deriveOptions)(jsonOptions),
|
| 40 |
+
root2
|
| 41 |
+
);
|
| 42 |
+
})(() => window.markmap,null,{"content":"Impresionismo Español","children":[{"content":"Contexto Histórico","children":[{"content":"Finales del siglo XIX","children":[],"payload":{"lines":"4,5"}},{"content":"Influencias Francesas","children":[],"payload":{"lines":"5,7"}}],"payload":{"lines":"3,4"}},{"content":"Características","children":[{"content":"Uso de la luz y el color","children":[],"payload":{"lines":"8,9"}},{"content":"Pinceladas sueltas y rápidas","children":[],"payload":{"lines":"9,10"}},{"content":"Temas cotidianos y naturales","children":[],"payload":{"lines":"10,12"}}],"payload":{"lines":"7,8"}},{"content":"Principales Artistas","children":[{"content":"Joaquín Sorolla","children":[{"content":"Especialización en escenas de playa","children":[],"payload":{"lines":"14,15"}},{"content":"Dominio de la luz mediterránea","children":[],"payload":{"lines":"15,16"}}],"payload":{"lines":"13,16"}},{"content":"Darío de Regoyos","children":[{"content":"Experimentación con color y técnica","children":[],"payload":{"lines":"17,18"}},{"content":"Influencia del impresionismo europeo","children":[],"payload":{"lines":"18,20"}}],"payload":{"lines":"16,20"}}],"payload":{"lines":"12,13"}},{"content":"Obras Representativas","children":[{"content":"\"Paseo a orillas del mar\" - Sorolla","children":[],"payload":{"lines":"21,22"}},{"content":"\"La Concha, nocturno\" - Regoyos","children":[],"payload":{"lines":"22,24"}}],"payload":{"lines":"20,21"}},{"content":"Influencias Externas","children":[{"content":"Claude Monet","children":[],"payload":{"lines":"25,26"}},{"content":"Édouard Manet","children":[],"payload":{"lines":"26,28"}}],"payload":{"lines":"24,25"}},{"content":"Impacto y Legado","children":[{"content":"Evolución hacia el modernismo","children":[],"payload":{"lines":"29,30"}},{"content":"Influencia en generaciones posteriores de artistas","children":[],"payload":{"lines":"30,32"}}],"payload":{"lines":"28,29"}},{"content":"Links","children":[{"content":"<a href=\"https://es.wikipedia.org/wiki/Impresionismo\">Impresionismo</a>","children":[],"payload":{"lines":"33,34"}}],"payload":{"lines":"32,33"}}],"payload":{"lines":"1,2"}},null)</script>
|
| 43 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 44 |
+
</body>
|
| 45 |
+
</html>
|
templates/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.html
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
<head>
|
| 4 |
+
<link rel="stylesheet" type="text/css" href="/static/css/styles.css">
|
| 5 |
+
<meta charset="UTF-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
| 8 |
+
<title>Daredevil</title>
|
| 9 |
+
<style>
|
| 10 |
+
* {
|
| 11 |
+
margin: 0;
|
| 12 |
+
padding: 0;
|
| 13 |
+
}
|
| 14 |
+
#mindmap {
|
| 15 |
+
display: block;
|
| 16 |
+
width: 100vw;
|
| 17 |
+
height: 100vh;
|
| 18 |
+
}
|
| 19 |
+
</style>
|
| 20 |
+
|
| 21 |
+
</head>
|
| 22 |
+
<body>
|
| 23 |
+
|
| 24 |
+
<div id="sidebar">
|
| 25 |
+
<h2>Project</h2>
|
| 26 |
+
<a href="/templates/index.html">MapMaster Chat</a>
|
| 27 |
+
<a href="/templates/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.html">Spider-Man</a>
|
| 28 |
+
<a href="/templates/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.html">Impresionismo Español</a>
|
| 29 |
+
<a href="/templates/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.html">Arte Abstracto Español</a>
|
| 30 |
+
<a href="/templates/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.html" class="active">Daredevil</a>
|
| 31 |
+
|
| 32 |
+
</div>
|
| 33 |
+
|
| 34 |
+
<svg id="mindmap"></svg>
|
| 35 |
+
<script src="https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.min.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-view@0.17.0/dist/browser/index.js"></script><script>((getMarkmap, getOptions, root2, jsonOptions) => {
|
| 36 |
+
const markmap = getMarkmap();
|
| 37 |
+
window.mm = markmap.Markmap.create(
|
| 38 |
+
"svg#mindmap",
|
| 39 |
+
(getOptions || markmap.deriveOptions)(jsonOptions),
|
| 40 |
+
root2
|
| 41 |
+
);
|
| 42 |
+
})(() => window.markmap,null,{"content":"Daredevil","children":[{"content":"Identidad","children":[{"content":"Nombre real: Matt Murdock","children":[],"payload":{"lines":"4,5"}},{"content":"Ocupación: Abogado, Vigilante","children":[],"payload":{"lines":"5,7"}}],"payload":{"lines":"3,4"}},{"content":"Origen","children":[{"content":"Creado por: Stan Lee y Bill Everett","children":[],"payload":{"lines":"8,9"}},{"content":"Primera aparición: Daredevil #1 (1964)","children":[],"payload":{"lines":"9,10"}},{"content":"Accidentes: exposición a residuos radiactivos","children":[],"payload":{"lines":"10,12"}}],"payload":{"lines":"7,8"}},{"content":"Habilidades","children":[{"content":"Sentidos superdesarrollados","children":[{"content":"Vista","children":[],"payload":{"lines":"14,15"}},{"content":"Oído","children":[],"payload":{"lines":"15,16"}},{"content":"Olfato","children":[],"payload":{"lines":"16,17"}},{"content":"Tacto","children":[],"payload":{"lines":"17,18"}},{"content":"Gusto","children":[],"payload":{"lines":"18,19"}}],"payload":{"lines":"13,19"}},{"content":"Acrobacias y combate cuerpo a cuerpo","children":[],"payload":{"lines":"19,21"}}],"payload":{"lines":"12,13"}},{"content":"Villanos","children":[{"content":"Kingpin","children":[],"payload":{"lines":"22,23"}},{"content":"Bullseye","children":[],"payload":{"lines":"23,24"}},{"content":"The Hand","children":[],"payload":{"lines":"24,25"}},{"content":"Elektra (a veces)","children":[],"payload":{"lines":"25,27"}}],"payload":{"lines":"21,22"}},{"content":"Aliados","children":[{"content":"Foggy Nelson","children":[],"payload":{"lines":"28,29"}},{"content":"Karen Page","children":[],"payload":{"lines":"29,30"}},{"content":"Elektra","children":[],"payload":{"lines":"30,31"}},{"content":"Spider-Man","children":[],"payload":{"lines":"31,33"}}],"payload":{"lines":"27,28"}},{"content":"Adaptaciones","children":[{"content":"Series de TV","children":[{"content":"Daredevil (Netflix)","children":[],"payload":{"lines":"35,36"}}],"payload":{"lines":"34,36"}},{"content":"Películas","children":[{"content":"Daredevil (2003)","children":[],"payload":{"lines":"37,39"}}],"payload":{"lines":"36,39"}}],"payload":{"lines":"33,34"}},{"content":"Cultura Popular","children":[{"content":"Comic","children":[{"content":"Series regulares","children":[],"payload":{"lines":"41,42"}},{"content":"Miniseries","children":[],"payload":{"lines":"42,43"}}],"payload":{"lines":"40,43"}},{"content":"Juegos","children":[{"content":"Videojuegos","children":[],"payload":{"lines":"44,45"}},{"content":"Juegos de mesa","children":[],"payload":{"lines":"45,47"}}],"payload":{"lines":"43,47"}}],"payload":{"lines":"39,40"}},{"content":"Links","children":[{"content":"<a href=\"https://es.wikipedia.org/wiki/Daredevil_(c%C3%B3mic)\">Más información en Wikipedia</a>","children":[],"payload":{"lines":"48,49"}}],"payload":{"lines":"47,48"}}],"payload":{"lines":"1,2"}},null)</script>
|
| 43 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 44 |
+
</body>
|
| 45 |
+
</html>
|
templates/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.html
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
<head>
|
| 4 |
+
<link rel="stylesheet" type="text/css" href="/static/css/styles.css">
|
| 5 |
+
<meta charset="UTF-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
| 8 |
+
<title>Spider-Man</title>
|
| 9 |
+
<style>
|
| 10 |
+
* {
|
| 11 |
+
margin: 0;
|
| 12 |
+
padding: 0;
|
| 13 |
+
}
|
| 14 |
+
#mindmap {
|
| 15 |
+
display: block;
|
| 16 |
+
width: 100vw;
|
| 17 |
+
height: 100vh;
|
| 18 |
+
}
|
| 19 |
+
</style>
|
| 20 |
+
|
| 21 |
+
</head>
|
| 22 |
+
<body>
|
| 23 |
+
|
| 24 |
+
<div id="sidebar">
|
| 25 |
+
<h2>Project</h2>
|
| 26 |
+
<a href="/templates/index.html">MapMaster Chat</a>
|
| 27 |
+
<a href="/templates/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.html" class="active">Spider-Man</a>
|
| 28 |
+
<a href="/templates/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.html">Impresionismo Español</a>
|
| 29 |
+
<a href="/templates/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.html">Arte Abstracto Español</a>
|
| 30 |
+
<a href="/templates/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.html">Daredevil</a>
|
| 31 |
+
|
| 32 |
+
</div>
|
| 33 |
+
|
| 34 |
+
<svg id="mindmap"></svg>
|
| 35 |
+
<script src="https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.min.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-view@0.17.0/dist/browser/index.js"></script><script>((getMarkmap, getOptions, root2, jsonOptions) => {
|
| 36 |
+
const markmap = getMarkmap();
|
| 37 |
+
window.mm = markmap.Markmap.create(
|
| 38 |
+
"svg#mindmap",
|
| 39 |
+
(getOptions || markmap.deriveOptions)(jsonOptions),
|
| 40 |
+
root2
|
| 41 |
+
);
|
| 42 |
+
})(() => window.markmap,null,{"content":"Spider-Man","children":[{"content":"Origins","children":[{"content":"Created by Stan Lee and Steve Ditko","children":[],"payload":{"lines":"4,5"}},{"content":"First appearance in Amazing Fantasy #15 (1962)","children":[],"payload":{"lines":"5,6"}},{"content":"Bitten by a radioactive spider","children":[],"payload":{"lines":"6,8"}}],"payload":{"lines":"3,4"}},{"content":"Superpowers","children":[{"content":"Superhuman strength","children":[],"payload":{"lines":"9,10"}},{"content":"Wall-crawling","children":[],"payload":{"lines":"10,11"}},{"content":"Spider-sense","children":[],"payload":{"lines":"11,12"}},{"content":"Enhanced agility and reflexes","children":[],"payload":{"lines":"12,13"}},{"content":"Web-shooting (via mechanical web-shooters)","children":[],"payload":{"lines":"13,15"}}],"payload":{"lines":"8,9"}},{"content":"Alter Ego","children":[{"content":"Peter Parker","children":[{"content":"High school student/photographer/scientist","children":[],"payload":{"lines":"17,18"}},{"content":"Uncle Ben's \"With great power, comes great responsibility\"","children":[],"payload":{"lines":"18,20"}}],"payload":{"lines":"16,20"}}],"payload":{"lines":"15,16"}},{"content":"Main Villains","children":[{"content":"Green Goblin (Norman Osborn)","children":[],"payload":{"lines":"21,22"}},{"content":"Doctor Octopus (Otto Octavius)","children":[],"payload":{"lines":"22,23"}},{"content":"Venom (Eddie Brock)","children":[],"payload":{"lines":"23,24"}},{"content":"The Vulture (Adrian Toomes)","children":[],"payload":{"lines":"24,25"}},{"content":"Sandman (Flint Marko)","children":[],"payload":{"lines":"25,27"}}],"payload":{"lines":"20,21"}},{"content":"Allies","children":[{"content":"Aunt May","children":[],"payload":{"lines":"28,29"}},{"content":"Mary Jane Watson","children":[],"payload":{"lines":"29,30"}},{"content":"Gwen Stacy","children":[],"payload":{"lines":"30,31"}},{"content":"Harry Osborn","children":[],"payload":{"lines":"31,32"}},{"content":"The Avengers","children":[],"payload":{"lines":"32,34"}}],"payload":{"lines":"27,28"}},{"content":"Adaptations","children":[{"content":"Comics","children":[],"payload":{"lines":"35,36"}},{"content":"Animated TV Shows","children":[],"payload":{"lines":"36,37"}},{"content":"Movies","children":[{"content":"Tobey Maguire","children":[],"payload":{"lines":"38,39"}},{"content":"Andrew Garfield","children":[],"payload":{"lines":"39,40"}},{"content":"Tom Holland","children":[],"payload":{"lines":"40,41"}}],"payload":{"lines":"37,41"}},{"content":"Video Games","children":[],"payload":{"lines":"41,43"}}],"payload":{"lines":"34,35"}},{"content":"Impact","children":[{"content":"Cultural Icon","children":[],"payload":{"lines":"44,45"}},{"content":"Merchandise","children":[],"payload":{"lines":"45,46"}},{"content":"Inspiration to fans","children":[],"payload":{"lines":"46,48"}}],"payload":{"lines":"43,44"}},{"content":"Links","children":[{"content":"<a href=\"https://en.wikipedia.org/wiki/Spider-Man\">Spider-Man (Wikipedia)</a>","children":[],"payload":{"lines":"49,50"}}],"payload":{"lines":"48,49"}}],"payload":{"lines":"1,2"}},null)</script>
|
| 43 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 44 |
+
</body>
|
| 45 |
+
</html>
|
templates/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.html
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html>
|
| 3 |
+
<head>
|
| 4 |
+
<link rel="stylesheet" type="text/css" href="/static/css/styles.css">
|
| 5 |
+
<meta charset="UTF-8">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 7 |
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
| 8 |
+
<title>Arte Abstracto Español</title>
|
| 9 |
+
<style>
|
| 10 |
+
* {
|
| 11 |
+
margin: 0;
|
| 12 |
+
padding: 0;
|
| 13 |
+
}
|
| 14 |
+
#mindmap {
|
| 15 |
+
display: block;
|
| 16 |
+
width: 100vw;
|
| 17 |
+
height: 100vh;
|
| 18 |
+
}
|
| 19 |
+
</style>
|
| 20 |
+
|
| 21 |
+
</head>
|
| 22 |
+
<body>
|
| 23 |
+
|
| 24 |
+
<div id="sidebar">
|
| 25 |
+
<h2>Project</h2>
|
| 26 |
+
<a href="/templates/index.html">MapMaster Chat</a>
|
| 27 |
+
<a href="/templates/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.html">Spider-Man</a>
|
| 28 |
+
<a href="/templates/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.html">Impresionismo Español</a>
|
| 29 |
+
<a href="/templates/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.html" class="active">Arte Abstracto Español</a>
|
| 30 |
+
<a href="/templates/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.html">Daredevil</a>
|
| 31 |
+
|
| 32 |
+
</div>
|
| 33 |
+
|
| 34 |
+
<svg id="mindmap"></svg>
|
| 35 |
+
<script src="https://cdn.jsdelivr.net/npm/d3@7.8.5/dist/d3.min.js"></script><script src="https://cdn.jsdelivr.net/npm/markmap-view@0.17.0/dist/browser/index.js"></script><script>((getMarkmap, getOptions, root2, jsonOptions) => {
|
| 36 |
+
const markmap = getMarkmap();
|
| 37 |
+
window.mm = markmap.Markmap.create(
|
| 38 |
+
"svg#mindmap",
|
| 39 |
+
(getOptions || markmap.deriveOptions)(jsonOptions),
|
| 40 |
+
root2
|
| 41 |
+
);
|
| 42 |
+
})(() => window.markmap,null,{"content":"Arte Abstracto Español","children":[{"content":"Origen","children":[{"content":"Vanguardias del Siglo XX","children":[],"payload":{"lines":"4,5"}},{"content":"Influencias Europeas","children":[],"payload":{"lines":"5,6"}},{"content":"Guerra Civil Española","children":[],"payload":{"lines":"6,8"}}],"payload":{"lines":"3,4"}},{"content":"Artistas Destacados","children":[{"content":"Antoni Tàpies","children":[{"content":"Materialidad","children":[],"payload":{"lines":"10,11"}},{"content":"Textura","children":[],"payload":{"lines":"11,12"}}],"payload":{"lines":"9,12"}},{"content":"Pablo Picasso","children":[{"content":"Periodo Azul","children":[],"payload":{"lines":"13,14"}},{"content":"Cubismo","children":[],"payload":{"lines":"14,15"}}],"payload":{"lines":"12,15"}},{"content":"Juan Gris","children":[{"content":"Collage","children":[],"payload":{"lines":"16,17"}},{"content":"Geometría","children":[],"payload":{"lines":"17,19"}}],"payload":{"lines":"15,19"}}],"payload":{"lines":"8,9"}},{"content":"Movimientos","children":[{"content":"Surrealismo","children":[],"payload":{"lines":"20,21"}},{"content":"Expresionismo Abstracto","children":[],"payload":{"lines":"21,22"}},{"content":"Informalismo","children":[],"payload":{"lines":"22,24"}}],"payload":{"lines":"19,20"}},{"content":"Técnicas y Estilos","children":[{"content":"Pintura","children":[{"content":"Óleo","children":[],"payload":{"lines":"26,27"}},{"content":"Acrílico","children":[],"payload":{"lines":"27,28"}}],"payload":{"lines":"25,28"}},{"content":"Escultura","children":[{"content":"Materiales Diversos","children":[],"payload":{"lines":"29,30"}}],"payload":{"lines":"28,30"}},{"content":"Instalaciones","children":[{"content":"Arte Conceptual","children":[],"payload":{"lines":"31,33"}}],"payload":{"lines":"30,33"}}],"payload":{"lines":"24,25"}},{"content":"Exposiciones Notables","children":[{"content":"Museo Reina Sofía","children":[{"content":"Retrospectivas","children":[],"payload":{"lines":"35,36"}},{"content":"Exposiciones Temporales","children":[],"payload":{"lines":"36,37"}}],"payload":{"lines":"34,37"}},{"content":"Museo Guggenheim Bilbao","children":[{"content":"Exposiciones Permanentes","children":[],"payload":{"lines":"38,39"}},{"content":"Obras Internacionales","children":[],"payload":{"lines":"39,41"}}],"payload":{"lines":"37,41"}}],"payload":{"lines":"33,34"}},{"content":"Influencia Internacional","children":[{"content":"Simposios y Bienales","children":[],"payload":{"lines":"42,43"}},{"content":"Colecciones en Museos Internacionales","children":[],"payload":{"lines":"43,44"}},{"content":"Intercambio Cultural","children":[],"payload":{"lines":"44,46"}}],"payload":{"lines":"41,42"}},{"content":"Recursos","children":[{"content":"<a href=\"https://es.wikipedia.org/wiki/Arte_abstracto\">Wikipedia</a>","children":[],"payload":{"lines":"47,48"}}],"payload":{"lines":"46,47"}}],"payload":{"lines":"1,2"}},null)</script>
|
| 43 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 44 |
+
</body>
|
| 45 |
+
</html>
|
templates/index.html
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<link rel="stylesheet" type="text/css" href="/static/css/styles.css">
|
| 5 |
+
<link rel="stylesheet" type="text/css" href="/static/css/styles.css" />
|
| 6 |
+
<meta charset="UTF-8" />
|
| 7 |
+
<title>MapMaster Chat</title>
|
| 8 |
+
<link
|
| 9 |
+
rel="stylesheet"
|
| 10 |
+
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
|
| 11 |
+
/>
|
| 12 |
+
<link rel="stylesheet" type="text/css" href="/static/css/styles.css" />
|
| 13 |
+
</head>
|
| 14 |
+
<body>
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
<div id="sidebar">
|
| 34 |
+
<h2>Project</h2>
|
| 35 |
+
<a href="/templates/index.html" class="active">MapMaster Chat</a>
|
| 36 |
+
<a href="/templates/acc5298da7e6c28972547fee04ae882f6ee7f582566e2f78d23b63253c8a4741.html">Spider-Man</a>
|
| 37 |
+
<a href="/templates/4638dc9aab9e7422a3632098471765a445a6e8c61316e5cde4dea4ca7538b969.html">Impresionismo Español</a>
|
| 38 |
+
<a href="/templates/bc8c3cc3d2caf61eba4bc498daf9134c68a952ed645fc62d443d111f3f8904ba.html">Arte Abstracto Español</a>
|
| 39 |
+
<a href="/templates/9a7f018817c8ff030971229e20b1b07b4d84ad6ef94621bf3382a1da9ffe3a93.html">Daredevil</a>
|
| 40 |
+
|
| 41 |
+
</div>
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
<div class="container">
|
| 62 |
+
<h1 class="mt-5">Chat con MapMaster</h1>
|
| 63 |
+
<form id="chatForm">
|
| 64 |
+
<div class="form-group">
|
| 65 |
+
<label for="message">Mensaje:</label>
|
| 66 |
+
<textarea
|
| 67 |
+
class="form-control"
|
| 68 |
+
id="message"
|
| 69 |
+
name="message"
|
| 70 |
+
required
|
| 71 |
+
rows="5"
|
| 72 |
+
></textarea>
|
| 73 |
+
</div>
|
| 74 |
+
<button type="submit" class="btn btn-primary">Send</button>
|
| 75 |
+
</form>
|
| 76 |
+
<div class="mt-5" id="response-container">
|
| 77 |
+
<h2>Respuesta</h2>
|
| 78 |
+
<pre id="response"></pre>
|
| 79 |
+
</div>
|
| 80 |
+
<div id="loading">Cargando...</div>
|
| 81 |
+
</div>
|
| 82 |
+
|
| 83 |
+
<div id="settings">⚙️</div>
|
| 84 |
+
<div id="settings-menu">
|
| 85 |
+
<ul>
|
| 86 |
+
<li>
|
| 87 |
+
<a href="#" onclick="showDeleteMapDialog()"
|
| 88 |
+
>Eliminar Mapas Mentales</a
|
| 89 |
+
>
|
| 90 |
+
</li>
|
| 91 |
+
<li>
|
| 92 |
+
<a href="#" onclick="regenerateContent()">Regenerar contenido</a>
|
| 93 |
+
</li>
|
| 94 |
+
</ul>
|
| 95 |
+
</div>
|
| 96 |
+
|
| 97 |
+
<script>
|
| 98 |
+
document
|
| 99 |
+
.getElementById("chatForm")
|
| 100 |
+
.addEventListener("submit", function (event) {
|
| 101 |
+
event.preventDefault();
|
| 102 |
+
const messageInput = document.getElementById("message");
|
| 103 |
+
const message = messageInput.value;
|
| 104 |
+
const responseContainer = document.getElementById("response");
|
| 105 |
+
const loadingIndicator = document.getElementById("loading");
|
| 106 |
+
const formData = new FormData();
|
| 107 |
+
formData.append("message", message);
|
| 108 |
+
|
| 109 |
+
loadingIndicator.style.display = "block";
|
| 110 |
+
responseContainer.textContent = "";
|
| 111 |
+
|
| 112 |
+
fetch("/send_message", {
|
| 113 |
+
method: "POST",
|
| 114 |
+
body: formData,
|
| 115 |
+
})
|
| 116 |
+
.then((response) => response.json())
|
| 117 |
+
.then((data) => {
|
| 118 |
+
loadingIndicator.style.display = "none";
|
| 119 |
+
if (data.markdown) {
|
| 120 |
+
responseContainer.textContent = data.markdown;
|
| 121 |
+
} else if (data.status) {
|
| 122 |
+
responseContainer.textContent = data.status;
|
| 123 |
+
}
|
| 124 |
+
})
|
| 125 |
+
.catch((error) => {
|
| 126 |
+
loadingIndicator.style.display = "none";
|
| 127 |
+
console.error("Error:", error);
|
| 128 |
+
});
|
| 129 |
+
|
| 130 |
+
messageInput.value = ""; // Clear the input field after sending the message
|
| 131 |
+
});
|
| 132 |
+
|
| 133 |
+
document
|
| 134 |
+
.getElementById("settings")
|
| 135 |
+
.addEventListener("click", function () {
|
| 136 |
+
const settingsMenu = document.getElementById("settings-menu");
|
| 137 |
+
if (settingsMenu.style.display === "none") {
|
| 138 |
+
settingsMenu.style.display = "block";
|
| 139 |
+
} else {
|
| 140 |
+
settingsMenu.style.display = "none";
|
| 141 |
+
}
|
| 142 |
+
});
|
| 143 |
+
|
| 144 |
+
function showDeleteMapDialog() {
|
| 145 |
+
fetch("/get_maps")
|
| 146 |
+
.then((response) => response.json())
|
| 147 |
+
.then((data) => {
|
| 148 |
+
let mapList = "<ul>";
|
| 149 |
+
data.maps.forEach((map) => {
|
| 150 |
+
mapList += `<li><span>${map.title}</span><button onclick="deleteMap('${map.filename}')">Eliminar</button></li>`;
|
| 151 |
+
});
|
| 152 |
+
mapList += "</ul>";
|
| 153 |
+
document.getElementById("response").innerHTML = mapList;
|
| 154 |
+
});
|
| 155 |
+
}
|
| 156 |
+
|
| 157 |
+
function deleteMap(filename) {
|
| 158 |
+
fetch(`/delete_map/${filename}`, { method: "DELETE" })
|
| 159 |
+
.then((response) => response.json())
|
| 160 |
+
.then((data) => {
|
| 161 |
+
if (data.success) {
|
| 162 |
+
alert("Mapa eliminado con éxito");
|
| 163 |
+
location.reload();
|
| 164 |
+
} else {
|
| 165 |
+
alert("Error al eliminar el mapa");
|
| 166 |
+
}
|
| 167 |
+
});
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
function regenerateContent() {
|
| 171 |
+
fetch("/regenerate_content", { method: "POST" })
|
| 172 |
+
.then((response) => response.json())
|
| 173 |
+
.then((data) => {
|
| 174 |
+
if (data.success) {
|
| 175 |
+
alert("Contenido regenerado con éxito");
|
| 176 |
+
location.reload();
|
| 177 |
+
} else {
|
| 178 |
+
alert("Error al regenerar el contenido");
|
| 179 |
+
}
|
| 180 |
+
});
|
| 181 |
+
}
|
| 182 |
+
</script>
|
| 183 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo" />
|
| 184 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo" />
|
| 185 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 186 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 187 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 188 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 189 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 190 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 191 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 192 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 193 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 194 |
+
<img id="logo" src="/static/assets/logo.png" alt="Logo">
|
| 195 |
+
</body>
|
| 196 |
+
</html>
|