notebook 7.4.0a0__py3-none-any.whl → 7.4.0a2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of notebook might be problematic. Click here for more details.

Files changed (143) hide show
  1. notebook/__main__.py +1 -0
  2. notebook/_version.py +2 -1
  3. notebook/app.py +1 -0
  4. notebook/static/{131.55bd57735ee0c4d14637.js → 131.ae628045345ebd7a085c.js} +2 -2
  5. notebook/static/{131.55bd57735ee0c4d14637.js.map → 131.ae628045345ebd7a085c.js.map} +1 -1
  6. notebook/static/{1650.df34987fc8eaf3b37523.js → 1650.4a594c955e102170fba4.js} +4 -4
  7. notebook/static/{1650.df34987fc8eaf3b37523.js.map → 1650.4a594c955e102170fba4.js.map} +1 -1
  8. notebook/static/{1684.4dfc6f1843a8ab766dbd.js → 1684.181747c0fff533fb7be1.js} +5 -5
  9. notebook/static/{1684.4dfc6f1843a8ab766dbd.js.map → 1684.181747c0fff533fb7be1.js.map} +1 -1
  10. notebook/static/{1871.c3f107a3e71d9ea2d7ad.js → 1871.29951b77779d94d726d1.js} +2 -2
  11. notebook/static/{1871.c3f107a3e71d9ea2d7ad.js.map → 1871.29951b77779d94d726d1.js.map} +1 -1
  12. notebook/static/{1961.b54eef29d061b04dc70f.js → 1961.6938cff7d2934e7dd1a2.js} +2 -2
  13. notebook/static/{1961.b54eef29d061b04dc70f.js.map → 1961.6938cff7d2934e7dd1a2.js.map} +1 -1
  14. notebook/static/{2228.ee70ff7f4a891eeeced0.js → 2228.4829c4be5d1369fc8c08.js} +3 -3
  15. notebook/static/{2228.ee70ff7f4a891eeeced0.js.map → 2228.4829c4be5d1369fc8c08.js.map} +1 -1
  16. notebook/static/{2552.32126e5a5bb2b09ed7e2.js → 2552.c2ab9815939e1300d66e.js} +18 -4
  17. notebook/static/2552.c2ab9815939e1300d66e.js.map +1 -0
  18. notebook/static/{2666.d98786f639a4e4e03168.js → 2666.39e11f71d749eca59f8e.js} +2 -2
  19. notebook/static/{2666.d98786f639a4e4e03168.js.map → 2666.39e11f71d749eca59f8e.js.map} +1 -1
  20. notebook/static/{28.63a50d509daa9a6995a0.js → 28.b5145a84e3a511427e72.js} +2 -2
  21. notebook/static/{28.63a50d509daa9a6995a0.js.map → 28.b5145a84e3a511427e72.js.map} +1 -1
  22. notebook/static/{3146.fb93a3deb51be976c36d.js → 3146.50775b118f3b16c03cf8.js} +3 -3
  23. notebook/static/{3146.fb93a3deb51be976c36d.js.map → 3146.50775b118f3b16c03cf8.js.map} +1 -1
  24. notebook/static/{3197.def6d3f0b40502a5df32.js → 3197.34f9a9d229aae83d71c9.js} +2 -2
  25. notebook/static/{3197.def6d3f0b40502a5df32.js.map → 3197.34f9a9d229aae83d71c9.js.map} +1 -1
  26. notebook/static/{3384.400a8b102177562c57df.js → 3384.d46675e1fed1d8bf9f38.js} +2 -2
  27. notebook/static/{3384.400a8b102177562c57df.js.map → 3384.d46675e1fed1d8bf9f38.js.map} +1 -1
  28. notebook/static/{3768.8a962f4a4770b8932b99.js → 3768.1c37846cbecbfb1cedf4.js} +19 -19
  29. notebook/static/{7302.fc9ff4960b3b13d19800.js.map → 3768.1c37846cbecbfb1cedf4.js.map} +1 -1
  30. notebook/static/{3797.ad30e7a4bf8dc994e5be.js → 3797.861e562685aa1e1621bb.js} +2 -2
  31. notebook/static/{3797.ad30e7a4bf8dc994e5be.js.map → 3797.861e562685aa1e1621bb.js.map} +1 -1
  32. notebook/static/{4382.56f61de9f4f08fc638d9.js → 4382.c1adbfb7b5186a697e8f.js} +3 -3
  33. notebook/static/{4382.56f61de9f4f08fc638d9.js.map → 4382.c1adbfb7b5186a697e8f.js.map} +1 -1
  34. notebook/static/{4406.51eddbcbc4572f499aa2.js → 4406.aa6e48d547067e1f6a24.js} +7 -7
  35. notebook/static/{4406.51eddbcbc4572f499aa2.js.map → 4406.aa6e48d547067e1f6a24.js.map} +1 -1
  36. notebook/static/{4645.3686d8b1f57c2819b28f.js → 4645.442bd00fdfca9f0b5f06.js} +5 -5
  37. notebook/static/{4645.3686d8b1f57c2819b28f.js.map → 4645.442bd00fdfca9f0b5f06.js.map} +1 -1
  38. notebook/static/{4837.1e3d20a9312c550cc265.js → 4837.3c1870387da3d1a7e16f.js} +3 -3
  39. notebook/static/{4837.1e3d20a9312c550cc265.js.map → 4837.3c1870387da3d1a7e16f.js.map} +1 -1
  40. notebook/static/{5135.26ec75383c5954392ac1.js → 5135.0ecfc3d3763bbc747bc9.js} +11 -11
  41. notebook/static/{5135.26ec75383c5954392ac1.js.map → 5135.0ecfc3d3763bbc747bc9.js.map} +1 -1
  42. notebook/static/{5573.b1294e2fbf9c3b28e234.js → 5573.11c29f783f9d08a1ef3f.js} +18 -18
  43. notebook/static/5573.11c29f783f9d08a1ef3f.js.map +1 -0
  44. notebook/static/{9415.f6b04bc507d720890d12.js → 5585.a3337a5147385302486f.js} +3 -3
  45. notebook/static/{9415.f6b04bc507d720890d12.js.map → 5585.a3337a5147385302486f.js.map} +1 -1
  46. notebook/static/{5601.c31a2a26a6a1b64fc046.js → 5601.9d6cca9449dad4be2d59.js} +5 -5
  47. notebook/static/{5601.c31a2a26a6a1b64fc046.js.map → 5601.9d6cca9449dad4be2d59.js.map} +1 -1
  48. notebook/static/{521.06447e462b57a5eda2e5.js → 6008.b4fc0ceb2a3939eb8b68.js} +2 -2
  49. notebook/static/6008.b4fc0ceb2a3939eb8b68.js.map +1 -0
  50. notebook/static/{6345.1b9c41d5eec22662b13e.js → 6345.be41f5ff79cb9a9bcf3e.js} +5 -5
  51. notebook/static/{6345.1b9c41d5eec22662b13e.js.map → 6345.be41f5ff79cb9a9bcf3e.js.map} +1 -1
  52. notebook/static/{654.4cde6cc75377ee14c2a6.js → 654.40ad9c482d64fddf189e.js} +2 -2
  53. notebook/static/{654.4cde6cc75377ee14c2a6.js.map → 654.40ad9c482d64fddf189e.js.map} +1 -1
  54. notebook/static/{7302.fc9ff4960b3b13d19800.js → 7302.bae18f113fbc82bde8dd.js} +19 -19
  55. notebook/static/{3768.8a962f4a4770b8932b99.js.map → 7302.bae18f113fbc82bde8dd.js.map} +1 -1
  56. notebook/static/{7369.ea736d36d8561480b227.js → 7369.a065dc2ed2f56a44cb0f.js} +2 -2
  57. notebook/static/{7369.ea736d36d8561480b227.js.map → 7369.a065dc2ed2f56a44cb0f.js.map} +1 -1
  58. notebook/static/{757.164b32fa534d2d34a15c.js → 757.86f80ac05f38c4f4be68.js} +101 -818
  59. notebook/static/757.86f80ac05f38c4f4be68.js.map +1 -0
  60. notebook/static/{7811.fa11577c84ea92d4102c.js → 7811.4e69e9d0823ec9b2d218.js} +5 -5
  61. notebook/static/{7811.fa11577c84ea92d4102c.js.map → 7811.4e69e9d0823ec9b2d218.js.map} +1 -1
  62. notebook/static/{7906.9d740da3df9b104b3063.js → 7906.4fc1485cef75bc0cbd28.js} +3 -3
  63. notebook/static/{7906.9d740da3df9b104b3063.js.map → 7906.4fc1485cef75bc0cbd28.js.map} +1 -1
  64. notebook/static/{4811.5557a95d5e8b0f4414cf.js → 8076.16a95895bb2edd1e3ea5.js} +10 -10
  65. notebook/static/8076.16a95895bb2edd1e3ea5.js.map +1 -0
  66. notebook/static/{8579.ce15bee4e632cdfc428a.js → 8579.a1fe3d6050e65996b704.js} +13 -13
  67. notebook/static/{8579.ce15bee4e632cdfc428a.js.map → 8579.a1fe3d6050e65996b704.js.map} +1 -1
  68. notebook/static/{8781.b22be85eccfb4f52f996.js → 8781.99c47de7d954e7d24451.js} +61 -60
  69. notebook/static/8781.99c47de7d954e7d24451.js.map +1 -0
  70. notebook/static/{8875.e2b716b70077938ac46b.js → 8875.315376360b0527f2d92e.js} +4 -4
  71. notebook/static/{8875.e2b716b70077938ac46b.js.map → 8875.315376360b0527f2d92e.js.map} +1 -1
  72. notebook/static/{9068.62a90d6ecbf7bbedb6fe.js → 9068.b2842f92bbfa2dcb3045.js} +3 -3
  73. notebook/static/{9068.62a90d6ecbf7bbedb6fe.js.map → 9068.b2842f92bbfa2dcb3045.js.map} +1 -1
  74. notebook/static/{9294.a00b460070da7492fe36.js → 9294.cd26c4a3945a5c62c172.js} +2 -2
  75. notebook/static/{9294.a00b460070da7492fe36.js.map → 9294.cd26c4a3945a5c62c172.js.map} +1 -1
  76. notebook/static/{9343.b544ded0cf21eeaa40dc.js → 9343.95d9c0bad7fb43ed3b96.js} +2 -2
  77. notebook/static/{9343.b544ded0cf21eeaa40dc.js.map → 9343.95d9c0bad7fb43ed3b96.js.map} +1 -1
  78. notebook/static/{9380.6e8035da970eef337e28.js → 9380.5271a4f758251fe9bd9a.js} +5 -5
  79. notebook/static/{9380.6e8035da970eef337e28.js.map → 9380.5271a4f758251fe9bd9a.js.map} +1 -1
  80. notebook/static/{9619.efb74ffb9ff504a31496.js → 9619.9264baf999dd4a76481d.js} +3 -3
  81. notebook/static/{9619.efb74ffb9ff504a31496.js.map → 9619.9264baf999dd4a76481d.js.map} +1 -1
  82. notebook/static/{9945.6c2941fc8ecd71ed2383.js → 9945.11272c82f2d069936636.js} +2 -2
  83. notebook/static/{9945.6c2941fc8ecd71ed2383.js.map → 9945.11272c82f2d069936636.js.map} +1 -1
  84. notebook/static/main.d169897d1e63bbaa91cb.js +1179 -0
  85. notebook/static/main.d169897d1e63bbaa91cb.js.map +1 -0
  86. notebook/static/{notebook_core.431537f043a6b970b343.js → notebook_core.0dfd038c4062400eb2f0.js} +2045 -1163
  87. notebook/static/{notebook_core.431537f043a6b970b343.js.map → notebook_core.0dfd038c4062400eb2f0.js.map} +1 -1
  88. notebook/static/third-party-licenses.json +103 -115
  89. notebook/templates/consoles.html +1 -1
  90. notebook/templates/edit.html +1 -1
  91. notebook/templates/error.html +1 -1
  92. notebook/templates/notebooks.html +1 -1
  93. notebook/templates/terminals.html +1 -1
  94. notebook/templates/tree.html +1 -1
  95. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/package.json.orig +15 -15
  96. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/documentsearch-extension/package.json.orig +5 -5
  97. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/help-extension/package.json.orig +7 -7
  98. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/package.json.orig +10 -10
  99. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/tree-extension/package.json.orig +16 -16
  100. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/package.json +12 -12
  101. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/schemas/@jupyter-notebook/lab-extension/package.json.orig +11 -11
  102. notebook-7.4.0a2.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/534.b1feb1e5dee752bdfe43.js +1 -0
  103. notebook-7.4.0a0.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/568.c6d6fb361784b40947be.js → notebook-7.4.0a2.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/568.535717f1b07112110997.js +1 -1
  104. notebook-7.4.0a2.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/928.c9dae1baa4490d650ce9.js +1 -0
  105. notebook-7.4.0a2.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/remoteEntry.aa46dc8e35af2ba28d27.js +1 -0
  106. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/third-party-licenses.json +2 -2
  107. {notebook-7.4.0a0.dist-info → notebook-7.4.0a2.dist-info}/METADATA +2 -2
  108. {notebook-7.4.0a0.dist-info → notebook-7.4.0a2.dist-info}/RECORD +132 -132
  109. notebook/static/2552.32126e5a5bb2b09ed7e2.js.map +0 -1
  110. notebook/static/4811.5557a95d5e8b0f4414cf.js.map +0 -1
  111. notebook/static/521.06447e462b57a5eda2e5.js.map +0 -1
  112. notebook/static/5573.b1294e2fbf9c3b28e234.js.map +0 -1
  113. notebook/static/757.164b32fa534d2d34a15c.js.map +0 -1
  114. notebook/static/8781.b22be85eccfb4f52f996.js.map +0 -1
  115. notebook/static/main.1c2bac8c761cfe5da339.js +0 -1179
  116. notebook/static/main.1c2bac8c761cfe5da339.js.map +0 -1
  117. notebook-7.4.0a0.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/928.dcfd24d3e9e3c2595637.js +0 -1
  118. notebook-7.4.0a0.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/992.1664d3a9fe0cce27b960.js +0 -1
  119. notebook-7.4.0a0.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/remoteEntry.e2ff7e3e0eaf6f0f258c.js +0 -1
  120. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/etc/jupyter/jupyter_server_config.d/notebook.json +0 -0
  121. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/applications/jupyter-notebook.desktop +0 -0
  122. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/icons/hicolor/scalable/apps/notebook.svg +0 -0
  123. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/menus.json +0 -0
  124. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/pages.json +0 -0
  125. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/shell.json +0 -0
  126. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/title.json +0 -0
  127. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/top.json +0 -0
  128. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/zen.json +0 -0
  129. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/help-extension/open.json +0 -0
  130. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/checkpoints.json +0 -0
  131. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/edit-notebook-metadata.json +0 -0
  132. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/full-width-notebook.json +0 -0
  133. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/kernel-logo.json +0 -0
  134. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/scroll-output.json +0 -0
  135. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/tree-extension/file-actions.json +0 -0
  136. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/tree-extension/widget.json +0 -0
  137. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/schemas/@jupyter-notebook/lab-extension/interface-switcher.json +0 -0
  138. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/schemas/@jupyter-notebook/lab-extension/launch-tree.json +0 -0
  139. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/93.eae3497dd223d842d198.js +0 -0
  140. {notebook-7.4.0a0.data → notebook-7.4.0a2.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/style.js +0 -0
  141. {notebook-7.4.0a0.dist-info → notebook-7.4.0a2.dist-info}/WHEEL +0 -0
  142. {notebook-7.4.0a0.dist-info → notebook-7.4.0a2.dist-info}/entry_points.txt +0 -0
  143. {notebook-7.4.0a0.dist-info → notebook-7.4.0a2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"8076.16a95895bb2edd1e3ea5.js?v=16a95895bb2edd1e3ea5","mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAqC;AACrC;AACA;AACA;AACA;;AAEA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,4DAAe,yDAAS;;AChCxB,4CAAe,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,GAAG,yCAAyC;;ACArG;;AAE/B,SAAS,iBAAQ;AACjB,qCAAqC,KAAK;AAC1C;;AAEA,2DAAe,iBAAQ;;ACNc;;AAErC;AACA,OAAO,oBAAQ;AACf;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;;AAErB;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAe,KAAK;;AClC6B;AAClB;;AAE/B;AACA,2CAA2C;;AAE3C;;AAEA,kBAAkB,gBAAgB;AAClC;AACA;;AAEA;AACA;;AAEO;AACA;AACQ;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,iBAAK;AACvB;;AAEA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;;AAEA;AACA;;AAEA,WAAW,eAAe;AAC1B,IAAI;;;AAGJ;AACA,8BAA8B;AAC9B,IAAI,eAAe;;;AAGnB;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qDAAqD;;AAErD;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB;;AAEA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB;;AAEA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA,qBAAqB,QAAQ;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uDAAe,IAAI;;AC/FQ;AACE;AAC7B,WAAW,GAAG,aAAa,gBAAI;AAC/B,qDAAe,EAAE;;ACDa;AAcA;;AAE9B;AACA;AACA,0BAA0B,iCAAM;AAChC,sBAAsB,gBAAgB,KAAK;AAC3C;AACA,GAAG;AACH;AACA,2BAA2B,iCAAM;AACjC,KAAK;AACL,UAAU;AACV,gBAAgB,y0BAAy0B;AACz1B,kBAAkB,khBAAkhB;AACpiB;AACA,mCAAmC,iCAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc,iBAAiB,IAAI,QAAQ,mBAAmB,MAAM,KAAK,2GAA2G,mBAAmB,WAAW,qBAAqB,oEAAoE,oDAAoD,uFAAuF,KAAK,aAAa,IAAI,aAAa,IAAI,aAAa,uEAAuE,0BAA0B,IAAI,8CAA8C,IAAI,0BAA0B,IAAI,kCAAkC,4IAA4I,aAAa,IAAI,aAAa,qBAAqB,8CAA8C,IAAI,qBAAqB,IAAI,aAAa,IAAI,aAAa,IAAI,qDAAqD,sCAAsC,+CAA+C,oBAAoB,aAAa,oBAAoB,0CAA0C,mDAAmD,aAAa,8GAA8G,8BAA8B,yEAAyE,8CAA8C,qBAAqB,iBAAiB,IAAI,aAAa;AAChlD,sBAAsB,0BAA0B;AAChD,gCAAgC,iCAAM;AACtC;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;AACL,2BAA2B,iCAAM;AACjC;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iCAAM;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iCAAM;AACZ,iEAAiE;AACjE;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,kCAAkC,iCAAM;AACxC;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,gCAAgC,iCAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,6BAA6B,iCAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,6BAA6B,iCAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,4BAA4B,iCAAM;AAClC;AACA;AACA,OAAO;AACP;AACA,8BAA8B,iCAAM;AACpC;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA,4BAA4B,iCAAM;AAClC;AACA,OAAO;AACP;AACA,iCAAiC,iCAAM;AACvC;AACA;AACA,OAAO;AACP;AACA,qCAAqC,iCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,oCAAoC,iCAAM;AAC1C;AACA;AACA;AACA,OAAO;AACP;AACA,kCAAkC,iCAAM;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,4BAA4B,iCAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,2BAA2B,iCAAM;AACjC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,6BAA6B,iCAAM;AACnC;AACA,OAAO;AACP;AACA,gCAAgC,iCAAM;AACtC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,qCAAqC,iCAAM;AAC3C;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP,4DAA4D;AAC5D,gCAAgC,iCAAM;AACtC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,iCAAiC,iCAAM;AACvC;AACA,OAAO;AACP;AACA,sCAAsC,iCAAM;AAC5C;AACA,OAAO;AACP,iBAAiB,0BAA0B;AAC3C,qCAAqC,iCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oIAAoI,gBAAgB,eAAe,2HAA2H,+KAA+K,oOAAoO,qEAAqE,0FAA0F,cAAc;AAC91B,oBAAoB,yBAAyB,qCAAqC,iBAAiB,kCAAkC,iBAAiB,kCAAkC,aAAa,mEAAmE,eAAe;AACvR;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,iCAAM;AACR;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iCAAM;AACtC;AACA,yBAAyB,uBAAuB;AAChD,IAAI,0BAAG;AACP,IAAI;AACJ;AACA,IAAI,0BAAG,oBAAoB,MAAM,eAAe,KAAK;AACrD;AACA;AACA,CAAC;AACD,kCAAkC,iCAAM;AACxC,oCAAoC,iCAAM;AAC1C;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA,IAAI,0BAAG;AACP;AACA,CAAC;AACD,sCAAsC,iCAAM;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,0BAAG;AACL,CAAC;AACD,uCAAuC,iCAAM;AAC7C,6BAA6B,iCAAM;AACnC;AACA;AACA,EAAE,gCAAK;AACP,CAAC;AACD;AACA;AACA;AACA,6BAA6B,iCAAM,OAAO,qCAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb,mBAAmB;AACnB,mBAAmB;AACnB,iBAAiB;AACjB,iBAAiB;AACjB;;AAEA;AAC8D;AAChB;AACyB;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iCAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACmC;AACnC;AACA;AACA;AACA,8BAA8B,iCAAM;AACpC;AACA;AACA;AACA;AACA,CAAC;AACD,qCAAqC,iCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,0BAA0B,yBAAyB,QAAQ,QAAQ;AACnE;AACA,0BAA0B,4CAAiB;AAC3C,4FAA4F,WAAW,yHAAyH,qCAAS;AACzO,4FAA4F,WAAW,yHAAyH,qCAAS;AACzO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG,WAAW,wHAAwH,qCAAS;AAC7O;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG,WAAW,4HAA4H,qCAAS;AACjP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,YAAY;AAC5G;AACA;AACA;AACA;AACA;AACA,gGAAgG,YAAY;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG,YAAY;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,YAAY;AAC7F;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA,CAAC;AACD,mCAAmC,iCAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oNAAoN,qCAAS;AAC7N,YAAY,2CAA2C;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,CAAC;AACD,qCAAqC,iCAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,kCAAkC,iCAAM;AACxC;AACA,CAAC;AACD,uCAAuC,iCAAM;AAC7C;AACA;AACA;AACA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA,iDAAiD,iCAAM;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAI;AAC3B;AACA,GAAG;AACH;AACA,GAAG,QAAQ,uBAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0OAA0O,qCAAS;AACnP;AACA;AACA,IAAI;AACJ;AACA;AACA,sEAAsE,yBAAyB;AAC/F,KAAK;AACL;AACA;AACA;AACA,CAAC;AACD,2BAA2B,iCAAM;AACjC,SAAS,qCAAS;AAClB,EAAE,0BAAG;AACL,wBAAwB,qCAAS;AACjC;AACA;AACA,qBAAqB,sBAAM;AAC3B;AACA,6CAA6C,sBAAM,mDAAmD,sBAAM;AAC5G,kCAAkC,GAAG;AACrC;AACA;AACA,UAAU,qBAAc;AACxB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,EAAE,wBAAW;AACb;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE,oCAAa;AACf;AACA;AACA;AACA,EAAE,2CAAgB;AAClB,yBAAyB,uBAAuB,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO;AAC3F,CAAC;AACD;AACA;AACA;AACA,YAAY,sBAAsB,EAAE,6BAA6B,EAAE,cAAK;AACxE;AACA;AACA,IAAI;AACJ;AACA,iCAAM;AACN;AACA,6BAA6B,IAAI;AACjC;AACA,iCAAM;AACN;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,iCAAM;AACtC;AACA,YAAY;AACZ,cAAc;AACd;;AAEA;AACA,YAAY;AACZ,cAAc;AACd;;AAEA;AACA,aAAa;AACb,cAAc;AACd;;AAEA;AACA,YAAY;AACZ;AACA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGE","sources":["webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/uuid/dist/esm-browser/stringify.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/uuid/dist/esm-browser/regex.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/uuid/dist/esm-browser/validate.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/uuid/dist/esm-browser/parse.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/uuid/dist/esm-browser/v35.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/uuid/dist/esm-browser/sha1.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/uuid/dist/esm-browser/v5.js","webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/mermaid/dist/chunks/mermaid.core/erDiagram-6RL3IURR.mjs"],"sourcesContent":["import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","import {\n utils_default\n} from \"./chunk-7DKRZKHE.mjs\";\nimport {\n __name,\n clear,\n configureSvgSize,\n getAccDescription,\n getAccTitle,\n getConfig2 as getConfig,\n getDiagramTitle,\n log,\n parseGenericTypes,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n} from \"./chunk-6DBFFHIP.mjs\";\n\n// src/diagrams/er/parser/erDiagram.jison\nvar parser = function() {\n var o = /* @__PURE__ */ __name(function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;\n return o2;\n }, \"o\"), $V0 = [6, 8, 10, 20, 22, 24, 26, 27, 28], $V1 = [1, 10], $V2 = [1, 11], $V3 = [1, 12], $V4 = [1, 13], $V5 = [1, 14], $V6 = [1, 15], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 23], $Va = [1, 24], $Vb = [1, 25], $Vc = [6, 8, 10, 13, 15, 18, 19, 20, 22, 24, 26, 27, 28, 41, 42, 43, 44, 45], $Vd = [1, 34], $Ve = [27, 28, 46, 47], $Vf = [41, 42, 43, 44, 45], $Vg = [17, 34], $Vh = [1, 54], $Vi = [1, 53], $Vj = [17, 34, 36, 38];\n var parser2 = {\n trace: /* @__PURE__ */ __name(function trace() {\n }, \"trace\"),\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"ER_DIAGRAM\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"entityName\": 11, \"relSpec\": 12, \":\": 13, \"role\": 14, \"BLOCK_START\": 15, \"attributes\": 16, \"BLOCK_STOP\": 17, \"SQS\": 18, \"SQE\": 19, \"title\": 20, \"title_value\": 21, \"acc_title\": 22, \"acc_title_value\": 23, \"acc_descr\": 24, \"acc_descr_value\": 25, \"acc_descr_multiline_value\": 26, \"ALPHANUM\": 27, \"ENTITY_NAME\": 28, \"attribute\": 29, \"attributeType\": 30, \"attributeName\": 31, \"attributeKeyTypeList\": 32, \"attributeComment\": 33, \"ATTRIBUTE_WORD\": 34, \"attributeKeyType\": 35, \"COMMA\": 36, \"ATTRIBUTE_KEY\": 37, \"COMMENT\": 38, \"cardinality\": 39, \"relType\": 40, \"ZERO_OR_ONE\": 41, \"ZERO_OR_MORE\": 42, \"ONE_OR_MORE\": 43, \"ONLY_ONE\": 44, \"MD_PARENT\": 45, \"NON_IDENTIFYING\": 46, \"IDENTIFYING\": 47, \"WORD\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"ER_DIAGRAM\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 13: \":\", 15: \"BLOCK_START\", 17: \"BLOCK_STOP\", 18: \"SQS\", 19: \"SQE\", 20: \"title\", 21: \"title_value\", 22: \"acc_title\", 23: \"acc_title_value\", 24: \"acc_descr\", 25: \"acc_descr_value\", 26: \"acc_descr_multiline_value\", 27: \"ALPHANUM\", 28: \"ENTITY_NAME\", 34: \"ATTRIBUTE_WORD\", 36: \"COMMA\", 37: \"ATTRIBUTE_KEY\", 38: \"COMMENT\", 41: \"ZERO_OR_ONE\", 42: \"ZERO_OR_MORE\", 43: \"ONE_OR_MORE\", 44: \"ONLY_ONE\", 45: \"MD_PARENT\", 46: \"NON_IDENTIFYING\", 47: \"IDENTIFYING\", 48: \"WORD\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 5], [9, 4], [9, 3], [9, 1], [9, 7], [9, 6], [9, 4], [9, 2], [9, 2], [9, 2], [9, 1], [11, 1], [11, 1], [16, 1], [16, 2], [29, 2], [29, 3], [29, 3], [29, 4], [30, 1], [31, 1], [32, 1], [32, 3], [35, 1], [33, 1], [12, 3], [39, 1], [39, 1], [39, 1], [39, 1], [39, 1], [40, 1], [40, 1], [14, 1], [14, 1], [14, 1]],\n performAction: /* @__PURE__ */ __name(function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n break;\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.addEntity($$[$0 - 4]);\n yy.addEntity($$[$0 - 2]);\n yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]);\n break;\n case 9:\n yy.addEntity($$[$0 - 3]);\n yy.addAttributes($$[$0 - 3], $$[$0 - 1]);\n break;\n case 10:\n yy.addEntity($$[$0 - 2]);\n break;\n case 11:\n yy.addEntity($$[$0]);\n break;\n case 12:\n yy.addEntity($$[$0 - 6], $$[$0 - 4]);\n yy.addAttributes($$[$0 - 6], $$[$0 - 1]);\n break;\n case 13:\n yy.addEntity($$[$0 - 5], $$[$0 - 3]);\n break;\n case 14:\n yy.addEntity($$[$0 - 3], $$[$0 - 1]);\n break;\n case 15:\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n case 43:\n this.$ = $$[$0];\n break;\n case 20:\n case 41:\n case 42:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 21:\n case 29:\n this.$ = [$$[$0]];\n break;\n case 22:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 23:\n this.$ = { attributeType: $$[$0 - 1], attributeName: $$[$0] };\n break;\n case 24:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeKeyTypeList: $$[$0] };\n break;\n case 25:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 26:\n this.$ = { attributeType: $$[$0 - 3], attributeName: $$[$0 - 2], attributeKeyTypeList: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 27:\n case 28:\n case 31:\n this.$ = $$[$0];\n break;\n case 30:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 32:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 33:\n this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] };\n break;\n case 34:\n this.$ = yy.Cardinality.ZERO_OR_ONE;\n break;\n case 35:\n this.$ = yy.Cardinality.ZERO_OR_MORE;\n break;\n case 36:\n this.$ = yy.Cardinality.ONE_OR_MORE;\n break;\n case 37:\n this.$ = yy.Cardinality.ONLY_ONE;\n break;\n case 38:\n this.$ = yy.Cardinality.MD_PARENT;\n break;\n case 39:\n this.$ = yy.Identification.NON_IDENTIFYING;\n break;\n case 40:\n this.$ = yy.Identification.IDENTIFYING;\n break;\n }\n }, \"anonymous\"),\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 9, 20: $V1, 22: $V2, 24: $V3, 26: $V4, 27: $V5, 28: $V6 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 16, 11: 9, 20: $V1, 22: $V2, 24: $V3, 26: $V4, 27: $V5, 28: $V6 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 11], { 12: 17, 39: 20, 15: [1, 18], 18: [1, 19], 41: $V7, 42: $V8, 43: $V9, 44: $Va, 45: $Vb }), { 21: [1, 26] }, { 23: [1, 27] }, { 25: [1, 28] }, o($V0, [2, 18]), o($Vc, [2, 19]), o($Vc, [2, 20]), o($V0, [2, 4]), { 11: 29, 27: $V5, 28: $V6 }, { 16: 30, 17: [1, 31], 29: 32, 30: 33, 34: $Vd }, { 11: 35, 27: $V5, 28: $V6 }, { 40: 36, 46: [1, 37], 47: [1, 38] }, o($Ve, [2, 34]), o($Ve, [2, 35]), o($Ve, [2, 36]), o($Ve, [2, 37]), o($Ve, [2, 38]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 17]), { 13: [1, 39] }, { 17: [1, 40] }, o($V0, [2, 10]), { 16: 41, 17: [2, 21], 29: 32, 30: 33, 34: $Vd }, { 31: 42, 34: [1, 43] }, { 34: [2, 27] }, { 19: [1, 44] }, { 39: 45, 41: $V7, 42: $V8, 43: $V9, 44: $Va, 45: $Vb }, o($Vf, [2, 39]), o($Vf, [2, 40]), { 14: 46, 27: [1, 49], 28: [1, 48], 48: [1, 47] }, o($V0, [2, 9]), { 17: [2, 22] }, o($Vg, [2, 23], { 32: 50, 33: 51, 35: 52, 37: $Vh, 38: $Vi }), o([17, 34, 37, 38], [2, 28]), o($V0, [2, 14], { 15: [1, 55] }), o([27, 28], [2, 33]), o($V0, [2, 8]), o($V0, [2, 41]), o($V0, [2, 42]), o($V0, [2, 43]), o($Vg, [2, 24], { 33: 56, 36: [1, 57], 38: $Vi }), o($Vg, [2, 25]), o($Vj, [2, 29]), o($Vg, [2, 32]), o($Vj, [2, 31]), { 16: 58, 17: [1, 59], 29: 32, 30: 33, 34: $Vd }, o($Vg, [2, 26]), { 35: 60, 37: $Vh }, { 17: [1, 61] }, o($V0, [2, 13]), o($Vj, [2, 30]), o($V0, [2, 12])],\n defaultActions: { 34: [2, 27], 41: [2, 22] },\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n }, \"parseError\"),\n parse: /* @__PURE__ */ __name(function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n __name(popStack, \"popStack\");\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n __name(lex, \"lex\");\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }, \"parse\")\n };\n var lexer = /* @__PURE__ */ function() {\n var lexer2 = {\n EOF: 1,\n parseError: /* @__PURE__ */ __name(function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n }, \"parseError\"),\n // resets the lexer, sets new input\n setInput: /* @__PURE__ */ __name(function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n }, \"setInput\"),\n // consumes and returns one char from the input\n input: /* @__PURE__ */ __name(function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n }, \"input\"),\n // unshifts one char (or a string) into the input\n unput: /* @__PURE__ */ __name(function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n }, \"unput\"),\n // When called from action, caches matched text and appends it on next action\n more: /* @__PURE__ */ __name(function() {\n this._more = true;\n return this;\n }, \"more\"),\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: /* @__PURE__ */ __name(function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n }, \"reject\"),\n // retain first n characters of the match\n less: /* @__PURE__ */ __name(function(n) {\n this.unput(this.match.slice(n));\n }, \"less\"),\n // displays already matched input, i.e. for error messages\n pastInput: /* @__PURE__ */ __name(function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n }, \"pastInput\"),\n // displays upcoming input, i.e. for error messages\n upcomingInput: /* @__PURE__ */ __name(function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n }, \"upcomingInput\"),\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: /* @__PURE__ */ __name(function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n }, \"showPosition\"),\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: /* @__PURE__ */ __name(function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n }, \"test_match\"),\n // return next match in input\n next: /* @__PURE__ */ __name(function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n }, \"next\"),\n // return next match that has a token\n lex: /* @__PURE__ */ __name(function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n }, \"lex\"),\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: /* @__PURE__ */ __name(function begin(condition) {\n this.conditionStack.push(condition);\n }, \"begin\"),\n // pop the previously active lexer condition state off the condition stack\n popState: /* @__PURE__ */ __name(function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n }, \"popState\"),\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: /* @__PURE__ */ __name(function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n }, \"_currentRules\"),\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: /* @__PURE__ */ __name(function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n }, \"topState\"),\n // alias for begin(condition)\n pushState: /* @__PURE__ */ __name(function pushState(condition) {\n this.begin(condition);\n }, \"pushState\"),\n // return the number of states currently on the stack\n stateStackSize: /* @__PURE__ */ __name(function stateStackSize() {\n return this.conditionStack.length;\n }, \"stateStackSize\"),\n options: { \"case-insensitive\": true },\n performAction: /* @__PURE__ */ __name(function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 22;\n break;\n case 1:\n this.popState();\n return \"acc_title_value\";\n break;\n case 2:\n this.begin(\"acc_descr\");\n return 24;\n break;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n break;\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n break;\n case 7:\n return 10;\n break;\n case 8:\n break;\n case 9:\n return 8;\n break;\n case 10:\n return 28;\n break;\n case 11:\n return 48;\n break;\n case 12:\n return 4;\n break;\n case 13:\n this.begin(\"block\");\n return 15;\n break;\n case 14:\n return 36;\n break;\n case 15:\n break;\n case 16:\n return 37;\n break;\n case 17:\n return 34;\n break;\n case 18:\n return 34;\n break;\n case 19:\n return 38;\n break;\n case 20:\n break;\n case 21:\n this.popState();\n return 17;\n break;\n case 22:\n return yy_.yytext[0];\n break;\n case 23:\n return 18;\n break;\n case 24:\n return 19;\n break;\n case 25:\n return 41;\n break;\n case 26:\n return 43;\n break;\n case 27:\n return 43;\n break;\n case 28:\n return 43;\n break;\n case 29:\n return 41;\n break;\n case 30:\n return 41;\n break;\n case 31:\n return 42;\n break;\n case 32:\n return 42;\n break;\n case 33:\n return 42;\n break;\n case 34:\n return 42;\n break;\n case 35:\n return 42;\n break;\n case 36:\n return 43;\n break;\n case 37:\n return 42;\n break;\n case 38:\n return 43;\n break;\n case 39:\n return 44;\n break;\n case 40:\n return 44;\n break;\n case 41:\n return 44;\n break;\n case 42:\n return 44;\n break;\n case 43:\n return 41;\n break;\n case 44:\n return 42;\n break;\n case 45:\n return 43;\n break;\n case 46:\n return 45;\n break;\n case 47:\n return 46;\n break;\n case 48:\n return 47;\n break;\n case 49:\n return 47;\n break;\n case 50:\n return 46;\n break;\n case 51:\n return 46;\n break;\n case 52:\n return 46;\n break;\n case 53:\n return 27;\n break;\n case 54:\n return yy_.yytext[0];\n break;\n case 55:\n return 6;\n break;\n }\n }, \"anonymous\"),\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:[\\s]+)/i, /^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i, /^(?:\"[^\"]*\")/i, /^(?:erDiagram\\b)/i, /^(?:\\{)/i, /^(?:,)/i, /^(?:\\s+)/i, /^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i, /^(?:(.*?)[~](.*?)*[~])/i, /^(?:[\\*A-Za-z_][A-Za-z0-9\\-_\\[\\]\\(\\)]*)/i, /^(?:\"[^\"]*\")/i, /^(?:[\\n]+)/i, /^(?:\\})/i, /^(?:.)/i, /^(?:\\[)/i, /^(?:\\])/i, /^(?:one or zero\\b)/i, /^(?:one or more\\b)/i, /^(?:one or many\\b)/i, /^(?:1\\+)/i, /^(?:\\|o\\b)/i, /^(?:zero or one\\b)/i, /^(?:zero or more\\b)/i, /^(?:zero or many\\b)/i, /^(?:0\\+)/i, /^(?:\\}o\\b)/i, /^(?:many\\(0\\))/i, /^(?:many\\(1\\))/i, /^(?:many\\b)/i, /^(?:\\}\\|)/i, /^(?:one\\b)/i, /^(?:only one\\b)/i, /^(?:1\\b)/i, /^(?:\\|\\|)/i, /^(?:o\\|)/i, /^(?:o\\{)/i, /^(?:\\|\\{)/i, /^(?:\\s*u\\b)/i, /^(?:\\.\\.)/i, /^(?:--)/i, /^(?:to\\b)/i, /^(?:optionally to\\b)/i, /^(?:\\.-)/i, /^(?:-\\.)/i, /^(?:[A-Za-z_][A-Za-z0-9\\-_]*)/i, /^(?:.)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"block\": { \"rules\": [14, 15, 16, 17, 18, 19, 20, 21, 22], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n __name(Parser, \"Parser\");\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nvar erDiagram_default = parser;\n\n// src/diagrams/er/erDb.js\nvar entities = /* @__PURE__ */ new Map();\nvar relationships = [];\nvar Cardinality = {\n ZERO_OR_ONE: \"ZERO_OR_ONE\",\n ZERO_OR_MORE: \"ZERO_OR_MORE\",\n ONE_OR_MORE: \"ONE_OR_MORE\",\n ONLY_ONE: \"ONLY_ONE\",\n MD_PARENT: \"MD_PARENT\"\n};\nvar Identification = {\n NON_IDENTIFYING: \"NON_IDENTIFYING\",\n IDENTIFYING: \"IDENTIFYING\"\n};\nvar addEntity = /* @__PURE__ */ __name(function(name, alias = void 0) {\n if (!entities.has(name)) {\n entities.set(name, { attributes: [], alias });\n log.info(\"Added new entity :\", name);\n } else if (!entities.get(name).alias && alias) {\n entities.get(name).alias = alias;\n log.info(`Add alias '${alias}' to entity '${name}'`);\n }\n return entities.get(name);\n}, \"addEntity\");\nvar getEntities = /* @__PURE__ */ __name(() => entities, \"getEntities\");\nvar addAttributes = /* @__PURE__ */ __name(function(entityName, attribs) {\n let entity = addEntity(entityName);\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n log.debug(\"Added attribute \", attribs[i].attributeName);\n }\n}, \"addAttributes\");\nvar addRelationship = /* @__PURE__ */ __name(function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n relationships.push(rel);\n log.debug(\"Added new relationship :\", rel);\n}, \"addRelationship\");\nvar getRelationships = /* @__PURE__ */ __name(() => relationships, \"getRelationships\");\nvar clear2 = /* @__PURE__ */ __name(function() {\n entities = /* @__PURE__ */ new Map();\n relationships = [];\n clear();\n}, \"clear\");\nvar erDb_default = {\n Cardinality,\n Identification,\n getConfig: /* @__PURE__ */ __name(() => getConfig().er, \"getConfig\"),\n addEntity,\n addAttributes,\n getEntities,\n addRelationship,\n getRelationships,\n clear: clear2,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\n\n// src/diagrams/er/erRenderer.js\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { line, curveBasis, select } from \"d3\";\nimport { layout as dagreLayout } from \"dagre-d3-es/src/dagre/index.js\";\n\n// src/diagrams/er/erMarkers.js\nvar ERMarkers = {\n ONLY_ONE_START: \"ONLY_ONE_START\",\n ONLY_ONE_END: \"ONLY_ONE_END\",\n ZERO_OR_ONE_START: \"ZERO_OR_ONE_START\",\n ZERO_OR_ONE_END: \"ZERO_OR_ONE_END\",\n ONE_OR_MORE_START: \"ONE_OR_MORE_START\",\n ONE_OR_MORE_END: \"ONE_OR_MORE_END\",\n ZERO_OR_MORE_START: \"ZERO_OR_MORE_START\",\n ZERO_OR_MORE_END: \"ZERO_OR_MORE_END\",\n MD_PARENT_END: \"MD_PARENT_END\",\n MD_PARENT_START: \"MD_PARENT_START\"\n};\nvar insertMarkers = /* @__PURE__ */ __name(function(elem, conf2) {\n let marker;\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_START).attr(\"refX\", 0).attr(\"refY\", 7).attr(\"markerWidth\", 190).attr(\"markerHeight\", 240).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_END).attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L1,7 L9,1 Z\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18 M15,0 L15,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_END).attr(\"refX\", 18).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,0 L3,18 M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 21).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_END).attr(\"refX\", 30).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,0 L21,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_END).attr(\"refX\", 27).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 48).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q18,0 36,18 Q18,36 0,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_END).attr(\"refX\", 39).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,18 Q39,0 57,18 Q39,36 21,18\");\n return;\n}, \"insertMarkers\");\nvar erMarkers_default = {\n ERMarkers,\n insertMarkers\n};\n\n// src/diagrams/er/erRenderer.js\nimport { v5 as uuid5 } from \"uuid\";\nvar BAD_ID_CHARS_REGEXP = /[^\\dA-Za-z](\\W)*/g;\nvar conf = {};\nvar entityNameIds = /* @__PURE__ */ new Map();\nvar setConf = /* @__PURE__ */ __name(function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n}, \"setConf\");\nvar drawAttributes = /* @__PURE__ */ __name((groupNode, entityTextNode, attributes) => {\n const heightPadding = conf.entityPadding / 3;\n const widthPadding = conf.entityPadding / 3;\n const attrFontSize = conf.fontSize * 0.85;\n const labelBBox = entityTextNode.node().getBBox();\n const attributeNodes = [];\n let hasKeyType = false;\n let hasComment = false;\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeyWidth = 0;\n let maxCommentWidth = 0;\n let cumulativeHeight = labelBBox.height + heightPadding * 2;\n let attrNum = 1;\n attributes.forEach((item) => {\n if (item.attributeKeyTypeList !== void 0 && item.attributeKeyTypeList.length > 0) {\n hasKeyType = true;\n }\n if (item.attributeComment !== void 0) {\n hasComment = true;\n }\n });\n attributes.forEach((item) => {\n const attrPrefix = `${entityTextNode.node().id}-attr-${attrNum}`;\n let nodeHeight = 0;\n const attributeType = parseGenericTypes(item.attributeType);\n const typeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-type`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(attributeType);\n const nameNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-name`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeName);\n const attributeNode = {};\n attributeNode.tn = typeNode;\n attributeNode.nn = nameNode;\n const typeBBox = typeNode.node().getBBox();\n const nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n nodeHeight = Math.max(typeBBox.height, nameBBox.height);\n if (hasKeyType) {\n const keyTypeNodeText = item.attributeKeyTypeList !== void 0 ? item.attributeKeyTypeList.join(\",\") : \"\";\n const keyTypeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-key`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(keyTypeNodeText);\n attributeNode.kn = keyTypeNode;\n const keyTypeBBox = keyTypeNode.node().getBBox();\n maxKeyWidth = Math.max(maxKeyWidth, keyTypeBBox.width);\n nodeHeight = Math.max(nodeHeight, keyTypeBBox.height);\n }\n if (hasComment) {\n const commentNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-comment`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeComment || \"\");\n attributeNode.cn = commentNode;\n const commentNodeBBox = commentNode.node().getBBox();\n maxCommentWidth = Math.max(maxCommentWidth, commentNodeBBox.width);\n nodeHeight = Math.max(nodeHeight, commentNodeBBox.height);\n }\n attributeNode.height = nodeHeight;\n attributeNodes.push(attributeNode);\n cumulativeHeight += nodeHeight + heightPadding * 2;\n attrNum += 1;\n });\n let widthPaddingFactor = 4;\n if (hasKeyType) {\n widthPaddingFactor += 2;\n }\n if (hasComment) {\n widthPaddingFactor += 2;\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeyWidth + maxCommentWidth;\n const bBox = {\n width: Math.max(\n conf.minEntityWidth,\n Math.max(\n labelBBox.width + conf.entityPadding * 2,\n maxWidth + widthPadding * widthPaddingFactor\n )\n ),\n height: attributes.length > 0 ? cumulativeHeight : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2)\n };\n if (attributes.length > 0) {\n const spareColumnWidth = Math.max(\n 0,\n (bBox.width - maxWidth - widthPadding * widthPaddingFactor) / (widthPaddingFactor / 2)\n );\n entityTextNode.attr(\n \"transform\",\n \"translate(\" + bBox.width / 2 + \",\" + (heightPadding + labelBBox.height / 2) + \")\"\n );\n let heightOffset = labelBBox.height + heightPadding * 2;\n let attribStyle = \"attributeBoxOdd\";\n attributeNodes.forEach((attributeNode) => {\n const alignY = heightOffset + heightPadding + attributeNode.height / 2;\n attributeNode.tn.attr(\"transform\", \"translate(\" + widthPadding + \",\" + alignY + \")\");\n const typeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.tn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", 0).attr(\"y\", heightOffset).attr(\"width\", maxTypeWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n const nameXOffset = parseFloat(typeRect.attr(\"x\")) + parseFloat(typeRect.attr(\"width\"));\n attributeNode.nn.attr(\n \"transform\",\n \"translate(\" + (nameXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const nameRect = groupNode.insert(\"rect\", \"#\" + attributeNode.nn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", nameXOffset).attr(\"y\", heightOffset).attr(\"width\", maxNameWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n let keyTypeAndCommentXOffset = parseFloat(nameRect.attr(\"x\")) + parseFloat(nameRect.attr(\"width\"));\n if (hasKeyType) {\n attributeNode.kn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const keyTypeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.kn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxKeyWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n keyTypeAndCommentXOffset = parseFloat(keyTypeRect.attr(\"x\")) + parseFloat(keyTypeRect.attr(\"width\"));\n }\n if (hasComment) {\n attributeNode.cn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n groupNode.insert(\"rect\", \"#\" + attributeNode.cn.node().id).classed(`er ${attribStyle}`, \"true\").attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxCommentWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n }\n heightOffset += attributeNode.height + heightPadding * 2;\n attribStyle = attribStyle === \"attributeBoxOdd\" ? \"attributeBoxEven\" : \"attributeBoxOdd\";\n });\n } else {\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight);\n entityTextNode.attr(\"transform\", \"translate(\" + bBox.width / 2 + \",\" + bBox.height / 2 + \")\");\n }\n return bBox;\n}, \"drawAttributes\");\nvar drawEntities = /* @__PURE__ */ __name(function(svgNode, entities2, graph) {\n const keys = [...entities2.keys()];\n let firstOne;\n keys.forEach(function(entityName) {\n const entityId = generateId(entityName, \"entity\");\n entityNameIds.set(entityName, entityId);\n const groupNode = svgNode.append(\"g\").attr(\"id\", entityId);\n firstOne = firstOne === void 0 ? entityId : firstOne;\n const textId = \"text-\" + entityId;\n const textNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", textId).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(entities2.get(entityName).alias ?? entityName);\n const { width: entityWidth, height: entityHeight } = drawAttributes(\n groupNode,\n textNode,\n entities2.get(entityName).attributes\n );\n const rectNode = groupNode.insert(\"rect\", \"#\" + textId).classed(\"er entityBox\", true).attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", entityWidth).attr(\"height\", entityHeight);\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(entityId, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: entityId\n });\n });\n return firstOne;\n}, \"drawEntities\");\nvar adjustEntities = /* @__PURE__ */ __name(function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n}, \"adjustEntities\");\nvar getEdgeName = /* @__PURE__ */ __name(function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, \"\");\n}, \"getEdgeName\");\nvar addRelationships = /* @__PURE__ */ __name(function(relationships2, g) {\n relationships2.forEach(function(r) {\n g.setEdge(\n entityNameIds.get(r.entityA),\n entityNameIds.get(r.entityB),\n { relationship: r },\n getEdgeName(r)\n );\n });\n return relationships2;\n}, \"addRelationships\");\nvar relCnt = 0;\nvar drawRelationshipFromLayout = /* @__PURE__ */ __name(function(svg, rel, g, insert, diagObj) {\n relCnt++;\n const edge = g.edge(\n entityNameIds.get(rel.entityA),\n entityNameIds.get(rel.entityB),\n getEdgeName(rel)\n );\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = svg.insert(\"path\", \"#\" + insert).classed(\"er relationshipLine\", true).attr(\"d\", lineFunction(edge.points)).style(\"stroke\", conf.stroke).style(\"fill\", \"none\");\n if (rel.relSpec.relType === diagObj.db.Identification.NON_IDENTIFYING) {\n svgPath.attr(\"stroke-dasharray\", \"8,8\");\n }\n let url = \"\";\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n switch (rel.relSpec.cardA) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ZERO_OR_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ZERO_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ONE_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ONLY_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.MD_PARENT_END + \")\");\n break;\n }\n switch (rel.relSpec.cardB) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ZERO_OR_ONE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ZERO_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ONE_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.ONLY_ONE_START + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers_default.ERMarkers.MD_PARENT_START + \")\");\n break;\n }\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n const labelText = rel.roleA.split(/<br ?\\/>/g);\n const labelNode = svg.append(\"text\").classed(\"er relationshipLabel\", true).attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).style(\"text-anchor\", \"middle\").style(\"dominant-baseline\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\");\n if (labelText.length == 1) {\n labelNode.text(rel.roleA);\n } else {\n const firstShift = -(labelText.length - 1) * 0.5;\n labelText.forEach((txt, i) => {\n labelNode.append(\"tspan\").attr(\"x\", labelPoint.x).attr(\"dy\", `${i === 0 ? firstShift : 1}em`).text(txt);\n });\n }\n const labelBBox = labelNode.node().getBBox();\n svg.insert(\"rect\", \"#\" + labelId).classed(\"er relationshipLabelBox\", true).attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height);\n}, \"drawRelationshipFromLayout\");\nvar draw = /* @__PURE__ */ __name(function(text, id, _version, diagObj) {\n conf = getConfig().er;\n log.info(\"Drawing ER diagram\");\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id='${id}']`);\n erMarkers_default.insertMarkers(svg, conf);\n let g;\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const firstEntity = drawEntities(svg, diagObj.db.getEntities(), g);\n const relationships2 = addRelationships(diagObj.db.getRelationships(), g);\n dagreLayout(g);\n adjustEntities(svg, g);\n relationships2.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity, diagObj);\n });\n const padding = conf.diagramPadding;\n utils_default.insertTitle(svg, \"entityTitleText\", conf.titleTopMargin, diagObj.db.getDiagramTitle());\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n}, \"draw\");\nvar MERMAID_ERDIAGRAM_UUID = \"28e9f9db-3c8d-5aa5-9faf-44286ae5937c\";\nfunction generateId(str = \"\", prefix = \"\") {\n const simplifiedStr = str.replace(BAD_ID_CHARS_REGEXP, \"\");\n return `${strWithHyphen(prefix)}${strWithHyphen(simplifiedStr)}${uuid5(\n str,\n MERMAID_ERDIAGRAM_UUID\n )}`;\n}\n__name(generateId, \"generateId\");\nfunction strWithHyphen(str = \"\") {\n return str.length > 0 ? `${str}-` : \"\";\n}\n__name(strWithHyphen, \"strWithHyphen\");\nvar erRenderer_default = {\n setConf,\n draw\n};\n\n// src/diagrams/er/styles.js\nvar getStyles = /* @__PURE__ */ __name((options) => `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${options.attributeBackgroundColorOdd};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${options.attributeBackgroundColorEven};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n \n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/er/erDiagram.ts\nvar diagram = {\n parser: erDiagram_default,\n db: erDb_default,\n renderer: erRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"names":[],"sourceRoot":""}
@@ -8,29 +8,29 @@ __webpack_require__.r(__webpack_exports__);
8
8
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9
9
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
10
10
  /* harmony export */ });
11
- /* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6946);
11
+ /* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16010);
12
12
  /* harmony import */ var _jupyterlab_application__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_application__WEBPACK_IMPORTED_MODULE_0__);
13
- /* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64519);
13
+ /* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(41088);
14
14
  /* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);
15
- /* harmony import */ var _jupyterlab_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(86470);
15
+ /* harmony import */ var _jupyterlab_console__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(46075);
16
16
  /* harmony import */ var _jupyterlab_console__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_console__WEBPACK_IMPORTED_MODULE_2__);
17
- /* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30295);
17
+ /* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34686);
18
18
  /* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_3__);
19
- /* harmony import */ var _jupyterlab_docmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42576);
19
+ /* harmony import */ var _jupyterlab_docmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48265);
20
20
  /* harmony import */ var _jupyterlab_docmanager__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_docmanager__WEBPACK_IMPORTED_MODULE_4__);
21
- /* harmony import */ var _jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(48193);
21
+ /* harmony import */ var _jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(81808);
22
22
  /* harmony import */ var _jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_docregistry__WEBPACK_IMPORTED_MODULE_5__);
23
- /* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(73147);
23
+ /* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12823);
24
24
  /* harmony import */ var _jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_mainmenu__WEBPACK_IMPORTED_MODULE_6__);
25
- /* harmony import */ var _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(46528);
25
+ /* harmony import */ var _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(30302);
26
26
  /* harmony import */ var _jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_rendermime__WEBPACK_IMPORTED_MODULE_7__);
27
- /* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(48881);
27
+ /* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(27853);
28
28
  /* harmony import */ var _jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_settingregistry__WEBPACK_IMPORTED_MODULE_8__);
29
- /* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(14448);
29
+ /* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(66737);
30
30
  /* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_9__);
31
- /* harmony import */ var _jupyter_notebook_application__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(68621);
31
+ /* harmony import */ var _jupyter_notebook_application__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(46343);
32
32
  /* harmony import */ var _jupyter_notebook_application__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_jupyter_notebook_application__WEBPACK_IMPORTED_MODULE_10__);
33
- /* harmony import */ var _jupyter_notebook_ui_components__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(48940);
33
+ /* harmony import */ var _jupyter_notebook_ui_components__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(41206);
34
34
  /* harmony import */ var _jupyter_notebook_ui_components__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_jupyter_notebook_ui_components__WEBPACK_IMPORTED_MODULE_11__);
35
35
  /* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(21961);
36
36
  /* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_12__);
@@ -988,4 +988,4 @@ const plugins = [
988
988
  /***/ })
989
989
 
990
990
  }]);
991
- //# sourceMappingURL=8579.ce15bee4e632cdfc428a.js.map?v=ce15bee4e632cdfc428a
991
+ //# sourceMappingURL=8579.a1fe3d6050e65996b704.js.map?v=a1fe3d6050e65996b704
@@ -1 +1 @@
1
- {"version":3,"file":"8579.ce15bee4e632cdfc428a.js?v=ce15bee4e632cdfc428a","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACkG;AACmB;AAClE;AACiB;AACI;AACf;AACR;AAC+F;AACjF;AACO;AACwF;AAChG;AACV;AACoB;AACzB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAU,EAAE,gEAAW;AACtC;AACA,6BAA6B,uEAAW;AACxC,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAU;AAClC;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,yBAAyB,oDAAM,GAAG,MAAM;AACxC,QAAQ,yEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qCAAqC,SAAS;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAO,EAAE,oEAAgB;AACxC,eAAe,yEAAgB;AAC/B;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,0BAA0B,gCAAgC;AAC1D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAS;AACxB;AACA;AACA;AACA;AACA,qBAAqB,6DAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAM;AAC/B,kBAAkB,0DAAQ;AAC1B;AACA,sCAAsC,WAAW;AACjD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gEAAW;AAC1B,eAAe,iEAAe;AAC9B;AACA;AACA,wBAAwB,6DAAU;AAClC;AACA;AACA;AACA,4BAA4B,yDAAM;AAClC,aAAa;AACb,SAAS;AACT,qBAAqB,6DAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yDAAM;AACtC;AACA,aAAa;AACb,SAAS;AACT;AACA,8BAA8B,+CAA+C;AAC7E,8BAA8B,gDAAgD;AAC9E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+EAAmB;AACjC;AACA,eAAe,qFAAyB;AACxC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oEAAe;AAC7B;AACA,6BAA6B,uEAAW;AACxC,+BAA+B,UAAU;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAmB;AACjC;AACA,QAAQ,oEAAgB;AACxB,QAAQ,oEAAgB;AACxB,QAAQ,4DAAU;AAClB,QAAQ,mEAAe;AACvB,QAAQ,gEAAW;AACnB,QAAQ,+EAAmB;AAC3B;AACA;AACA,mFAAmF,mEAAc;AACjG,2GAA2G,qFAAyB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA,wCAAwC,6DAAU;AAClD;AACA,oCAAoC,yDAAM;AAC1C;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA,mBAAmB,sEAAkB;AACrC,8BAA8B,6EAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0EAAc;AAC5B,eAAe,yEAAgB;AAC/B;AACA,mCAAmC,yEAAa;AAChD,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAa;AAC3B;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAkB;AAC7C;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAU;AACxB;AACA,6BAA6B,uEAAW;AACxC,+BAA+B,WAAW;AAC1C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc;AAC7B;AACA;AACA;AACA,mCAAmC,6DAAY;AAC/C;AACA;AACA,qCAAqC,0DAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mEAAc;AACtD;AACA,qCAAqC,0DAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C,eAAe,oEAAgB,EAAE,4DAAO,EAAE,wEAAsB;AAChE;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA,mCAAmC,oDAAM,GAAG,MAAM;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iDAAiD,mEAAc;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,mBAAmB;AACnF,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oEAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,MAAM,GAAG,QAAQ;AACzD;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C,eAAe,yEAAgB,EAAE,iEAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,8BAA8B,iDAAiD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C,eAAe,2DAAS,EAAE,iEAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kDAAI,GAAG,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4EAAgB;AAC7D;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAO;AACtB,cAAc,oEAAe;AAC7B;AACA,gBAAgB,WAAW;AAC3B,wBAAwB,8DAAa;AACrC,6BAA6B,+DAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yDAAM;AACpC;AACA;AACA;AACA;AACA;AACA,mCAAmC,eAAe,6DAAU,wBAAwB;AACpF,aAAa;AACb,SAAS;AACT,kCAAkC,uDAAuD;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mEAAkB;AACtC;AACA,SAAS;AACT,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAO;AACtB,cAAc,qEAAgB;AAC9B;AACA;AACA,6BAA6B,6DAAU;AACvC,6BAA6B,yDAAM,MAAM,6DAAU,sCAAsC,yDAAM;AAC/F,wCAAwC,mBAAmB;AAC3D;AACA,gBAAgB,6DAAU;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gEAAW;AAC1B,eAAe,iEAAe,EAAE,0EAAc;AAC9C;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8BAA8B,iDAAiD;AAC/E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,OAAO,EAAC","sources":["webpack://_JUPYTERLAB.CORE_OUTPUT/../packages/application-extension/lib/index.js"],"sourcesContent":["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nimport { ILabStatus, IRouter, ITreePathUpdater, JupyterFrontEnd, } from '@jupyterlab/application';\nimport { DOMUtils, ICommandPalette, ISanitizer, ISplashScreen, IToolbarWidgetRegistry, } from '@jupyterlab/apputils';\nimport { ConsolePanel } from '@jupyterlab/console';\nimport { PageConfig, PathExt, URLExt } from '@jupyterlab/coreutils';\nimport { IDocumentManager, renameDialog } from '@jupyterlab/docmanager';\nimport { DocumentWidget } from '@jupyterlab/docregistry';\nimport { IMainMenu } from '@jupyterlab/mainmenu';\nimport { ILatexTypesetter, IMarkdownParser, IRenderMimeRegistry, RenderMimeRegistry, standardRendererFactories, } from '@jupyterlab/rendermime';\nimport { ISettingRegistry } from '@jupyterlab/settingregistry';\nimport { ITranslator, nullTranslator } from '@jupyterlab/translation';\nimport { NotebookApp, NotebookShell, INotebookShell, SidePanelPalette, INotebookPathOpener, defaultNotebookPathOpener, } from '@jupyter-notebook/application';\nimport { jupyterIcon } from '@jupyter-notebook/ui-components';\nimport { PromiseDelegate } from '@lumino/coreutils';\nimport { DisposableDelegate, DisposableSet, } from '@lumino/disposable';\nimport { Menu, Widget } from '@lumino/widgets';\n/**\n * A regular expression to match path to notebooks and documents\n */\nconst TREE_PATTERN = new RegExp('/(notebooks|edit)/(.*)');\n/**\n * A regular expression to suppress the file extension from display for .ipynb files.\n */\nconst STRIP_IPYNB = /\\.ipynb$/;\n/**\n * The JupyterLab document manager plugin id.\n */\nconst JUPYTERLAB_DOCMANAGER_PLUGIN_ID = '@jupyterlab/docmanager-extension:plugin';\n/**\n * The command IDs used by the application plugin.\n */\nvar CommandIDs;\n(function (CommandIDs) {\n /**\n * Duplicate the current document and open the new document\n */\n CommandIDs.duplicate = 'application:duplicate';\n /**\n * Handle local links\n */\n CommandIDs.handleLink = 'application:handle-local-link';\n /**\n * Toggle Top Bar visibility\n */\n CommandIDs.toggleTop = 'application:toggle-top';\n /**\n * Toggle side panel visibility\n */\n CommandIDs.togglePanel = 'application:toggle-panel';\n /**\n * Toggle the Zen mode\n */\n CommandIDs.toggleZen = 'application:toggle-zen';\n /**\n * Open JupyterLab\n */\n CommandIDs.openLab = 'application:open-lab';\n /**\n * Open the tree page.\n */\n CommandIDs.openTree = 'application:open-tree';\n /**\n * Rename the current document\n */\n CommandIDs.rename = 'application:rename';\n /**\n * Resolve tree path\n */\n CommandIDs.resolveTree = 'application:resolve-tree';\n})(CommandIDs || (CommandIDs = {}));\n/**\n * Check if the application is dirty before closing the browser tab.\n */\nconst dirty = {\n id: '@jupyter-notebook/application-extension:dirty',\n description: 'Check if the application is dirty before closing the browser tab.',\n autoStart: true,\n requires: [ILabStatus, ITranslator],\n activate: (app, status, translator) => {\n if (!(app instanceof NotebookApp)) {\n throw new Error(`${dirty.id} must be activated in Jupyter Notebook.`);\n }\n const trans = translator.load('notebook');\n const message = trans.__('Are you sure you want to exit Jupyter Notebook?\\n\\nAny unsaved changes will be lost.');\n window.addEventListener('beforeunload', (event) => {\n if (app.status.isDirty) {\n return (event.returnValue = message);\n }\n });\n },\n};\n/**\n * The logo plugin.\n */\nconst logo = {\n id: '@jupyter-notebook/application-extension:logo',\n description: 'The logo plugin.',\n autoStart: true,\n activate: (app) => {\n const baseUrl = PageConfig.getBaseUrl();\n const node = document.createElement('a');\n node.href = `${baseUrl}tree`;\n node.target = '_blank';\n node.rel = 'noopener noreferrer';\n const logo = new Widget({ node });\n jupyterIcon.element({\n container: node,\n elementPosition: 'center',\n padding: '2px 2px 2px 8px',\n height: '28px',\n width: 'auto',\n cursor: 'pointer',\n margin: 'auto',\n });\n logo.id = 'jp-NotebookLogo';\n app.shell.add(logo, 'top', { rank: 0 });\n },\n};\n/**\n * A plugin to open documents in the main area.\n */\nconst opener = {\n id: '@jupyter-notebook/application-extension:opener',\n description: 'A plugin to open documents in the main area.',\n autoStart: true,\n requires: [IRouter, IDocumentManager],\n optional: [ISettingRegistry],\n activate: (app, router, docManager, settingRegistry) => {\n const { commands, docRegistry } = app;\n const command = 'router:tree';\n commands.addCommand(command, {\n execute: (args) => {\n var _a;\n const parsed = args;\n const matches = (_a = parsed.path.match(TREE_PATTERN)) !== null && _a !== void 0 ? _a : [];\n const [, , path] = matches;\n if (!path) {\n return;\n }\n app.started.then(async () => {\n var _a;\n const file = decodeURIComponent(path);\n const urlParams = new URLSearchParams(parsed.search);\n let defaultFactory = docRegistry.defaultWidgetFactory(path).name;\n // Explicitly get the default viewers from the settings because\n // JupyterLab might not have had the time to load the settings yet (race condition)\n // Relevant code: https://github.com/jupyterlab/jupyterlab/blob/d56ff811f39b3c10c6d8b6eb27a94624b753eb53/packages/docmanager-extension/src/index.tsx#L265-L293\n if (settingRegistry) {\n const settings = await settingRegistry.load(JUPYTERLAB_DOCMANAGER_PLUGIN_ID);\n const defaultViewers = settings.get('defaultViewers').composite;\n // get the file types for the path\n const types = docRegistry.getFileTypesForPath(path);\n // for each file type, check if there is a default viewer and if it\n // is available in the docRegistry. If it is the case, use it as the\n // default factory\n types.forEach((ft) => {\n if (defaultViewers[ft.name] !== undefined &&\n docRegistry.getWidgetFactory(defaultViewers[ft.name])) {\n defaultFactory = defaultViewers[ft.name];\n }\n });\n }\n const factory = (_a = urlParams.get('factory')) !== null && _a !== void 0 ? _a : defaultFactory;\n docManager.open(file, factory, undefined, {\n ref: '_noref',\n });\n });\n },\n });\n router.register({ command, pattern: TREE_PATTERN });\n },\n};\n/**\n * A plugin to customize menus\n */\nconst menus = {\n id: '@jupyter-notebook/application-extension:menus',\n description: 'A plugin to customize menus.',\n requires: [IMainMenu],\n autoStart: true,\n activate: (app, menu) => {\n // always disable the Tabs menu\n menu.tabsMenu.dispose();\n const page = PageConfig.getOption('notebookPage');\n switch (page) {\n case 'consoles':\n case 'terminals':\n case 'tree':\n menu.editMenu.dispose();\n menu.kernelMenu.dispose();\n menu.runMenu.dispose();\n break;\n case 'edit':\n menu.kernelMenu.dispose();\n menu.runMenu.dispose();\n break;\n default:\n break;\n }\n },\n};\n/**\n * A plugin to provide a spacer at rank 900 in the menu area\n */\nconst menuSpacer = {\n id: '@jupyter-notebook/application-extension:menu-spacer',\n description: 'A plugin to provide a spacer at rank 900 in the menu area.',\n autoStart: true,\n activate: (app) => {\n const menu = new Widget();\n menu.id = DOMUtils.createDomID();\n menu.addClass('jp-NotebookSpacer');\n app.shell.add(menu, 'menu', { rank: 900 });\n },\n};\n/**\n * Add commands to open the tree and running pages.\n */\nconst pages = {\n id: '@jupyter-notebook/application-extension:pages',\n description: 'Add commands to open the tree and running pages.',\n autoStart: true,\n requires: [ITranslator],\n optional: [ICommandPalette],\n activate: (app, translator, palette) => {\n const trans = translator.load('notebook');\n const baseUrl = PageConfig.getBaseUrl();\n app.commands.addCommand(CommandIDs.openLab, {\n label: trans.__('Open JupyterLab'),\n execute: () => {\n window.open(URLExt.join(baseUrl, 'lab'));\n },\n });\n const page = PageConfig.getOption('notebookPage');\n app.commands.addCommand(CommandIDs.openTree, {\n label: trans.__('File Browser'),\n execute: () => {\n if (page === 'tree') {\n app.commands.execute('filebrowser:activate');\n }\n else {\n window.open(URLExt.join(baseUrl, 'tree'));\n }\n },\n });\n if (palette) {\n palette.addItem({ command: CommandIDs.openLab, category: 'View' });\n palette.addItem({ command: CommandIDs.openTree, category: 'View' });\n }\n },\n};\n/**\n * A plugin to open paths in new browser tabs.\n */\nconst pathOpener = {\n id: '@jupyter-notebook/application-extension:path-opener',\n description: 'A plugin to open paths in new browser tabs.',\n autoStart: true,\n provides: INotebookPathOpener,\n activate: (app) => {\n return defaultNotebookPathOpener;\n },\n};\n/**\n * The default paths for a Jupyter Notebook app.\n */\nconst paths = {\n id: '@jupyter-notebook/application-extension:paths',\n description: 'The default paths for a Jupyter Notebook app.',\n autoStart: true,\n provides: JupyterFrontEnd.IPaths,\n activate: (app) => {\n if (!(app instanceof NotebookApp)) {\n throw new Error(`${paths.id} must be activated in Jupyter Notebook.`);\n }\n return app.paths;\n },\n};\n/**\n * A plugin providing a rendermime registry.\n */\nconst rendermime = {\n id: '@jupyter-notebook/application-extension:rendermime',\n description: 'A plugin providing a rendermime registry.',\n autoStart: true,\n provides: IRenderMimeRegistry,\n optional: [\n IDocumentManager,\n ILatexTypesetter,\n ISanitizer,\n IMarkdownParser,\n ITranslator,\n INotebookPathOpener,\n ],\n activate: (app, docManager, latexTypesetter, sanitizer, markdownParser, translator, notebookPathOpener) => {\n const trans = (translator !== null && translator !== void 0 ? translator : nullTranslator).load('jupyterlab');\n const opener = notebookPathOpener !== null && notebookPathOpener !== void 0 ? notebookPathOpener : defaultNotebookPathOpener;\n if (docManager) {\n app.commands.addCommand(CommandIDs.handleLink, {\n label: trans.__('Handle Local Link'),\n execute: (args) => {\n const path = args['path'];\n if (path === undefined || path === null) {\n return;\n }\n return docManager.services.contents\n .get(path, { content: false })\n .then((model) => {\n const baseUrl = PageConfig.getBaseUrl();\n opener.open({\n prefix: URLExt.join(baseUrl, 'tree'),\n path: model.path,\n target: '_blank',\n });\n });\n },\n });\n }\n return new RenderMimeRegistry({\n initialFactories: standardRendererFactories,\n linkHandler: !docManager\n ? undefined\n : {\n handleLink: (node, path, id) => {\n // If node has the download attribute explicitly set, use the\n // default browser downloading behavior.\n if (node.tagName === 'A' && node.hasAttribute('download')) {\n return;\n }\n app.commandLinker.connectNode(node, CommandIDs.handleLink, {\n path,\n id,\n });\n },\n },\n latexTypesetter: latexTypesetter !== null && latexTypesetter !== void 0 ? latexTypesetter : undefined,\n markdownParser: markdownParser !== null && markdownParser !== void 0 ? markdownParser : undefined,\n translator: translator !== null && translator !== void 0 ? translator : undefined,\n sanitizer: sanitizer !== null && sanitizer !== void 0 ? sanitizer : undefined,\n });\n },\n};\n/**\n * The default Jupyter Notebook application shell.\n */\nconst shell = {\n id: '@jupyter-notebook/application-extension:shell',\n description: 'The default Jupyter Notebook application shell.',\n autoStart: true,\n provides: INotebookShell,\n optional: [ISettingRegistry],\n activate: (app, settingRegistry) => {\n if (!(app.shell instanceof NotebookShell)) {\n throw new Error(`${shell.id} did not find a NotebookShell instance.`);\n }\n const notebookShell = app.shell;\n if (settingRegistry) {\n settingRegistry\n .load(shell.id)\n .then((settings) => {\n // Add a layer of customization to support app shell mode\n const customLayout = settings.composite['layout'];\n // Restore the layout.\n void notebookShell.restoreLayout(customLayout);\n })\n .catch((reason) => {\n console.error('Fail to load settings for the layout restorer.');\n console.error(reason);\n });\n }\n return notebookShell;\n },\n};\n/**\n * The default splash screen provider.\n */\nconst splash = {\n id: '@jupyter-notebook/application-extension:splash',\n description: 'Provides an empty splash screen.',\n autoStart: true,\n provides: ISplashScreen,\n activate: (app) => {\n const { restored } = app;\n const splash = document.createElement('div');\n splash.style.position = 'absolute';\n splash.style.width = '100%';\n splash.style.height = '100%';\n splash.style.zIndex = '10';\n return {\n show: (light = true) => {\n splash.style.backgroundColor = light ? 'white' : '#111111';\n document.body.appendChild(splash);\n return new DisposableDelegate(async () => {\n await restored;\n document.body.removeChild(splash);\n });\n },\n };\n },\n};\n/**\n * The default JupyterLab application status provider.\n */\nconst status = {\n id: '@jupyter-notebook/application-extension:status',\n description: 'The default JupyterLab application status provider.',\n autoStart: true,\n provides: ILabStatus,\n activate: (app) => {\n if (!(app instanceof NotebookApp)) {\n throw new Error(`${status.id} must be activated in Jupyter Notebook.`);\n }\n return app.status;\n },\n};\n/**\n * A plugin to display the document title in the browser tab title\n */\nconst tabTitle = {\n id: '@jupyter-notebook/application-extension:tab-title',\n description: 'A plugin to display the document title in the browser tab title.',\n autoStart: true,\n requires: [INotebookShell],\n activate: (app, shell) => {\n const setTabTitle = () => {\n const current = shell.currentWidget;\n if (current instanceof ConsolePanel) {\n const update = () => {\n const title = current.sessionContext.path || current.sessionContext.name;\n const basename = PathExt.basename(title);\n // Strip the \".ipynb\" suffix from filenames for display in tab titles.\n document.title = basename.replace(STRIP_IPYNB, '');\n };\n current.sessionContext.sessionChanged.connect(update);\n update();\n return;\n }\n else if (current instanceof DocumentWidget) {\n const update = () => {\n const basename = PathExt.basename(current.context.path);\n document.title = basename.replace(STRIP_IPYNB, '');\n };\n current.context.pathChanged.connect(update);\n update();\n }\n };\n shell.currentChanged.connect(setTabTitle);\n setTabTitle();\n },\n};\n/**\n * A plugin to display and rename the title of a file\n */\nconst title = {\n id: '@jupyter-notebook/application-extension:title',\n description: 'A plugin to display and rename the title of a file.',\n autoStart: true,\n requires: [INotebookShell, ITranslator],\n optional: [IDocumentManager, IRouter, IToolbarWidgetRegistry],\n activate: (app, shell, translator, docManager, router, toolbarRegistry) => {\n const { commands } = app;\n const trans = translator.load('notebook');\n const node = document.createElement('div');\n if (toolbarRegistry) {\n toolbarRegistry.addFactory('TopBar', 'widgetTitle', (toolbar) => {\n const widget = new Widget({ node });\n widget.id = 'jp-title';\n return widget;\n });\n }\n const addTitle = async () => {\n const current = shell.currentWidget;\n if (!current || !(current instanceof DocumentWidget)) {\n return;\n }\n if (node.children.length > 0) {\n return;\n }\n const h = document.createElement('h1');\n h.textContent = current.title.label.replace(STRIP_IPYNB, '');\n node.appendChild(h);\n node.style.marginLeft = '10px';\n if (!docManager) {\n return;\n }\n const isEnabled = () => {\n const { currentWidget } = shell;\n return !!(currentWidget && docManager.contextForWidget(currentWidget));\n };\n commands.addCommand(CommandIDs.duplicate, {\n label: () => trans.__('Duplicate'),\n isEnabled,\n execute: async () => {\n if (!isEnabled()) {\n return;\n }\n // Duplicate the file, and open the new file.\n const result = await docManager.duplicate(current.context.path);\n await commands.execute('docmanager:open', { path: result.path });\n },\n });\n commands.addCommand(CommandIDs.rename, {\n label: () => trans.__('Rename…'),\n isEnabled,\n execute: async () => {\n var _a;\n if (!isEnabled()) {\n return;\n }\n const result = await renameDialog(docManager, current.context);\n // activate the current widget to bring the focus\n if (current) {\n current.activate();\n }\n if (result === null) {\n return;\n }\n const newPath = current.context.path;\n const basename = PathExt.basename(newPath);\n h.textContent = basename.replace(STRIP_IPYNB, '');\n if (!router) {\n return;\n }\n const matches = (_a = router.current.path.match(TREE_PATTERN)) !== null && _a !== void 0 ? _a : [];\n const [, route, path] = matches;\n if (!route || !path) {\n return;\n }\n const encoded = encodeURIComponent(newPath);\n router.navigate(`/${route}/${encoded}`, {\n skipRouting: true,\n });\n },\n });\n node.onclick = async () => {\n void commands.execute(CommandIDs.rename);\n };\n };\n shell.currentChanged.connect(addTitle);\n void addTitle();\n },\n};\n/**\n * Plugin to toggle the top header visibility.\n */\nconst topVisibility = {\n id: '@jupyter-notebook/application-extension:top',\n description: 'Plugin to toggle the top header visibility.',\n requires: [INotebookShell, ITranslator],\n optional: [ISettingRegistry, ICommandPalette],\n activate: (app, notebookShell, translator, settingRegistry, palette) => {\n const trans = translator.load('notebook');\n const top = notebookShell.top;\n const pluginId = topVisibility.id;\n app.commands.addCommand(CommandIDs.toggleTop, {\n label: trans.__('Show Header'),\n execute: () => {\n top.setHidden(top.isVisible);\n if (settingRegistry) {\n void settingRegistry.set(pluginId, 'visible', top.isVisible ? 'yes' : 'no');\n }\n },\n isToggled: () => top.isVisible,\n });\n let adjustToScreen = false;\n if (settingRegistry) {\n const loadSettings = settingRegistry.load(pluginId);\n const updateSettings = (settings) => {\n // 'visible' property from user preferences or default settings\n let visible = settings.get('visible').composite;\n if (settings.user.visible !== undefined) {\n visible = settings.user.visible;\n }\n top.setHidden(visible === 'no');\n // adjust to screen from user preferences or default settings\n adjustToScreen = visible === 'automatic';\n };\n Promise.all([loadSettings, app.restored])\n .then(([settings]) => {\n updateSettings(settings);\n settings.changed.connect((settings) => {\n updateSettings(settings);\n });\n })\n .catch((reason) => {\n console.error(reason.message);\n });\n }\n if (palette) {\n palette.addItem({ command: CommandIDs.toggleTop, category: 'View' });\n }\n const onChanged = () => {\n if (!adjustToScreen) {\n return;\n }\n if (app.format === 'desktop') {\n notebookShell.expandTop();\n }\n else {\n notebookShell.collapseTop();\n }\n };\n // listen on format change (mobile and desktop) to make the view more compact\n app.formatChanged.connect(onChanged);\n },\n autoStart: true,\n};\n/**\n * Plugin to toggle the left or right side panel's visibility.\n */\nconst sidePanelVisibility = {\n id: '@jupyter-notebook/application-extension:sidepanel',\n description: 'Plugin to toggle the visibility of left or right side panel.',\n requires: [INotebookShell, ITranslator],\n optional: [IMainMenu, ICommandPalette],\n autoStart: true,\n activate: (app, notebookShell, translator, menu, palette) => {\n const trans = translator.load('notebook');\n /* Arguments for togglePanel command:\n * side, left or right area\n * title, widget title to show in the menu\n * id, widget ID to activate in the side panel\n */\n app.commands.addCommand(CommandIDs.togglePanel, {\n label: (args) => args['title'],\n caption: (args) => {\n // We do not substitute the parameter into the string because the parameter is not\n // localized (e.g., it is always 'left') even though the string is localized.\n if (args['side'] === 'left') {\n return trans.__('Show %1 in the left sidebar', args['title']);\n }\n else if (args['side'] === 'right') {\n return trans.__('Show %1 in the right sidebar', args['title']);\n }\n return trans.__('Show %1 in the sidebar', args['title']);\n },\n execute: (args) => {\n var _a, _b;\n switch (args['side']) {\n case 'left':\n if (notebookShell.leftCollapsed) {\n notebookShell.expandLeft(args.id);\n }\n else if (((_a = notebookShell.leftHandler.currentWidget) === null || _a === void 0 ? void 0 : _a.id) !== args.id) {\n notebookShell.expandLeft(args.id);\n }\n else {\n notebookShell.collapseLeft();\n if (notebookShell.currentWidget) {\n notebookShell.activateById(notebookShell.currentWidget.id);\n }\n }\n break;\n case 'right':\n if (notebookShell.rightCollapsed) {\n notebookShell.expandRight(args.id);\n }\n else if (((_b = notebookShell.rightHandler.currentWidget) === null || _b === void 0 ? void 0 : _b.id) !== args.id) {\n notebookShell.expandRight(args.id);\n }\n else {\n notebookShell.collapseRight();\n if (notebookShell.currentWidget) {\n notebookShell.activateById(notebookShell.currentWidget.id);\n }\n }\n break;\n }\n },\n isToggled: (args) => {\n switch (args['side']) {\n case 'left': {\n if (notebookShell.leftCollapsed) {\n return false;\n }\n const currentWidget = notebookShell.leftHandler.currentWidget;\n if (!currentWidget) {\n return false;\n }\n return currentWidget.id === args['id'];\n }\n case 'right': {\n if (notebookShell.rightCollapsed) {\n return false;\n }\n const currentWidget = notebookShell.rightHandler.currentWidget;\n if (!currentWidget) {\n return false;\n }\n return currentWidget.id === args['id'];\n }\n }\n return false;\n },\n });\n const sidePanelMenu = {\n left: null,\n right: null,\n };\n /**\n * The function which adds entries to the View menu for each widget of a side panel.\n *\n * @param area - 'left' or 'right', the area of the side panel.\n * @param entryLabel - the name of the main entry in the View menu for that side panel.\n * @returns - The disposable menu added to the View menu or null.\n */\n const updateMenu = (area, entryLabel) => {\n var _a;\n if (menu === null) {\n return null;\n }\n // Remove the previous menu entry for this side panel.\n (_a = sidePanelMenu[area]) === null || _a === void 0 ? void 0 : _a.dispose();\n // Creates a new menu entry and populates it with side panel widgets.\n const newMenu = new Menu({ commands: app.commands });\n newMenu.title.label = entryLabel;\n const widgets = notebookShell.widgets(area);\n let menuToAdd = false;\n for (const widget of widgets) {\n newMenu.addItem({\n command: CommandIDs.togglePanel,\n args: {\n side: area,\n title: `Show ${widget.title.caption}`,\n id: widget.id,\n },\n });\n menuToAdd = true;\n }\n // If there are widgets, add the menu to the main menu entry.\n if (menuToAdd) {\n sidePanelMenu[area] = menu.viewMenu.addItem({\n type: 'submenu',\n submenu: newMenu,\n });\n }\n };\n app.restored.then(() => {\n // Create menu entries for the left and right panel.\n if (menu) {\n const getSidePanelLabel = (area) => {\n if (area === 'left') {\n return trans.__('Left Sidebar');\n }\n else {\n return trans.__('Right Sidebar');\n }\n };\n const leftArea = notebookShell.leftHandler.area;\n const leftLabel = getSidePanelLabel(leftArea);\n updateMenu(leftArea, leftLabel);\n const rightArea = notebookShell.rightHandler.area;\n const rightLabel = getSidePanelLabel(rightArea);\n updateMenu(rightArea, rightLabel);\n const handleSidePanelChange = (sidePanel, widget) => {\n const label = getSidePanelLabel(sidePanel.area);\n updateMenu(sidePanel.area, label);\n };\n notebookShell.leftHandler.widgetAdded.connect(handleSidePanelChange);\n notebookShell.leftHandler.widgetRemoved.connect(handleSidePanelChange);\n notebookShell.rightHandler.widgetAdded.connect(handleSidePanelChange);\n notebookShell.rightHandler.widgetRemoved.connect(handleSidePanelChange);\n }\n // Add palette entries for side panels.\n if (palette) {\n const sidePanelPalette = new SidePanelPalette({\n commandPalette: palette,\n command: CommandIDs.togglePanel,\n });\n notebookShell.leftHandler.widgets.forEach((widget) => {\n sidePanelPalette.addItem(widget, notebookShell.leftHandler.area);\n });\n notebookShell.rightHandler.widgets.forEach((widget) => {\n sidePanelPalette.addItem(widget, notebookShell.rightHandler.area);\n });\n // Update menu and palette when widgets are added or removed from side panels.\n notebookShell.leftHandler.widgetAdded.connect((sidePanel, widget) => {\n sidePanelPalette.addItem(widget, sidePanel.area);\n });\n notebookShell.leftHandler.widgetRemoved.connect((sidePanel, widget) => {\n sidePanelPalette.removeItem(widget, sidePanel.area);\n });\n notebookShell.rightHandler.widgetAdded.connect((sidePanel, widget) => {\n sidePanelPalette.addItem(widget, sidePanel.area);\n });\n notebookShell.rightHandler.widgetRemoved.connect((sidePanel, widget) => {\n sidePanelPalette.removeItem(widget, sidePanel.area);\n });\n }\n });\n },\n};\n/**\n * The default tree route resolver plugin.\n */\nconst tree = {\n id: '@jupyter-notebook/application-extension:tree-resolver',\n description: 'The default tree route resolver plugin.',\n autoStart: true,\n requires: [IRouter],\n provides: JupyterFrontEnd.ITreeResolver,\n activate: (app, router) => {\n const { commands } = app;\n const set = new DisposableSet();\n const delegate = new PromiseDelegate();\n const treePattern = new RegExp('/(/tree/.*)?');\n set.add(commands.addCommand(CommandIDs.resolveTree, {\n execute: (async (args) => {\n var _a;\n if (set.isDisposed) {\n return;\n }\n const query = URLExt.queryStringToObject((_a = args.search) !== null && _a !== void 0 ? _a : '');\n const browser = query['file-browser-path'] || '';\n // Remove the file browser path from the query string.\n delete query['file-browser-path'];\n // Clean up artifacts immediately upon routing.\n set.dispose();\n delegate.resolve({ browser, file: PageConfig.getOption('treePath') });\n }),\n }));\n set.add(router.register({ command: CommandIDs.resolveTree, pattern: treePattern }));\n // If a route is handled by the router without the tree command being\n // invoked, resolve to `null` and clean up artifacts.\n const listener = () => {\n if (set.isDisposed) {\n return;\n }\n set.dispose();\n delegate.resolve(null);\n };\n router.routed.connect(listener);\n set.add(new DisposableDelegate(() => {\n router.routed.disconnect(listener);\n }));\n return { paths: delegate.promise };\n },\n};\n/**\n * Plugin to update tree path.\n */\nconst treePathUpdater = {\n id: '@jupyter-notebook/application-extension:tree-updater',\n description: 'Plugin to update tree path.',\n requires: [IRouter],\n provides: ITreePathUpdater,\n activate: (app, router) => {\n function updateTreePath(treePath) {\n if (treePath !== PageConfig.getOption('treePath')) {\n const path = URLExt.join(PageConfig.getOption('baseUrl') || '/', 'tree', URLExt.encodeParts(treePath));\n router.navigate(path, { skipRouting: true });\n // Persist the new tree path to PageConfig as it is used elsewhere at runtime.\n PageConfig.setOption('treePath', treePath);\n }\n }\n return updateTreePath;\n },\n autoStart: true,\n};\n/**\n * Translator plugin\n */\nconst translator = {\n id: '@jupyter-notebook/application-extension:translator',\n description: 'Translator plugin',\n requires: [INotebookShell, ITranslator],\n autoStart: true,\n activate: (app, notebookShell, translator) => {\n notebookShell.translator = translator;\n },\n};\n/**\n * Zen mode plugin\n */\nconst zen = {\n id: '@jupyter-notebook/application-extension:zen',\n description: 'Zen mode plugin.',\n autoStart: true,\n requires: [ITranslator],\n optional: [ICommandPalette, INotebookShell],\n activate: (app, translator, palette, notebookShell) => {\n const { commands } = app;\n const elem = document.documentElement;\n const trans = translator.load('notebook');\n const toggleOn = () => {\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.collapseTop();\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.menu.setHidden(true);\n zenModeEnabled = true;\n };\n const toggleOff = () => {\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.expandTop();\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.menu.setHidden(false);\n zenModeEnabled = false;\n };\n let zenModeEnabled = false;\n commands.addCommand(CommandIDs.toggleZen, {\n label: trans.__('Toggle Zen Mode'),\n execute: () => {\n if (!zenModeEnabled) {\n elem.requestFullscreen();\n toggleOn();\n }\n else {\n document.exitFullscreen();\n toggleOff();\n }\n },\n });\n document.addEventListener('fullscreenchange', () => {\n if (!document.fullscreenElement) {\n toggleOff();\n }\n });\n if (palette) {\n palette.addItem({ command: CommandIDs.toggleZen, category: 'Mode' });\n }\n },\n};\n/**\n * Export the plugins as default.\n */\nconst plugins = [\n dirty,\n logo,\n menus,\n menuSpacer,\n opener,\n pages,\n pathOpener,\n paths,\n rendermime,\n shell,\n sidePanelVisibility,\n splash,\n status,\n tabTitle,\n title,\n topVisibility,\n tree,\n treePathUpdater,\n translator,\n zen,\n];\nexport default plugins;\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"8579.a1fe3d6050e65996b704.js?v=a1fe3d6050e65996b704","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACkG;AACmB;AAClE;AACiB;AACI;AACf;AACR;AAC+F;AACjF;AACO;AACwF;AAChG;AACV;AACoB;AACzB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAU,EAAE,gEAAW;AACtC;AACA,6BAA6B,uEAAW;AACxC,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAU;AAClC;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,yBAAyB,oDAAM,GAAG,MAAM;AACxC,QAAQ,yEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qCAAqC,SAAS;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAO,EAAE,oEAAgB;AACxC,eAAe,yEAAgB;AAC/B;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,0BAA0B,gCAAgC;AAC1D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAS;AACxB;AACA;AACA;AACA;AACA,qBAAqB,6DAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAM;AAC/B,kBAAkB,0DAAQ;AAC1B;AACA,sCAAsC,WAAW;AACjD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gEAAW;AAC1B,eAAe,iEAAe;AAC9B;AACA;AACA,wBAAwB,6DAAU;AAClC;AACA;AACA;AACA,4BAA4B,yDAAM;AAClC,aAAa;AACb,SAAS;AACT,qBAAqB,6DAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yDAAM;AACtC;AACA,aAAa;AACb,SAAS;AACT;AACA,8BAA8B,+CAA+C;AAC7E,8BAA8B,gDAAgD;AAC9E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+EAAmB;AACjC;AACA,eAAe,qFAAyB;AACxC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oEAAe;AAC7B;AACA,6BAA6B,uEAAW;AACxC,+BAA+B,UAAU;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAmB;AACjC;AACA,QAAQ,oEAAgB;AACxB,QAAQ,oEAAgB;AACxB,QAAQ,4DAAU;AAClB,QAAQ,mEAAe;AACvB,QAAQ,gEAAW;AACnB,QAAQ,+EAAmB;AAC3B;AACA;AACA,mFAAmF,mEAAc;AACjG,2GAA2G,qFAAyB;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA,wCAAwC,6DAAU;AAClD;AACA,oCAAoC,yDAAM;AAC1C;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA,mBAAmB,sEAAkB;AACrC,8BAA8B,6EAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0EAAc;AAC5B,eAAe,yEAAgB;AAC/B;AACA,mCAAmC,yEAAa;AAChD,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAa;AAC3B;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAkB;AAC7C;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+DAAU;AACxB;AACA,6BAA6B,uEAAW;AACxC,+BAA+B,WAAW;AAC1C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc;AAC7B;AACA;AACA;AACA,mCAAmC,6DAAY;AAC/C;AACA;AACA,qCAAqC,0DAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mEAAc;AACtD;AACA,qCAAqC,0DAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C,eAAe,oEAAgB,EAAE,4DAAO,EAAE,wEAAsB;AAChE;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA,mCAAmC,oDAAM,GAAG,MAAM;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iDAAiD,mEAAc;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,mBAAmB;AACnF,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oEAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,MAAM,GAAG,QAAQ;AACzD;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C,eAAe,yEAAgB,EAAE,iEAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,8BAA8B,iDAAiD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C,eAAe,2DAAS,EAAE,iEAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kDAAI,GAAG,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qBAAqB;AAC5D;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4EAAgB;AAC7D;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAO;AACtB,cAAc,oEAAe;AAC7B;AACA,gBAAgB,WAAW;AAC3B,wBAAwB,8DAAa;AACrC,6BAA6B,+DAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yDAAM;AACpC;AACA;AACA;AACA;AACA;AACA,mCAAmC,eAAe,6DAAU,wBAAwB;AACpF,aAAa;AACb,SAAS;AACT,kCAAkC,uDAAuD;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mEAAkB;AACtC;AACA,SAAS;AACT,iBAAiB;AACjB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAO;AACtB,cAAc,qEAAgB;AAC9B;AACA;AACA,6BAA6B,6DAAU;AACvC,6BAA6B,yDAAM,MAAM,6DAAU,sCAAsC,yDAAM;AAC/F,wCAAwC,mBAAmB;AAC3D;AACA,gBAAgB,6DAAU;AAC1B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0EAAc,EAAE,gEAAW;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gEAAW;AAC1B,eAAe,iEAAe,EAAE,0EAAc;AAC9C;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8BAA8B,iDAAiD;AAC/E;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAe,OAAO,EAAC","sources":["webpack://_JUPYTERLAB.CORE_OUTPUT/../packages/application-extension/lib/index.js"],"sourcesContent":["// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\nimport { ILabStatus, IRouter, ITreePathUpdater, JupyterFrontEnd, } from '@jupyterlab/application';\nimport { DOMUtils, ICommandPalette, ISanitizer, ISplashScreen, IToolbarWidgetRegistry, } from '@jupyterlab/apputils';\nimport { ConsolePanel } from '@jupyterlab/console';\nimport { PageConfig, PathExt, URLExt } from '@jupyterlab/coreutils';\nimport { IDocumentManager, renameDialog } from '@jupyterlab/docmanager';\nimport { DocumentWidget } from '@jupyterlab/docregistry';\nimport { IMainMenu } from '@jupyterlab/mainmenu';\nimport { ILatexTypesetter, IMarkdownParser, IRenderMimeRegistry, RenderMimeRegistry, standardRendererFactories, } from '@jupyterlab/rendermime';\nimport { ISettingRegistry } from '@jupyterlab/settingregistry';\nimport { ITranslator, nullTranslator } from '@jupyterlab/translation';\nimport { NotebookApp, NotebookShell, INotebookShell, SidePanelPalette, INotebookPathOpener, defaultNotebookPathOpener, } from '@jupyter-notebook/application';\nimport { jupyterIcon } from '@jupyter-notebook/ui-components';\nimport { PromiseDelegate } from '@lumino/coreutils';\nimport { DisposableDelegate, DisposableSet, } from '@lumino/disposable';\nimport { Menu, Widget } from '@lumino/widgets';\n/**\n * A regular expression to match path to notebooks and documents\n */\nconst TREE_PATTERN = new RegExp('/(notebooks|edit)/(.*)');\n/**\n * A regular expression to suppress the file extension from display for .ipynb files.\n */\nconst STRIP_IPYNB = /\\.ipynb$/;\n/**\n * The JupyterLab document manager plugin id.\n */\nconst JUPYTERLAB_DOCMANAGER_PLUGIN_ID = '@jupyterlab/docmanager-extension:plugin';\n/**\n * The command IDs used by the application plugin.\n */\nvar CommandIDs;\n(function (CommandIDs) {\n /**\n * Duplicate the current document and open the new document\n */\n CommandIDs.duplicate = 'application:duplicate';\n /**\n * Handle local links\n */\n CommandIDs.handleLink = 'application:handle-local-link';\n /**\n * Toggle Top Bar visibility\n */\n CommandIDs.toggleTop = 'application:toggle-top';\n /**\n * Toggle side panel visibility\n */\n CommandIDs.togglePanel = 'application:toggle-panel';\n /**\n * Toggle the Zen mode\n */\n CommandIDs.toggleZen = 'application:toggle-zen';\n /**\n * Open JupyterLab\n */\n CommandIDs.openLab = 'application:open-lab';\n /**\n * Open the tree page.\n */\n CommandIDs.openTree = 'application:open-tree';\n /**\n * Rename the current document\n */\n CommandIDs.rename = 'application:rename';\n /**\n * Resolve tree path\n */\n CommandIDs.resolveTree = 'application:resolve-tree';\n})(CommandIDs || (CommandIDs = {}));\n/**\n * Check if the application is dirty before closing the browser tab.\n */\nconst dirty = {\n id: '@jupyter-notebook/application-extension:dirty',\n description: 'Check if the application is dirty before closing the browser tab.',\n autoStart: true,\n requires: [ILabStatus, ITranslator],\n activate: (app, status, translator) => {\n if (!(app instanceof NotebookApp)) {\n throw new Error(`${dirty.id} must be activated in Jupyter Notebook.`);\n }\n const trans = translator.load('notebook');\n const message = trans.__('Are you sure you want to exit Jupyter Notebook?\\n\\nAny unsaved changes will be lost.');\n window.addEventListener('beforeunload', (event) => {\n if (app.status.isDirty) {\n return (event.returnValue = message);\n }\n });\n },\n};\n/**\n * The logo plugin.\n */\nconst logo = {\n id: '@jupyter-notebook/application-extension:logo',\n description: 'The logo plugin.',\n autoStart: true,\n activate: (app) => {\n const baseUrl = PageConfig.getBaseUrl();\n const node = document.createElement('a');\n node.href = `${baseUrl}tree`;\n node.target = '_blank';\n node.rel = 'noopener noreferrer';\n const logo = new Widget({ node });\n jupyterIcon.element({\n container: node,\n elementPosition: 'center',\n padding: '2px 2px 2px 8px',\n height: '28px',\n width: 'auto',\n cursor: 'pointer',\n margin: 'auto',\n });\n logo.id = 'jp-NotebookLogo';\n app.shell.add(logo, 'top', { rank: 0 });\n },\n};\n/**\n * A plugin to open documents in the main area.\n */\nconst opener = {\n id: '@jupyter-notebook/application-extension:opener',\n description: 'A plugin to open documents in the main area.',\n autoStart: true,\n requires: [IRouter, IDocumentManager],\n optional: [ISettingRegistry],\n activate: (app, router, docManager, settingRegistry) => {\n const { commands, docRegistry } = app;\n const command = 'router:tree';\n commands.addCommand(command, {\n execute: (args) => {\n var _a;\n const parsed = args;\n const matches = (_a = parsed.path.match(TREE_PATTERN)) !== null && _a !== void 0 ? _a : [];\n const [, , path] = matches;\n if (!path) {\n return;\n }\n app.started.then(async () => {\n var _a;\n const file = decodeURIComponent(path);\n const urlParams = new URLSearchParams(parsed.search);\n let defaultFactory = docRegistry.defaultWidgetFactory(path).name;\n // Explicitly get the default viewers from the settings because\n // JupyterLab might not have had the time to load the settings yet (race condition)\n // Relevant code: https://github.com/jupyterlab/jupyterlab/blob/d56ff811f39b3c10c6d8b6eb27a94624b753eb53/packages/docmanager-extension/src/index.tsx#L265-L293\n if (settingRegistry) {\n const settings = await settingRegistry.load(JUPYTERLAB_DOCMANAGER_PLUGIN_ID);\n const defaultViewers = settings.get('defaultViewers').composite;\n // get the file types for the path\n const types = docRegistry.getFileTypesForPath(path);\n // for each file type, check if there is a default viewer and if it\n // is available in the docRegistry. If it is the case, use it as the\n // default factory\n types.forEach((ft) => {\n if (defaultViewers[ft.name] !== undefined &&\n docRegistry.getWidgetFactory(defaultViewers[ft.name])) {\n defaultFactory = defaultViewers[ft.name];\n }\n });\n }\n const factory = (_a = urlParams.get('factory')) !== null && _a !== void 0 ? _a : defaultFactory;\n docManager.open(file, factory, undefined, {\n ref: '_noref',\n });\n });\n },\n });\n router.register({ command, pattern: TREE_PATTERN });\n },\n};\n/**\n * A plugin to customize menus\n */\nconst menus = {\n id: '@jupyter-notebook/application-extension:menus',\n description: 'A plugin to customize menus.',\n requires: [IMainMenu],\n autoStart: true,\n activate: (app, menu) => {\n // always disable the Tabs menu\n menu.tabsMenu.dispose();\n const page = PageConfig.getOption('notebookPage');\n switch (page) {\n case 'consoles':\n case 'terminals':\n case 'tree':\n menu.editMenu.dispose();\n menu.kernelMenu.dispose();\n menu.runMenu.dispose();\n break;\n case 'edit':\n menu.kernelMenu.dispose();\n menu.runMenu.dispose();\n break;\n default:\n break;\n }\n },\n};\n/**\n * A plugin to provide a spacer at rank 900 in the menu area\n */\nconst menuSpacer = {\n id: '@jupyter-notebook/application-extension:menu-spacer',\n description: 'A plugin to provide a spacer at rank 900 in the menu area.',\n autoStart: true,\n activate: (app) => {\n const menu = new Widget();\n menu.id = DOMUtils.createDomID();\n menu.addClass('jp-NotebookSpacer');\n app.shell.add(menu, 'menu', { rank: 900 });\n },\n};\n/**\n * Add commands to open the tree and running pages.\n */\nconst pages = {\n id: '@jupyter-notebook/application-extension:pages',\n description: 'Add commands to open the tree and running pages.',\n autoStart: true,\n requires: [ITranslator],\n optional: [ICommandPalette],\n activate: (app, translator, palette) => {\n const trans = translator.load('notebook');\n const baseUrl = PageConfig.getBaseUrl();\n app.commands.addCommand(CommandIDs.openLab, {\n label: trans.__('Open JupyterLab'),\n execute: () => {\n window.open(URLExt.join(baseUrl, 'lab'));\n },\n });\n const page = PageConfig.getOption('notebookPage');\n app.commands.addCommand(CommandIDs.openTree, {\n label: trans.__('File Browser'),\n execute: () => {\n if (page === 'tree') {\n app.commands.execute('filebrowser:activate');\n }\n else {\n window.open(URLExt.join(baseUrl, 'tree'));\n }\n },\n });\n if (palette) {\n palette.addItem({ command: CommandIDs.openLab, category: 'View' });\n palette.addItem({ command: CommandIDs.openTree, category: 'View' });\n }\n },\n};\n/**\n * A plugin to open paths in new browser tabs.\n */\nconst pathOpener = {\n id: '@jupyter-notebook/application-extension:path-opener',\n description: 'A plugin to open paths in new browser tabs.',\n autoStart: true,\n provides: INotebookPathOpener,\n activate: (app) => {\n return defaultNotebookPathOpener;\n },\n};\n/**\n * The default paths for a Jupyter Notebook app.\n */\nconst paths = {\n id: '@jupyter-notebook/application-extension:paths',\n description: 'The default paths for a Jupyter Notebook app.',\n autoStart: true,\n provides: JupyterFrontEnd.IPaths,\n activate: (app) => {\n if (!(app instanceof NotebookApp)) {\n throw new Error(`${paths.id} must be activated in Jupyter Notebook.`);\n }\n return app.paths;\n },\n};\n/**\n * A plugin providing a rendermime registry.\n */\nconst rendermime = {\n id: '@jupyter-notebook/application-extension:rendermime',\n description: 'A plugin providing a rendermime registry.',\n autoStart: true,\n provides: IRenderMimeRegistry,\n optional: [\n IDocumentManager,\n ILatexTypesetter,\n ISanitizer,\n IMarkdownParser,\n ITranslator,\n INotebookPathOpener,\n ],\n activate: (app, docManager, latexTypesetter, sanitizer, markdownParser, translator, notebookPathOpener) => {\n const trans = (translator !== null && translator !== void 0 ? translator : nullTranslator).load('jupyterlab');\n const opener = notebookPathOpener !== null && notebookPathOpener !== void 0 ? notebookPathOpener : defaultNotebookPathOpener;\n if (docManager) {\n app.commands.addCommand(CommandIDs.handleLink, {\n label: trans.__('Handle Local Link'),\n execute: (args) => {\n const path = args['path'];\n if (path === undefined || path === null) {\n return;\n }\n return docManager.services.contents\n .get(path, { content: false })\n .then((model) => {\n const baseUrl = PageConfig.getBaseUrl();\n opener.open({\n prefix: URLExt.join(baseUrl, 'tree'),\n path: model.path,\n target: '_blank',\n });\n });\n },\n });\n }\n return new RenderMimeRegistry({\n initialFactories: standardRendererFactories,\n linkHandler: !docManager\n ? undefined\n : {\n handleLink: (node, path, id) => {\n // If node has the download attribute explicitly set, use the\n // default browser downloading behavior.\n if (node.tagName === 'A' && node.hasAttribute('download')) {\n return;\n }\n app.commandLinker.connectNode(node, CommandIDs.handleLink, {\n path,\n id,\n });\n },\n },\n latexTypesetter: latexTypesetter !== null && latexTypesetter !== void 0 ? latexTypesetter : undefined,\n markdownParser: markdownParser !== null && markdownParser !== void 0 ? markdownParser : undefined,\n translator: translator !== null && translator !== void 0 ? translator : undefined,\n sanitizer: sanitizer !== null && sanitizer !== void 0 ? sanitizer : undefined,\n });\n },\n};\n/**\n * The default Jupyter Notebook application shell.\n */\nconst shell = {\n id: '@jupyter-notebook/application-extension:shell',\n description: 'The default Jupyter Notebook application shell.',\n autoStart: true,\n provides: INotebookShell,\n optional: [ISettingRegistry],\n activate: (app, settingRegistry) => {\n if (!(app.shell instanceof NotebookShell)) {\n throw new Error(`${shell.id} did not find a NotebookShell instance.`);\n }\n const notebookShell = app.shell;\n if (settingRegistry) {\n settingRegistry\n .load(shell.id)\n .then((settings) => {\n // Add a layer of customization to support app shell mode\n const customLayout = settings.composite['layout'];\n // Restore the layout.\n void notebookShell.restoreLayout(customLayout);\n })\n .catch((reason) => {\n console.error('Fail to load settings for the layout restorer.');\n console.error(reason);\n });\n }\n return notebookShell;\n },\n};\n/**\n * The default splash screen provider.\n */\nconst splash = {\n id: '@jupyter-notebook/application-extension:splash',\n description: 'Provides an empty splash screen.',\n autoStart: true,\n provides: ISplashScreen,\n activate: (app) => {\n const { restored } = app;\n const splash = document.createElement('div');\n splash.style.position = 'absolute';\n splash.style.width = '100%';\n splash.style.height = '100%';\n splash.style.zIndex = '10';\n return {\n show: (light = true) => {\n splash.style.backgroundColor = light ? 'white' : '#111111';\n document.body.appendChild(splash);\n return new DisposableDelegate(async () => {\n await restored;\n document.body.removeChild(splash);\n });\n },\n };\n },\n};\n/**\n * The default JupyterLab application status provider.\n */\nconst status = {\n id: '@jupyter-notebook/application-extension:status',\n description: 'The default JupyterLab application status provider.',\n autoStart: true,\n provides: ILabStatus,\n activate: (app) => {\n if (!(app instanceof NotebookApp)) {\n throw new Error(`${status.id} must be activated in Jupyter Notebook.`);\n }\n return app.status;\n },\n};\n/**\n * A plugin to display the document title in the browser tab title\n */\nconst tabTitle = {\n id: '@jupyter-notebook/application-extension:tab-title',\n description: 'A plugin to display the document title in the browser tab title.',\n autoStart: true,\n requires: [INotebookShell],\n activate: (app, shell) => {\n const setTabTitle = () => {\n const current = shell.currentWidget;\n if (current instanceof ConsolePanel) {\n const update = () => {\n const title = current.sessionContext.path || current.sessionContext.name;\n const basename = PathExt.basename(title);\n // Strip the \".ipynb\" suffix from filenames for display in tab titles.\n document.title = basename.replace(STRIP_IPYNB, '');\n };\n current.sessionContext.sessionChanged.connect(update);\n update();\n return;\n }\n else if (current instanceof DocumentWidget) {\n const update = () => {\n const basename = PathExt.basename(current.context.path);\n document.title = basename.replace(STRIP_IPYNB, '');\n };\n current.context.pathChanged.connect(update);\n update();\n }\n };\n shell.currentChanged.connect(setTabTitle);\n setTabTitle();\n },\n};\n/**\n * A plugin to display and rename the title of a file\n */\nconst title = {\n id: '@jupyter-notebook/application-extension:title',\n description: 'A plugin to display and rename the title of a file.',\n autoStart: true,\n requires: [INotebookShell, ITranslator],\n optional: [IDocumentManager, IRouter, IToolbarWidgetRegistry],\n activate: (app, shell, translator, docManager, router, toolbarRegistry) => {\n const { commands } = app;\n const trans = translator.load('notebook');\n const node = document.createElement('div');\n if (toolbarRegistry) {\n toolbarRegistry.addFactory('TopBar', 'widgetTitle', (toolbar) => {\n const widget = new Widget({ node });\n widget.id = 'jp-title';\n return widget;\n });\n }\n const addTitle = async () => {\n const current = shell.currentWidget;\n if (!current || !(current instanceof DocumentWidget)) {\n return;\n }\n if (node.children.length > 0) {\n return;\n }\n const h = document.createElement('h1');\n h.textContent = current.title.label.replace(STRIP_IPYNB, '');\n node.appendChild(h);\n node.style.marginLeft = '10px';\n if (!docManager) {\n return;\n }\n const isEnabled = () => {\n const { currentWidget } = shell;\n return !!(currentWidget && docManager.contextForWidget(currentWidget));\n };\n commands.addCommand(CommandIDs.duplicate, {\n label: () => trans.__('Duplicate'),\n isEnabled,\n execute: async () => {\n if (!isEnabled()) {\n return;\n }\n // Duplicate the file, and open the new file.\n const result = await docManager.duplicate(current.context.path);\n await commands.execute('docmanager:open', { path: result.path });\n },\n });\n commands.addCommand(CommandIDs.rename, {\n label: () => trans.__('Rename…'),\n isEnabled,\n execute: async () => {\n var _a;\n if (!isEnabled()) {\n return;\n }\n const result = await renameDialog(docManager, current.context);\n // activate the current widget to bring the focus\n if (current) {\n current.activate();\n }\n if (result === null) {\n return;\n }\n const newPath = current.context.path;\n const basename = PathExt.basename(newPath);\n h.textContent = basename.replace(STRIP_IPYNB, '');\n if (!router) {\n return;\n }\n const matches = (_a = router.current.path.match(TREE_PATTERN)) !== null && _a !== void 0 ? _a : [];\n const [, route, path] = matches;\n if (!route || !path) {\n return;\n }\n const encoded = encodeURIComponent(newPath);\n router.navigate(`/${route}/${encoded}`, {\n skipRouting: true,\n });\n },\n });\n node.onclick = async () => {\n void commands.execute(CommandIDs.rename);\n };\n };\n shell.currentChanged.connect(addTitle);\n void addTitle();\n },\n};\n/**\n * Plugin to toggle the top header visibility.\n */\nconst topVisibility = {\n id: '@jupyter-notebook/application-extension:top',\n description: 'Plugin to toggle the top header visibility.',\n requires: [INotebookShell, ITranslator],\n optional: [ISettingRegistry, ICommandPalette],\n activate: (app, notebookShell, translator, settingRegistry, palette) => {\n const trans = translator.load('notebook');\n const top = notebookShell.top;\n const pluginId = topVisibility.id;\n app.commands.addCommand(CommandIDs.toggleTop, {\n label: trans.__('Show Header'),\n execute: () => {\n top.setHidden(top.isVisible);\n if (settingRegistry) {\n void settingRegistry.set(pluginId, 'visible', top.isVisible ? 'yes' : 'no');\n }\n },\n isToggled: () => top.isVisible,\n });\n let adjustToScreen = false;\n if (settingRegistry) {\n const loadSettings = settingRegistry.load(pluginId);\n const updateSettings = (settings) => {\n // 'visible' property from user preferences or default settings\n let visible = settings.get('visible').composite;\n if (settings.user.visible !== undefined) {\n visible = settings.user.visible;\n }\n top.setHidden(visible === 'no');\n // adjust to screen from user preferences or default settings\n adjustToScreen = visible === 'automatic';\n };\n Promise.all([loadSettings, app.restored])\n .then(([settings]) => {\n updateSettings(settings);\n settings.changed.connect((settings) => {\n updateSettings(settings);\n });\n })\n .catch((reason) => {\n console.error(reason.message);\n });\n }\n if (palette) {\n palette.addItem({ command: CommandIDs.toggleTop, category: 'View' });\n }\n const onChanged = () => {\n if (!adjustToScreen) {\n return;\n }\n if (app.format === 'desktop') {\n notebookShell.expandTop();\n }\n else {\n notebookShell.collapseTop();\n }\n };\n // listen on format change (mobile and desktop) to make the view more compact\n app.formatChanged.connect(onChanged);\n },\n autoStart: true,\n};\n/**\n * Plugin to toggle the left or right side panel's visibility.\n */\nconst sidePanelVisibility = {\n id: '@jupyter-notebook/application-extension:sidepanel',\n description: 'Plugin to toggle the visibility of left or right side panel.',\n requires: [INotebookShell, ITranslator],\n optional: [IMainMenu, ICommandPalette],\n autoStart: true,\n activate: (app, notebookShell, translator, menu, palette) => {\n const trans = translator.load('notebook');\n /* Arguments for togglePanel command:\n * side, left or right area\n * title, widget title to show in the menu\n * id, widget ID to activate in the side panel\n */\n app.commands.addCommand(CommandIDs.togglePanel, {\n label: (args) => args['title'],\n caption: (args) => {\n // We do not substitute the parameter into the string because the parameter is not\n // localized (e.g., it is always 'left') even though the string is localized.\n if (args['side'] === 'left') {\n return trans.__('Show %1 in the left sidebar', args['title']);\n }\n else if (args['side'] === 'right') {\n return trans.__('Show %1 in the right sidebar', args['title']);\n }\n return trans.__('Show %1 in the sidebar', args['title']);\n },\n execute: (args) => {\n var _a, _b;\n switch (args['side']) {\n case 'left':\n if (notebookShell.leftCollapsed) {\n notebookShell.expandLeft(args.id);\n }\n else if (((_a = notebookShell.leftHandler.currentWidget) === null || _a === void 0 ? void 0 : _a.id) !== args.id) {\n notebookShell.expandLeft(args.id);\n }\n else {\n notebookShell.collapseLeft();\n if (notebookShell.currentWidget) {\n notebookShell.activateById(notebookShell.currentWidget.id);\n }\n }\n break;\n case 'right':\n if (notebookShell.rightCollapsed) {\n notebookShell.expandRight(args.id);\n }\n else if (((_b = notebookShell.rightHandler.currentWidget) === null || _b === void 0 ? void 0 : _b.id) !== args.id) {\n notebookShell.expandRight(args.id);\n }\n else {\n notebookShell.collapseRight();\n if (notebookShell.currentWidget) {\n notebookShell.activateById(notebookShell.currentWidget.id);\n }\n }\n break;\n }\n },\n isToggled: (args) => {\n switch (args['side']) {\n case 'left': {\n if (notebookShell.leftCollapsed) {\n return false;\n }\n const currentWidget = notebookShell.leftHandler.currentWidget;\n if (!currentWidget) {\n return false;\n }\n return currentWidget.id === args['id'];\n }\n case 'right': {\n if (notebookShell.rightCollapsed) {\n return false;\n }\n const currentWidget = notebookShell.rightHandler.currentWidget;\n if (!currentWidget) {\n return false;\n }\n return currentWidget.id === args['id'];\n }\n }\n return false;\n },\n });\n const sidePanelMenu = {\n left: null,\n right: null,\n };\n /**\n * The function which adds entries to the View menu for each widget of a side panel.\n *\n * @param area - 'left' or 'right', the area of the side panel.\n * @param entryLabel - the name of the main entry in the View menu for that side panel.\n * @returns - The disposable menu added to the View menu or null.\n */\n const updateMenu = (area, entryLabel) => {\n var _a;\n if (menu === null) {\n return null;\n }\n // Remove the previous menu entry for this side panel.\n (_a = sidePanelMenu[area]) === null || _a === void 0 ? void 0 : _a.dispose();\n // Creates a new menu entry and populates it with side panel widgets.\n const newMenu = new Menu({ commands: app.commands });\n newMenu.title.label = entryLabel;\n const widgets = notebookShell.widgets(area);\n let menuToAdd = false;\n for (const widget of widgets) {\n newMenu.addItem({\n command: CommandIDs.togglePanel,\n args: {\n side: area,\n title: `Show ${widget.title.caption}`,\n id: widget.id,\n },\n });\n menuToAdd = true;\n }\n // If there are widgets, add the menu to the main menu entry.\n if (menuToAdd) {\n sidePanelMenu[area] = menu.viewMenu.addItem({\n type: 'submenu',\n submenu: newMenu,\n });\n }\n };\n app.restored.then(() => {\n // Create menu entries for the left and right panel.\n if (menu) {\n const getSidePanelLabel = (area) => {\n if (area === 'left') {\n return trans.__('Left Sidebar');\n }\n else {\n return trans.__('Right Sidebar');\n }\n };\n const leftArea = notebookShell.leftHandler.area;\n const leftLabel = getSidePanelLabel(leftArea);\n updateMenu(leftArea, leftLabel);\n const rightArea = notebookShell.rightHandler.area;\n const rightLabel = getSidePanelLabel(rightArea);\n updateMenu(rightArea, rightLabel);\n const handleSidePanelChange = (sidePanel, widget) => {\n const label = getSidePanelLabel(sidePanel.area);\n updateMenu(sidePanel.area, label);\n };\n notebookShell.leftHandler.widgetAdded.connect(handleSidePanelChange);\n notebookShell.leftHandler.widgetRemoved.connect(handleSidePanelChange);\n notebookShell.rightHandler.widgetAdded.connect(handleSidePanelChange);\n notebookShell.rightHandler.widgetRemoved.connect(handleSidePanelChange);\n }\n // Add palette entries for side panels.\n if (palette) {\n const sidePanelPalette = new SidePanelPalette({\n commandPalette: palette,\n command: CommandIDs.togglePanel,\n });\n notebookShell.leftHandler.widgets.forEach((widget) => {\n sidePanelPalette.addItem(widget, notebookShell.leftHandler.area);\n });\n notebookShell.rightHandler.widgets.forEach((widget) => {\n sidePanelPalette.addItem(widget, notebookShell.rightHandler.area);\n });\n // Update menu and palette when widgets are added or removed from side panels.\n notebookShell.leftHandler.widgetAdded.connect((sidePanel, widget) => {\n sidePanelPalette.addItem(widget, sidePanel.area);\n });\n notebookShell.leftHandler.widgetRemoved.connect((sidePanel, widget) => {\n sidePanelPalette.removeItem(widget, sidePanel.area);\n });\n notebookShell.rightHandler.widgetAdded.connect((sidePanel, widget) => {\n sidePanelPalette.addItem(widget, sidePanel.area);\n });\n notebookShell.rightHandler.widgetRemoved.connect((sidePanel, widget) => {\n sidePanelPalette.removeItem(widget, sidePanel.area);\n });\n }\n });\n },\n};\n/**\n * The default tree route resolver plugin.\n */\nconst tree = {\n id: '@jupyter-notebook/application-extension:tree-resolver',\n description: 'The default tree route resolver plugin.',\n autoStart: true,\n requires: [IRouter],\n provides: JupyterFrontEnd.ITreeResolver,\n activate: (app, router) => {\n const { commands } = app;\n const set = new DisposableSet();\n const delegate = new PromiseDelegate();\n const treePattern = new RegExp('/(/tree/.*)?');\n set.add(commands.addCommand(CommandIDs.resolveTree, {\n execute: (async (args) => {\n var _a;\n if (set.isDisposed) {\n return;\n }\n const query = URLExt.queryStringToObject((_a = args.search) !== null && _a !== void 0 ? _a : '');\n const browser = query['file-browser-path'] || '';\n // Remove the file browser path from the query string.\n delete query['file-browser-path'];\n // Clean up artifacts immediately upon routing.\n set.dispose();\n delegate.resolve({ browser, file: PageConfig.getOption('treePath') });\n }),\n }));\n set.add(router.register({ command: CommandIDs.resolveTree, pattern: treePattern }));\n // If a route is handled by the router without the tree command being\n // invoked, resolve to `null` and clean up artifacts.\n const listener = () => {\n if (set.isDisposed) {\n return;\n }\n set.dispose();\n delegate.resolve(null);\n };\n router.routed.connect(listener);\n set.add(new DisposableDelegate(() => {\n router.routed.disconnect(listener);\n }));\n return { paths: delegate.promise };\n },\n};\n/**\n * Plugin to update tree path.\n */\nconst treePathUpdater = {\n id: '@jupyter-notebook/application-extension:tree-updater',\n description: 'Plugin to update tree path.',\n requires: [IRouter],\n provides: ITreePathUpdater,\n activate: (app, router) => {\n function updateTreePath(treePath) {\n if (treePath !== PageConfig.getOption('treePath')) {\n const path = URLExt.join(PageConfig.getOption('baseUrl') || '/', 'tree', URLExt.encodeParts(treePath));\n router.navigate(path, { skipRouting: true });\n // Persist the new tree path to PageConfig as it is used elsewhere at runtime.\n PageConfig.setOption('treePath', treePath);\n }\n }\n return updateTreePath;\n },\n autoStart: true,\n};\n/**\n * Translator plugin\n */\nconst translator = {\n id: '@jupyter-notebook/application-extension:translator',\n description: 'Translator plugin',\n requires: [INotebookShell, ITranslator],\n autoStart: true,\n activate: (app, notebookShell, translator) => {\n notebookShell.translator = translator;\n },\n};\n/**\n * Zen mode plugin\n */\nconst zen = {\n id: '@jupyter-notebook/application-extension:zen',\n description: 'Zen mode plugin.',\n autoStart: true,\n requires: [ITranslator],\n optional: [ICommandPalette, INotebookShell],\n activate: (app, translator, palette, notebookShell) => {\n const { commands } = app;\n const elem = document.documentElement;\n const trans = translator.load('notebook');\n const toggleOn = () => {\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.collapseTop();\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.menu.setHidden(true);\n zenModeEnabled = true;\n };\n const toggleOff = () => {\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.expandTop();\n notebookShell === null || notebookShell === void 0 ? void 0 : notebookShell.menu.setHidden(false);\n zenModeEnabled = false;\n };\n let zenModeEnabled = false;\n commands.addCommand(CommandIDs.toggleZen, {\n label: trans.__('Toggle Zen Mode'),\n execute: () => {\n if (!zenModeEnabled) {\n elem.requestFullscreen();\n toggleOn();\n }\n else {\n document.exitFullscreen();\n toggleOff();\n }\n },\n });\n document.addEventListener('fullscreenchange', () => {\n if (!document.fullscreenElement) {\n toggleOff();\n }\n });\n if (palette) {\n palette.addItem({ command: CommandIDs.toggleZen, category: 'Mode' });\n }\n },\n};\n/**\n * Export the plugins as default.\n */\nconst plugins = [\n dirty,\n logo,\n menus,\n menuSpacer,\n opener,\n pages,\n pathOpener,\n paths,\n rendermime,\n shell,\n sidePanelVisibility,\n splash,\n status,\n tabTitle,\n title,\n topVisibility,\n tree,\n treePathUpdater,\n translator,\n zen,\n];\nexport default plugins;\n"],"names":[],"sourceRoot":""}