notebook 7.4.4__py3-none-any.whl → 7.4.5__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 (131) hide show
  1. notebook/_version.py +1 -1
  2. notebook/static/{132.9f8c8540fc63a49a9d74.js → 132.bbe0fd1e86fe078554cf.js} +2 -2
  3. notebook/static/{132.9f8c8540fc63a49a9d74.js.map → 132.bbe0fd1e86fe078554cf.js.map} +1 -1
  4. notebook/static/{1584.fa41c8f3ce855db5cab4.js → 1584.5e136a9d8643093bc7e9.js} +2 -2
  5. notebook/static/{1584.fa41c8f3ce855db5cab4.js.map → 1584.5e136a9d8643093bc7e9.js.map} +1 -1
  6. notebook/static/{1650.afa95e6a11189688bc0d.js → 1650.43e49e4c78755f921679.js} +4 -4
  7. notebook/static/{1650.afa95e6a11189688bc0d.js.map → 1650.43e49e4c78755f921679.js.map} +1 -1
  8. notebook/static/{1684.12280f8470722e2e1bdd.js → 1684.72557761abcc7d3f021b.js} +5 -5
  9. notebook/static/{1684.12280f8470722e2e1bdd.js.map → 1684.72557761abcc7d3f021b.js.map} +1 -1
  10. notebook/static/{1715.a61bcde14ed0fff41d06.js → 1715.eb47d8a8fb23246d8368.js} +2 -2
  11. notebook/static/{1715.a61bcde14ed0fff41d06.js.map → 1715.eb47d8a8fb23246d8368.js.map} +1 -1
  12. notebook/static/{2913.ae7fccede5f85a45ab8f.js → 2913.274b19d8f201991f4a69.js} +3 -3
  13. notebook/static/{2913.ae7fccede5f85a45ab8f.js.map → 2913.274b19d8f201991f4a69.js.map} +1 -1
  14. notebook/static/{2955.d8fd055f03b878034fe4.js → 2955.199d6b7c6b5d8531cad7.js} +302 -47
  15. notebook/static/2955.199d6b7c6b5d8531cad7.js.map +1 -0
  16. notebook/static/{3146.8a7a657d9a66a9f5d3c4.js → 3146.f98fbe7d5b55224f0160.js} +3 -3
  17. notebook/static/{3146.8a7a657d9a66a9f5d3c4.js.map → 3146.f98fbe7d5b55224f0160.js.map} +1 -1
  18. notebook/static/{3197.679087d3d6e90032272a.js → 3197.132cf892d4ef38649b32.js} +3 -3
  19. notebook/static/{3197.679087d3d6e90032272a.js.map → 3197.132cf892d4ef38649b32.js.map} +1 -1
  20. notebook/static/{3619.22c7d8abf7febc282c79.js → 3619.2e4bf80097f9890aef49.js} +2 -2
  21. notebook/static/{3619.22c7d8abf7febc282c79.js.map → 3619.2e4bf80097f9890aef49.js.map} +1 -1
  22. notebook/static/{3768.2ac0d5c2a3fec16d1571.js → 3768.0b6995cb2c93a75f2359.js} +19 -19
  23. notebook/static/{7302.d78f81cccff1a175f9e0.js.map → 3768.0b6995cb2c93a75f2359.js.map} +1 -1
  24. notebook/static/{4276.aa39300c806a420e8c6e.js → 4276.2edc46f98f304de431b0.js} +3 -3
  25. notebook/static/{4276.aa39300c806a420e8c6e.js.map → 4276.2edc46f98f304de431b0.js.map} +1 -1
  26. notebook/static/{4382.b125e3c487c540303bd8.js → 4382.c317254086f1ae2d605a.js} +3 -3
  27. notebook/static/{4382.b125e3c487c540303bd8.js.map → 4382.c317254086f1ae2d605a.js.map} +1 -1
  28. notebook/static/{4430.1661db8ba0104d6baef2.js → 4430.879d60462da8c4629a70.js} +2 -2
  29. notebook/static/{4430.1661db8ba0104d6baef2.js.map → 4430.879d60462da8c4629a70.js.map} +1 -1
  30. notebook/static/{4588.7618f6b98796be928f8c.js → 4588.46b592131684aa708905.js} +3 -3
  31. notebook/static/{4588.7618f6b98796be928f8c.js.map → 4588.46b592131684aa708905.js.map} +1 -1
  32. notebook/static/{4645.998914768dd63f7e3b6a.js → 4645.9017711a4d52533bd2ae.js} +5 -5
  33. notebook/static/{4645.998914768dd63f7e3b6a.js.map → 4645.9017711a4d52533bd2ae.js.map} +1 -1
  34. notebook/static/{4837.a9ef53721ea86ce81edf.js → 4837.2a30feab2693717d3d43.js} +3 -3
  35. notebook/static/{4837.a9ef53721ea86ce81edf.js.map → 4837.2a30feab2693717d3d43.js.map} +1 -1
  36. notebook/static/{4926.07f857be253dfe2d9b64.js → 4926.7f42350f683b70d59456.js} +3 -3
  37. notebook/static/{4926.07f857be253dfe2d9b64.js.map → 4926.7f42350f683b70d59456.js.map} +1 -1
  38. notebook/static/{5135.b7b086e4e6f05e7e005d.js → 5135.1cde65c1d79a0adc262d.js} +11 -11
  39. notebook/static/{5135.b7b086e4e6f05e7e005d.js.map → 5135.1cde65c1d79a0adc262d.js.map} +1 -1
  40. notebook/static/{5573.bb30245305dc034dfc1d.js → 5573.38e0610ea3d6d9b005b5.js} +17 -17
  41. notebook/static/{5573.bb30245305dc034dfc1d.js.map → 5573.38e0610ea3d6d9b005b5.js.map} +1 -1
  42. notebook/static/{5601.66a1a7b62201a024a7c3.js → 5601.ffda77b468bc8b17a221.js} +5 -5
  43. notebook/static/{5601.66a1a7b62201a024a7c3.js.map → 5601.ffda77b468bc8b17a221.js.map} +1 -1
  44. notebook/static/{5850.65dd0d81b5948c463df4.js → 5850.30a4d9a000a79095dcff.js} +3 -3
  45. notebook/static/{5850.65dd0d81b5948c463df4.js.map → 5850.30a4d9a000a79095dcff.js.map} +1 -1
  46. notebook/static/{6271.7ad87d1f14b9d74742ec.js → 6271.809bc8c9941039275a30.js} +3 -3
  47. notebook/static/{6271.7ad87d1f14b9d74742ec.js.map → 6271.809bc8c9941039275a30.js.map} +1 -1
  48. notebook/static/{6345.d502d596db3228f46015.js → 6345.348b6265ddf3713ab5d6.js} +5 -5
  49. notebook/static/{6345.d502d596db3228f46015.js.map → 6345.348b6265ddf3713ab5d6.js.map} +1 -1
  50. notebook/static/{2283.b2d8643ec28ab13849b3.js → 6653.6525abafd19e7997f79c.js} +2 -2
  51. notebook/static/{2283.b2d8643ec28ab13849b3.js.map → 6653.6525abafd19e7997f79c.js.map} +1 -1
  52. notebook/static/{7302.d78f81cccff1a175f9e0.js → 7302.3f668970091842fbc9ca.js} +19 -19
  53. notebook/static/{3768.2ac0d5c2a3fec16d1571.js.map → 7302.3f668970091842fbc9ca.js.map} +1 -1
  54. notebook/static/{7450.c047a6b002d188bafd58.js → 7450.beacefc07c8e386709fa.js} +2 -2
  55. notebook/static/{7450.c047a6b002d188bafd58.js.map → 7450.beacefc07c8e386709fa.js.map} +1 -1
  56. notebook/static/{7866.b49b1018f43def5a8f30.js → 7866.b73df9c77816d05d6784.js} +3 -3
  57. notebook/static/{7866.b49b1018f43def5a8f30.js.map → 7866.b73df9c77816d05d6784.js.map} +1 -1
  58. notebook/static/{7906.487df198bc7b2617234f.js → 7906.c3e50e3c279ee95b5b0c.js} +3 -3
  59. notebook/static/{7906.487df198bc7b2617234f.js.map → 7906.c3e50e3c279ee95b5b0c.js.map} +1 -1
  60. notebook/static/{7995.45be6443b704da1daafc.js → 7995.8f35600b7ffffa34c89b.js} +3 -3
  61. notebook/static/{7995.45be6443b704da1daafc.js.map → 7995.8f35600b7ffffa34c89b.js.map} +1 -1
  62. notebook/static/{5261.f12a52481f4cee8ba676.js → 8313.45ac616d61cf717bff16.js} +152 -148
  63. notebook/static/8313.45ac616d61cf717bff16.js.map +1 -0
  64. notebook/static/{8579.d62567e04de2f4dfcdce.js → 8579.973518a0960b2b927064.js} +14 -14
  65. notebook/static/{8579.d62567e04de2f4dfcdce.js.map → 8579.973518a0960b2b927064.js.map} +1 -1
  66. notebook/static/{8781.33cace3f177efaaab2ae.js → 8781.3f87f07359077c3a8a85.js} +60 -60
  67. notebook/static/{8781.33cace3f177efaaab2ae.js.map → 8781.3f87f07359077c3a8a85.js.map} +1 -1
  68. notebook/static/{8875.af28a3c042114a6f93aa.js → 8875.0604966d624b3656aa1c.js} +4 -4
  69. notebook/static/{8875.af28a3c042114a6f93aa.js.map → 8875.0604966d624b3656aa1c.js.map} +1 -1
  70. notebook/static/{9068.53ce96460d0830da310f.js → 9068.d8c4c8fa34c89c710d15.js} +3 -3
  71. notebook/static/{9068.53ce96460d0830da310f.js.map → 9068.d8c4c8fa34c89c710d15.js.map} +1 -1
  72. notebook/static/{9380.392ac30e0b6842ae2b78.js → 9380.b2ee26fa1e359ebe5fb8.js} +5 -5
  73. notebook/static/{9380.392ac30e0b6842ae2b78.js.map → 9380.b2ee26fa1e359ebe5fb8.js.map} +1 -1
  74. notebook/static/{9799.3d54e01276f72cee9ada.js → 9799.f8f37b03cc4afc27f8f0.js} +2 -2
  75. notebook/static/{9799.3d54e01276f72cee9ada.js.map → 9799.f8f37b03cc4afc27f8f0.js.map} +1 -1
  76. notebook/static/main.e99dd4f880b24bc94403.js +1180 -0
  77. notebook/static/main.e99dd4f880b24bc94403.js.map +1 -0
  78. notebook/static/{notebook_core.5321b49dd3857d00ab82.js → notebook_core.e0fcfe0884f9e1166813.js} +974 -893
  79. notebook/static/{notebook_core.5321b49dd3857d00ab82.js.map → notebook_core.e0fcfe0884f9e1166813.js.map} +1 -1
  80. notebook/static/third-party-licenses.json +104 -104
  81. notebook/templates/consoles.html +1 -1
  82. notebook/templates/edit.html +1 -1
  83. notebook/templates/error.html +1 -1
  84. notebook/templates/notebooks.html +1 -1
  85. notebook/templates/terminals.html +1 -1
  86. notebook/templates/tree.html +1 -1
  87. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/package.json.orig +14 -14
  88. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/documentsearch-extension/package.json.orig +4 -4
  89. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/help-extension/package.json.orig +6 -6
  90. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/package.json.orig +9 -9
  91. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/tree-extension/package.json.orig +15 -15
  92. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/package.json +11 -11
  93. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/schemas/@jupyter-notebook/lab-extension/package.json.orig +10 -10
  94. notebook-7.4.5.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/261.ed6f8abd5781e8d11deb.js +1 -0
  95. notebook-7.4.4.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/568.0143b064f4b09edb4d20.js → notebook-7.4.5.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/568.5e057f374374b68b6acf.js +1 -1
  96. notebook-7.4.5.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/928.fb1e84fb9063ca0568af.js +1 -0
  97. notebook-7.4.4.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/93.eae3497dd223d842d198.js → notebook-7.4.5.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/93.c48a681bb3e8043bbbd7.js +1 -1
  98. notebook-7.4.5.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/remoteEntry.7e3d7768845089ad5f5f.js +1 -0
  99. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/third-party-licenses.json +2 -2
  100. {notebook-7.4.4.dist-info → notebook-7.4.5.dist-info}/METADATA +2 -2
  101. {notebook-7.4.4.dist-info → notebook-7.4.5.dist-info}/RECORD +124 -124
  102. notebook/static/2955.d8fd055f03b878034fe4.js.map +0 -1
  103. notebook/static/5261.f12a52481f4cee8ba676.js.map +0 -1
  104. notebook/static/main.58cb79c84cf80ba7b6ed.js +0 -1180
  105. notebook/static/main.58cb79c84cf80ba7b6ed.js.map +0 -1
  106. notebook-7.4.4.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/557.2f882aef2c303890736d.js +0 -1
  107. notebook-7.4.4.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/928.7e52f03b261ea07bcb3d.js +0 -1
  108. notebook-7.4.4.data/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/remoteEntry.da0f2149411be83933cb.js +0 -1
  109. {notebook-7.4.4.data → notebook-7.4.5.data}/data/etc/jupyter/jupyter_server_config.d/notebook.json +0 -0
  110. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/applications/jupyter-notebook.desktop +0 -0
  111. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/icons/hicolor/scalable/apps/notebook.svg +0 -0
  112. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/menus.json +0 -0
  113. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/pages.json +0 -0
  114. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/shell.json +0 -0
  115. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/title.json +0 -0
  116. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/top.json +0 -0
  117. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/application-extension/zen.json +0 -0
  118. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/help-extension/open.json +0 -0
  119. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/checkpoints.json +0 -0
  120. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/edit-notebook-metadata.json +0 -0
  121. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/full-width-notebook.json +0 -0
  122. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/kernel-logo.json +0 -0
  123. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/notebook-extension/scroll-output.json +0 -0
  124. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/tree-extension/file-actions.json +0 -0
  125. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/lab/schemas/@jupyter-notebook/tree-extension/widget.json +0 -0
  126. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/schemas/@jupyter-notebook/lab-extension/interface-switcher.json +0 -0
  127. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/schemas/@jupyter-notebook/lab-extension/launch-tree.json +0 -0
  128. {notebook-7.4.4.data → notebook-7.4.5.data}/data/share/jupyter/labextensions/@jupyter-notebook/lab-extension/static/style.js +0 -0
  129. {notebook-7.4.4.dist-info → notebook-7.4.5.dist-info}/WHEEL +0 -0
  130. {notebook-7.4.4.dist-info → notebook-7.4.5.dist-info}/entry_points.txt +0 -0
  131. {notebook-7.4.4.dist-info → notebook-7.4.5.dist-info}/licenses/LICENSE +0 -0
@@ -26,6 +26,7 @@ __webpack_require__.d(__webpack_exports__, {
26
26
  crosshairCursor: () => (/* binding */ crosshairCursor),
27
27
  drawSelection: () => (/* binding */ drawSelection),
28
28
  dropCursor: () => (/* binding */ dropCursor),
29
+ getDialog: () => (/* binding */ getDialog),
29
30
  getDrawSelectionConfig: () => (/* binding */ getDrawSelectionConfig),
30
31
  getPanel: () => (/* binding */ getPanel),
31
32
  getTooltip: () => (/* binding */ getTooltip),
@@ -52,6 +53,7 @@ __webpack_require__.d(__webpack_exports__, {
52
53
  repositionTooltips: () => (/* binding */ repositionTooltips),
53
54
  runScopeHandlers: () => (/* binding */ runScopeHandlers),
54
55
  scrollPastEnd: () => (/* binding */ scrollPastEnd),
56
+ showDialog: () => (/* binding */ showDialog),
55
57
  showPanel: () => (/* binding */ showPanel),
56
58
  showTooltip: () => (/* binding */ showTooltip),
57
59
  tooltips: () => (/* binding */ tooltips)
@@ -182,11 +184,14 @@ function keyName(event) {
182
184
  return name
183
185
  }
184
186
 
187
+ // EXTERNAL MODULE: ../node_modules/crelt/index.js
188
+ var crelt = __webpack_require__(76767);
185
189
  ;// CONCATENATED MODULE: ../node_modules/@codemirror/view/dist/index.js
186
190
 
187
191
 
188
192
 
189
193
 
194
+
190
195
  function getSelection(root) {
191
196
  let target;
192
197
  // Browsers differ on whether shadow roots have a getSelection
@@ -2603,8 +2608,7 @@ function logException(state, exception, context) {
2603
2608
  let handler = state.facet(exceptionSink);
2604
2609
  if (handler.length)
2605
2610
  handler[0](exception);
2606
- else if (window.onerror)
2607
- window.onerror(String(exception), context, undefined, undefined, exception);
2611
+ else if (window.onerror && window.onerror(String(exception), context, undefined, undefined, exception)) ;
2608
2612
  else if (context)
2609
2613
  console.error(context + ":", exception);
2610
2614
  else
@@ -2612,11 +2616,23 @@ function logException(state, exception, context) {
2612
2616
  }
2613
2617
  const editable = /*@__PURE__*/index_js_.Facet.define({ combine: values => values.length ? values[0] : true });
2614
2618
  let nextPluginID = 0;
2615
- const viewPlugin = /*@__PURE__*/index_js_.Facet.define();
2619
+ const viewPlugin = /*@__PURE__*/index_js_.Facet.define({
2620
+ combine(plugins) {
2621
+ return plugins.filter((p, i) => {
2622
+ for (let j = 0; j < i; j++)
2623
+ if (plugins[j].plugin == p.plugin)
2624
+ return false;
2625
+ return true;
2626
+ });
2627
+ }
2628
+ });
2616
2629
  /**
2617
2630
  View plugins associate stateful values with a view. They can
2618
2631
  influence the way the content is drawn, and are notified of things
2619
- that happen in the view.
2632
+ that happen in the view. They optionally take an argument, in
2633
+ which case you need to call [`of`](https://codemirror.net/6/docs/ref/#view.ViewPlugin.of) to create
2634
+ an extension for the plugin. When the argument type is undefined,
2635
+ you can use the plugin instance as an extension directly.
2620
2636
  */
2621
2637
  class ViewPlugin {
2622
2638
  constructor(
@@ -2640,7 +2656,14 @@ class ViewPlugin {
2640
2656
  this.create = create;
2641
2657
  this.domEventHandlers = domEventHandlers;
2642
2658
  this.domEventObservers = domEventObservers;
2643
- this.extension = buildExtensions(this);
2659
+ this.baseExtensions = buildExtensions(this);
2660
+ this.extension = this.baseExtensions.concat(viewPlugin.of({ plugin: this, arg: undefined }));
2661
+ }
2662
+ /**
2663
+ Create an extension for this plugin with the given argument.
2664
+ */
2665
+ of(arg) {
2666
+ return this.baseExtensions.concat(viewPlugin.of({ plugin: this, arg }));
2644
2667
  }
2645
2668
  /**
2646
2669
  Define a plugin from a constructor function that creates the
@@ -2649,7 +2672,7 @@ class ViewPlugin {
2649
2672
  static define(create, spec) {
2650
2673
  const { eventHandlers, eventObservers, provide, decorations: deco } = spec || {};
2651
2674
  return new ViewPlugin(nextPluginID++, create, eventHandlers, eventObservers, plugin => {
2652
- let ext = [viewPlugin.of(plugin)];
2675
+ let ext = [];
2653
2676
  if (deco)
2654
2677
  ext.push(decorations.of(view => {
2655
2678
  let pluginInst = view.plugin(plugin);
@@ -2665,7 +2688,7 @@ class ViewPlugin {
2665
2688
  editor view as argument.
2666
2689
  */
2667
2690
  static fromClass(cls, spec) {
2668
- return ViewPlugin.define(view => new cls(view), spec);
2691
+ return ViewPlugin.define((view, arg) => new cls(view, arg), spec);
2669
2692
  }
2670
2693
  }
2671
2694
  class PluginInstance {
@@ -2673,18 +2696,19 @@ class PluginInstance {
2673
2696
  this.spec = spec;
2674
2697
  // When starting an update, all plugins have this field set to the
2675
2698
  // update object, indicating they need to be updated. When finished
2676
- // updating, it is set to `false`. Retrieving a plugin that needs to
2699
+ // updating, it is set to `null`. Retrieving a plugin that needs to
2677
2700
  // be updated with `view.plugin` forces an eager update.
2678
2701
  this.mustUpdate = null;
2679
2702
  // This is null when the plugin is initially created, but
2680
2703
  // initialized on the first update.
2681
2704
  this.value = null;
2682
2705
  }
2706
+ get plugin() { return this.spec && this.spec.plugin; }
2683
2707
  update(view) {
2684
2708
  if (!this.value) {
2685
2709
  if (this.spec) {
2686
2710
  try {
2687
- this.value = this.spec.create(view);
2711
+ this.value = this.spec.plugin.create(view, this.spec.arg);
2688
2712
  }
2689
2713
  catch (e) {
2690
2714
  logException(view.state, e, "CodeMirror plugin crashed");
@@ -3640,8 +3664,7 @@ function domPosAtCoords(parent, x, y) {
3640
3664
  closestRect = rect;
3641
3665
  closestX = dx;
3642
3666
  closestY = dy;
3643
- let side = dy ? (y < rect.top ? -1 : 1) : dx ? (x < rect.left ? -1 : 1) : 0;
3644
- closestOverlap = !side || (side > 0 ? i < rects.length - 1 : i > 0);
3667
+ closestOverlap = !dx ? true : x < rect.left ? i > 0 : i < rects.length - 1;
3645
3668
  }
3646
3669
  if (dx == 0) {
3647
3670
  if (y > rect.bottom && (!aboveRect || aboveRect.bottom < rect.bottom)) {
@@ -3817,13 +3840,24 @@ function posAtCoordsImprecise(view, contentRect, block, x, y) {
3817
3840
  // line before. This is used to detect such a result so that it can be
3818
3841
  // ignored (issue #401).
3819
3842
  function isSuspiciousSafariCaretResult(node, offset, x) {
3820
- let len;
3843
+ let len, scan = node;
3821
3844
  if (node.nodeType != 3 || offset != (len = node.nodeValue.length))
3822
3845
  return false;
3823
- for (let next = node.nextSibling; next; next = next.nextSibling)
3824
- if (next.nodeType != 1 || next.nodeName != "BR")
3846
+ for (;;) { // Check that there is no content after this node
3847
+ let next = scan.nextSibling;
3848
+ if (next) {
3849
+ if (next.nodeName == "BR")
3850
+ break;
3825
3851
  return false;
3826
- return textRange(node, len - 1, len).getBoundingClientRect().left > x;
3852
+ }
3853
+ else {
3854
+ let parent = scan.parentNode;
3855
+ if (!parent || parent.nodeName == "DIV")
3856
+ break;
3857
+ scan = parent;
3858
+ }
3859
+ }
3860
+ return textRange(node, len - 1, len).getBoundingClientRect().right > x;
3827
3861
  }
3828
3862
  // Chrome will move positions between lines to the start of the next line
3829
3863
  function isSuspiciousChromeCaretResult(node, offset, x) {
@@ -4542,16 +4576,16 @@ function computeHandlers(plugins) {
4542
4576
  return result[type] || (result[type] = { observers: [], handlers: [] });
4543
4577
  }
4544
4578
  for (let plugin of plugins) {
4545
- let spec = plugin.spec;
4546
- if (spec && spec.domEventHandlers)
4547
- for (let type in spec.domEventHandlers) {
4548
- let f = spec.domEventHandlers[type];
4579
+ let spec = plugin.spec, handlers = spec && spec.plugin.domEventHandlers, observers = spec && spec.plugin.domEventObservers;
4580
+ if (handlers)
4581
+ for (let type in handlers) {
4582
+ let f = handlers[type];
4549
4583
  if (f)
4550
4584
  record(type).handlers.push(bindHandler(plugin.value, f));
4551
4585
  }
4552
- if (spec && spec.domEventObservers)
4553
- for (let type in spec.domEventObservers) {
4554
- let f = spec.domEventObservers[type];
4586
+ if (observers)
4587
+ for (let type in observers) {
4588
+ let f = observers[type];
4555
4589
  if (f)
4556
4590
  record(type).observers.push(bindHandler(plugin.value, f));
4557
4591
  }
@@ -5246,7 +5280,7 @@ class HeightOracle {
5246
5280
  heightForLine(length) {
5247
5281
  if (!this.lineWrapping)
5248
5282
  return this.lineHeight;
5249
- let lines = 1 + Math.max(0, Math.ceil((length - this.lineLength) / (this.lineLength - 5)));
5283
+ let lines = 1 + Math.max(0, Math.ceil((length - this.lineLength) / Math.max(1, this.lineLength - 5)));
5250
5284
  return lines * this.lineHeight;
5251
5285
  }
5252
5286
  setDoc(doc) { this.doc = doc; return this; }
@@ -6216,7 +6250,7 @@ class ViewState {
6216
6250
  refresh = true;
6217
6251
  if (refresh || oracle.lineWrapping && Math.abs(contentWidth - this.contentDOMWidth) > oracle.charWidth) {
6218
6252
  let { lineHeight, charWidth, textHeight } = view.docView.measureTextSize();
6219
- refresh = lineHeight > 0 && oracle.refresh(whiteSpace, lineHeight, charWidth, textHeight, contentWidth / charWidth, lineHeights);
6253
+ refresh = lineHeight > 0 && oracle.refresh(whiteSpace, lineHeight, charWidth, textHeight, Math.max(5, contentWidth / charWidth), lineHeights);
6220
6254
  if (refresh) {
6221
6255
  view.docView.minWidth = 0;
6222
6256
  result |= 16 /* UpdateFlag.Geometry */;
@@ -6741,13 +6775,16 @@ const baseTheme$1 = /*@__PURE__*/buildTheme("." + baseThemeID, {
6741
6775
  display: "flex",
6742
6776
  height: "100%",
6743
6777
  boxSizing: "border-box",
6744
- insetInlineStart: 0,
6745
- zIndex: 200
6778
+ zIndex: 200,
6746
6779
  },
6780
+ ".cm-gutters-before": { insetInlineStart: 0 },
6781
+ ".cm-gutters-after": { insetInlineEnd: 0 },
6747
6782
  "&light .cm-gutters": {
6748
6783
  backgroundColor: "#f5f5f5",
6749
6784
  color: "#6c6c6c",
6750
- borderRight: "1px solid #ddd"
6785
+ border: "0px solid #ddd",
6786
+ "&.cm-gutters-before": { borderRightWidth: "1px" },
6787
+ "&.cm-gutters-after": { borderLeftWidth: "1px" },
6751
6788
  },
6752
6789
  "&dark .cm-gutters": {
6753
6790
  backgroundColor: "#333338",
@@ -6797,6 +6834,21 @@ const baseTheme$1 = /*@__PURE__*/buildTheme("." + baseThemeID, {
6797
6834
  backgroundColor: "#333338",
6798
6835
  color: "white"
6799
6836
  },
6837
+ ".cm-dialog": {
6838
+ padding: "2px 19px 4px 6px",
6839
+ position: "relative",
6840
+ "& label": { fontSize: "80%" },
6841
+ },
6842
+ ".cm-dialog-close": {
6843
+ position: "absolute",
6844
+ top: "3px",
6845
+ right: "4px",
6846
+ backgroundColor: "inherit",
6847
+ border: "none",
6848
+ font: "inherit",
6849
+ fontSize: "14px",
6850
+ padding: "0"
6851
+ },
6800
6852
  ".cm-tab": {
6801
6853
  display: "inline-block",
6802
6854
  overflow: "hidden",
@@ -6923,7 +6975,7 @@ class DOMObserver {
6923
6975
  else
6924
6976
  this.flush();
6925
6977
  });
6926
- if (window.EditContext && view.constructor.EDIT_CONTEXT !== false &&
6978
+ if (window.EditContext && browser.android && view.constructor.EDIT_CONTEXT !== false &&
6927
6979
  // Chrome <126 doesn't support inverted selections in edit context (#1392)
6928
6980
  !(browser.chrome && browser.chrome_version < 126)) {
6929
6981
  this.editContext = new EditContextManager(view);
@@ -8109,8 +8161,8 @@ class EditorView {
8109
8161
  */
8110
8162
  plugin(plugin) {
8111
8163
  let known = this.pluginMap.get(plugin);
8112
- if (known === undefined || known && known.spec != plugin)
8113
- this.pluginMap.set(plugin, known = this.plugins.find(p => p.spec == plugin) || null);
8164
+ if (known === undefined || known && known.plugin != plugin)
8165
+ this.pluginMap.set(plugin, known = this.plugins.find(p => p.plugin == plugin) || null);
8114
8166
  return known && known.update(this).value;
8115
8167
  }
8116
8168
  /**
@@ -8934,6 +8986,8 @@ function runHandlers(map, event, view, scope) {
8934
8986
  else if (isChar && (event.altKey || event.metaKey || event.ctrlKey) &&
8935
8987
  // Ctrl-Alt may be used for AltGr on Windows
8936
8988
  !(browser.windows && event.ctrlKey && event.altKey) &&
8989
+ // Alt-combinations on macOS tend to be typed characters
8990
+ !(browser.mac && event.altKey && !event.ctrlKey) &&
8937
8991
  (baseName = base[event.keyCode]) && baseName != name) {
8938
8992
  if (runFor(scopeObj[prefix + modifiers(baseName, event, true)])) {
8939
8993
  handled = true;
@@ -9521,7 +9575,7 @@ class MatchDecorator {
9521
9575
  updateRange(view, deco, updateFrom, updateTo) {
9522
9576
  for (let r of view.visibleRanges) {
9523
9577
  let from = Math.max(r.from, updateFrom), to = Math.min(r.to, updateTo);
9524
- if (to > from) {
9578
+ if (to >= from) {
9525
9579
  let fromLine = view.state.doc.lineAt(from), toLine = fromLine.to < to ? view.state.doc.lineAt(to) : fromLine;
9526
9580
  let start = Math.max(r.from, fromLine.from), end = Math.min(r.to, toLine.to);
9527
9581
  if (this.boundary) {
@@ -10825,6 +10879,134 @@ const showPanel = /*@__PURE__*/index_js_.Facet.define({
10825
10879
  enables: panelPlugin
10826
10880
  });
10827
10881
 
10882
+ /**
10883
+ Show a panel above or below the editor to show the user a message
10884
+ or prompt them for input. Returns an effect that can be dispatched
10885
+ to close the dialog, and a promise that resolves when the dialog
10886
+ is closed or a form inside of it is submitted.
10887
+
10888
+ You are encouraged, if your handling of the result of the promise
10889
+ dispatches a transaction, to include the `close` effect in it. If
10890
+ you don't, this function will automatically dispatch a separate
10891
+ transaction right after.
10892
+ */
10893
+ function showDialog(view, config) {
10894
+ let resolve;
10895
+ let promise = new Promise(r => resolve = r);
10896
+ let panelCtor = (view) => createDialog(view, config, resolve);
10897
+ if (view.state.field(dialogField, false)) {
10898
+ view.dispatch({ effects: openDialogEffect.of(panelCtor) });
10899
+ }
10900
+ else {
10901
+ view.dispatch({ effects: index_js_.StateEffect.appendConfig.of(dialogField.init(() => [panelCtor])) });
10902
+ }
10903
+ let close = closeDialogEffect.of(panelCtor);
10904
+ return { close, result: promise.then(form => {
10905
+ let queue = view.win.queueMicrotask || ((f) => view.win.setTimeout(f, 10));
10906
+ queue(() => {
10907
+ if (view.state.field(dialogField).indexOf(panelCtor) > -1)
10908
+ view.dispatch({ effects: close });
10909
+ });
10910
+ return form;
10911
+ }) };
10912
+ }
10913
+ /**
10914
+ Find the [`Panel`](https://codemirror.net/6/docs/ref/#view.Panel) for an open dialog, using a class
10915
+ name as identifier.
10916
+ */
10917
+ function getDialog(view, className) {
10918
+ let dialogs = view.state.field(dialogField, false) || [];
10919
+ for (let open of dialogs) {
10920
+ let panel = getPanel(view, open);
10921
+ if (panel && panel.dom.classList.contains(className))
10922
+ return panel;
10923
+ }
10924
+ return null;
10925
+ }
10926
+ const dialogField = /*@__PURE__*/index_js_.StateField.define({
10927
+ create() { return []; },
10928
+ update(dialogs, tr) {
10929
+ for (let e of tr.effects) {
10930
+ if (e.is(openDialogEffect))
10931
+ dialogs = [e.value].concat(dialogs);
10932
+ else if (e.is(closeDialogEffect))
10933
+ dialogs = dialogs.filter(d => d != e.value);
10934
+ }
10935
+ return dialogs;
10936
+ },
10937
+ provide: f => showPanel.computeN([f], state => state.field(f))
10938
+ });
10939
+ const openDialogEffect = /*@__PURE__*/index_js_.StateEffect.define();
10940
+ const closeDialogEffect = /*@__PURE__*/index_js_.StateEffect.define();
10941
+ function createDialog(view, config, result) {
10942
+ let content = config.content ? config.content(view, () => done(null)) : null;
10943
+ if (!content) {
10944
+ content = (0,crelt/* default */.Z)("form");
10945
+ if (config.input) {
10946
+ let input = (0,crelt/* default */.Z)("input", config.input);
10947
+ if (/^(text|password|number|email|tel|url)$/.test(input.type))
10948
+ input.classList.add("cm-textfield");
10949
+ if (!input.name)
10950
+ input.name = "input";
10951
+ content.appendChild((0,crelt/* default */.Z)("label", (config.label || "") + ": ", input));
10952
+ }
10953
+ else {
10954
+ content.appendChild(document.createTextNode(config.label || ""));
10955
+ }
10956
+ content.appendChild(document.createTextNode(" "));
10957
+ content.appendChild((0,crelt/* default */.Z)("button", { class: "cm-button", type: "submit" }, config.submitLabel || "OK"));
10958
+ }
10959
+ let forms = content.nodeName == "FORM" ? [content] : content.querySelectorAll("form");
10960
+ for (let i = 0; i < forms.length; i++) {
10961
+ let form = forms[i];
10962
+ form.addEventListener("keydown", (event) => {
10963
+ if (event.keyCode == 27) { // Escape
10964
+ event.preventDefault();
10965
+ done(null);
10966
+ }
10967
+ else if (event.keyCode == 13) { // Enter
10968
+ event.preventDefault();
10969
+ done(form);
10970
+ }
10971
+ });
10972
+ form.addEventListener("submit", (event) => {
10973
+ event.preventDefault();
10974
+ done(form);
10975
+ });
10976
+ }
10977
+ let panel = (0,crelt/* default */.Z)("div", content, (0,crelt/* default */.Z)("button", {
10978
+ onclick: () => done(null),
10979
+ "aria-label": view.state.phrase("close"),
10980
+ class: "cm-dialog-close",
10981
+ type: "button"
10982
+ }, ["×"]));
10983
+ if (config.class)
10984
+ panel.className = config.class;
10985
+ panel.classList.add("cm-dialog");
10986
+ function done(form) {
10987
+ if (panel.contains(panel.ownerDocument.activeElement))
10988
+ view.focus();
10989
+ result(form);
10990
+ }
10991
+ return {
10992
+ dom: panel,
10993
+ top: config.top,
10994
+ mount: () => {
10995
+ if (config.focus) {
10996
+ let focus;
10997
+ if (typeof config.focus == "string")
10998
+ focus = content.querySelector(config.focus);
10999
+ else
11000
+ focus = content.querySelector("input") || content.querySelector("button");
11001
+ if (focus && "select" in focus)
11002
+ focus.select();
11003
+ else if (focus && "focus" in focus)
11004
+ focus.focus();
11005
+ }
11006
+ }
11007
+ };
11008
+ }
11009
+
10828
11010
  /**
10829
11011
  A gutter marker represents a bit of information attached to a line
10830
11012
  in a specific gutter. Your own custom markers have to extend this
@@ -10875,7 +11057,8 @@ const defaults = {
10875
11057
  lineMarkerChange: null,
10876
11058
  initialSpacer: null,
10877
11059
  updateSpacer: null,
10878
- domEventHandlers: {}
11060
+ domEventHandlers: {},
11061
+ side: "before"
10879
11062
  };
10880
11063
  const activeGutters = /*@__PURE__*/index_js_.Facet.define();
10881
11064
  /**
@@ -10883,7 +11066,7 @@ Define an editor gutter. The order in which the gutters appear is
10883
11066
  determined by their extension priority.
10884
11067
  */
10885
11068
  function gutter(config) {
10886
- return [gutters(), activeGutters.of(Object.assign(Object.assign({}, defaults), config))];
11069
+ return [gutters(), activeGutters.of({ ...defaults, ...config })];
10887
11070
  }
10888
11071
  const unfixGutters = /*@__PURE__*/index_js_.Facet.define({
10889
11072
  combine: values => values.some(x => x)
@@ -10909,15 +11092,20 @@ function gutters(config) {
10909
11092
  const gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {
10910
11093
  constructor(view) {
10911
11094
  this.view = view;
11095
+ this.domAfter = null;
10912
11096
  this.prevViewport = view.viewport;
10913
11097
  this.dom = document.createElement("div");
10914
- this.dom.className = "cm-gutters";
11098
+ this.dom.className = "cm-gutters cm-gutters-before";
10915
11099
  this.dom.setAttribute("aria-hidden", "true");
10916
11100
  this.dom.style.minHeight = (this.view.contentHeight / this.view.scaleY) + "px";
10917
11101
  this.gutters = view.state.facet(activeGutters).map(conf => new SingleGutterView(view, conf));
10918
- for (let gutter of this.gutters)
10919
- this.dom.appendChild(gutter.dom);
10920
11102
  this.fixed = !view.state.facet(unfixGutters);
11103
+ for (let gutter of this.gutters) {
11104
+ if (gutter.config.side == "after")
11105
+ this.getDOMAfter().appendChild(gutter.dom);
11106
+ else
11107
+ this.dom.appendChild(gutter.dom);
11108
+ }
10921
11109
  if (this.fixed) {
10922
11110
  // FIXME IE11 fallback, which doesn't support position: sticky,
10923
11111
  // by using position: relative + event handlers that realign the
@@ -10927,6 +11115,17 @@ const gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {
10927
11115
  this.syncGutters(false);
10928
11116
  view.scrollDOM.insertBefore(this.dom, view.contentDOM);
10929
11117
  }
11118
+ getDOMAfter() {
11119
+ if (!this.domAfter) {
11120
+ this.domAfter = document.createElement("div");
11121
+ this.domAfter.className = "cm-gutters cm-gutters-after";
11122
+ this.domAfter.setAttribute("aria-hidden", "true");
11123
+ this.domAfter.style.minHeight = (this.view.contentHeight / this.view.scaleY) + "px";
11124
+ this.domAfter.style.position = this.fixed ? "sticky" : "";
11125
+ this.view.scrollDOM.appendChild(this.domAfter);
11126
+ }
11127
+ return this.domAfter;
11128
+ }
10930
11129
  update(update) {
10931
11130
  if (this.updateGutters(update)) {
10932
11131
  // Detach during sync when the viewport changed significantly
@@ -10937,18 +11136,26 @@ const gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {
10937
11136
  this.syncGutters(vpOverlap < (vpB.to - vpB.from) * 0.8);
10938
11137
  }
10939
11138
  if (update.geometryChanged) {
10940
- this.dom.style.minHeight = (this.view.contentHeight / this.view.scaleY) + "px";
11139
+ let min = (this.view.contentHeight / this.view.scaleY) + "px";
11140
+ this.dom.style.minHeight = min;
11141
+ if (this.domAfter)
11142
+ this.domAfter.style.minHeight = min;
10941
11143
  }
10942
11144
  if (this.view.state.facet(unfixGutters) != !this.fixed) {
10943
11145
  this.fixed = !this.fixed;
10944
11146
  this.dom.style.position = this.fixed ? "sticky" : "";
11147
+ if (this.domAfter)
11148
+ this.domAfter.style.position = this.fixed ? "sticky" : "";
10945
11149
  }
10946
11150
  this.prevViewport = update.view.viewport;
10947
11151
  }
10948
11152
  syncGutters(detach) {
10949
11153
  let after = this.dom.nextSibling;
10950
- if (detach)
11154
+ if (detach) {
10951
11155
  this.dom.remove();
11156
+ if (this.domAfter)
11157
+ this.domAfter.remove();
11158
+ }
10952
11159
  let lineClasses = index_js_.RangeSet.iter(this.view.state.facet(gutterLineClass), this.view.viewport.from);
10953
11160
  let classSet = [];
10954
11161
  let contexts = this.gutters.map(gutter => new UpdateContext(gutter, this.view.viewport, -this.view.documentPadding.top));
@@ -10982,8 +11189,11 @@ const gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {
10982
11189
  }
10983
11190
  for (let cx of contexts)
10984
11191
  cx.finish();
10985
- if (detach)
11192
+ if (detach) {
10986
11193
  this.view.scrollDOM.insertBefore(this.dom, after);
11194
+ if (this.domAfter)
11195
+ this.view.scrollDOM.appendChild(this.domAfter);
11196
+ }
10987
11197
  }
10988
11198
  updateGutters(update) {
10989
11199
  let prev = update.startState.facet(activeGutters), cur = update.state.facet(activeGutters);
@@ -11012,8 +11222,12 @@ const gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {
11012
11222
  if (gutters.indexOf(g) < 0)
11013
11223
  g.destroy();
11014
11224
  }
11015
- for (let g of gutters)
11016
- this.dom.appendChild(g.dom);
11225
+ for (let g of gutters) {
11226
+ if (g.config.side == "after")
11227
+ this.getDOMAfter().appendChild(g.dom);
11228
+ else
11229
+ this.dom.appendChild(g.dom);
11230
+ }
11017
11231
  this.gutters = gutters;
11018
11232
  }
11019
11233
  return change;
@@ -11022,15 +11236,18 @@ const gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {
11022
11236
  for (let view of this.gutters)
11023
11237
  view.destroy();
11024
11238
  this.dom.remove();
11239
+ if (this.domAfter)
11240
+ this.domAfter.remove();
11025
11241
  }
11026
11242
  }, {
11027
11243
  provide: plugin => EditorView.scrollMargins.of(view => {
11028
11244
  let value = view.plugin(plugin);
11029
11245
  if (!value || value.gutters.length == 0 || !value.fixed)
11030
11246
  return null;
11247
+ let before = value.dom.offsetWidth * view.scaleX, after = value.domAfter ? value.domAfter.offsetWidth * view.scaleX : 0;
11031
11248
  return view.textDirection == Direction.LTR
11032
- ? { left: value.dom.offsetWidth * view.scaleX }
11033
- : { right: value.dom.offsetWidth * view.scaleX };
11249
+ ? { left: before, right: after }
11250
+ : { right: before, left: after };
11034
11251
  })
11035
11252
  });
11036
11253
  function asArray(val) { return (Array.isArray(val) ? val : [val]); }
@@ -11272,7 +11489,8 @@ const lineNumberGutter = /*@__PURE__*/activeGutters.compute([lineNumberConfig],
11272
11489
  let max = formatNumber(update.view, maxLineNumber(update.view.state.doc.lines));
11273
11490
  return max == spacer.number ? spacer : new NumberMarker(max);
11274
11491
  },
11275
- domEventHandlers: state.facet(lineNumberConfig).domEventHandlers
11492
+ domEventHandlers: state.facet(lineNumberConfig).domEventHandlers,
11493
+ side: "before"
11276
11494
  }));
11277
11495
  /**
11278
11496
  Create a line number gutter extension.
@@ -11344,8 +11562,7 @@ function highlightWhitespace() {
11344
11562
  }
11345
11563
  const trailingHighlighter = /*@__PURE__*/matcher(/*@__PURE__*/new MatchDecorator({
11346
11564
  regexp: /\s+$/g,
11347
- decoration: /*@__PURE__*/Decoration.mark({ class: "cm-trailingSpace" }),
11348
- boundary: /\S/,
11565
+ decoration: /*@__PURE__*/Decoration.mark({ class: "cm-trailingSpace" })
11349
11566
  }));
11350
11567
  /**
11351
11568
  Returns an extension that adds a `cm-trailingSpace` class to all
@@ -11364,6 +11581,44 @@ const __test = { HeightMap, HeightOracle, MeasuredHeights, QueryType, ChangedRan
11364
11581
 
11365
11582
 
11366
11583
 
11584
+ /***/ }),
11585
+
11586
+ /***/ 76767:
11587
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11588
+
11589
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11590
+ /* harmony export */ Z: () => (/* binding */ crelt)
11591
+ /* harmony export */ });
11592
+ function crelt() {
11593
+ var elt = arguments[0]
11594
+ if (typeof elt == "string") elt = document.createElement(elt)
11595
+ var i = 1, next = arguments[1]
11596
+ if (next && typeof next == "object" && next.nodeType == null && !Array.isArray(next)) {
11597
+ for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) {
11598
+ var value = next[name]
11599
+ if (typeof value == "string") elt.setAttribute(name, value)
11600
+ else if (value != null) elt[name] = value
11601
+ }
11602
+ i++
11603
+ }
11604
+ for (; i < arguments.length; i++) add(elt, arguments[i])
11605
+ return elt
11606
+ }
11607
+
11608
+ function add(elt, child) {
11609
+ if (typeof child == "string") {
11610
+ elt.appendChild(document.createTextNode(child))
11611
+ } else if (child == null) {
11612
+ } else if (child.nodeType != null) {
11613
+ elt.appendChild(child)
11614
+ } else if (Array.isArray(child)) {
11615
+ for (var i = 0; i < child.length; i++) add(elt, child[i])
11616
+ } else {
11617
+ throw new RangeError("Unsupported child node: " + child)
11618
+ }
11619
+ }
11620
+
11621
+
11367
11622
  /***/ }),
11368
11623
 
11369
11624
  /***/ 4434:
@@ -11549,4 +11804,4 @@ class StyleSet {
11549
11804
  /***/ })
11550
11805
 
11551
11806
  }]);
11552
- //# sourceMappingURL=2955.d8fd055f03b878034fe4.js.map?v=d8fd055f03b878034fe4
11807
+ //# sourceMappingURL=2955.199d6b7c6b5d8531cad7.js.map?v=199d6b7c6b5d8531cad7