@holoviz/panel 1.6.2 → 1.6.3-a.2

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.
Files changed (46) hide show
  1. package/dist/bundled/bootstraptemplate/bootstrap.css +4 -3
  2. package/dist/bundled/datatabulator/luxon/build/global/luxon.min.js +1 -1
  3. package/dist/bundled/datatabulator/luxon/build/global/luxon.min.js.map +1 -1
  4. package/dist/bundled/deckglplot/@deck.gl/carto@^9.0.20/dist.min.js +12 -12
  5. package/dist/bundled/deckglplot/maplibre-gl/dist/maplibre-gl.js +2 -2
  6. package/dist/bundled/deckglplot/maplibre-gl/dist/maplibre-gl.js.map +1 -1
  7. package/dist/bundled/notificationarea/panel/1.6.3-a.2/dist/bundled/font-awesome/css/all.min.css +2 -0
  8. package/dist/bundled/panel/1.6.3-a.2/dist/bundled/bootstrap5/css/bootstrap.min.css +2 -0
  9. package/dist/bundled/panel/1.6.3-a.2/dist/bundled/bootstrap5/js/bootstrap.bundle.min.js +2 -0
  10. package/dist/bundled/panel/1.6.3-a.2/dist/bundled/font-awesome/css/all.min.css +2 -0
  11. package/dist/bundled/panel/1.6.3-a.2/dist/bundled/jquery/jquery.min.js +2 -0
  12. package/dist/bundled/theme/bootstrap.css +8 -7
  13. package/dist/bundled/theme/bootstrap_dark.css +7 -5
  14. package/dist/bundled/theme/bootstrap_default.css +7 -5
  15. package/dist/bundled/theme/material.css +12 -0
  16. package/dist/css/loadingspinner.css +32 -16
  17. package/dist/css/markdown.css +1 -0
  18. package/dist/lib/models/ace.d.ts +2 -0
  19. package/dist/lib/models/ace.js +11 -5
  20. package/dist/lib/models/ace.js.map +1 -1
  21. package/dist/lib/models/anywidget_component.d.ts +3 -1
  22. package/dist/lib/models/anywidget_component.js +14 -12
  23. package/dist/lib/models/anywidget_component.js.map +1 -1
  24. package/dist/lib/models/column.d.ts +1 -0
  25. package/dist/lib/models/column.js +21 -0
  26. package/dist/lib/models/column.js.map +1 -1
  27. package/dist/lib/models/modal.d.ts +3 -2
  28. package/dist/lib/models/modal.js +9 -5
  29. package/dist/lib/models/modal.js.map +1 -1
  30. package/dist/lib/models/react_component.d.ts +3 -1
  31. package/dist/lib/models/react_component.js +213 -162
  32. package/dist/lib/models/react_component.js.map +1 -1
  33. package/dist/lib/models/reactive_esm.d.ts +4 -3
  34. package/dist/lib/models/reactive_esm.js +48 -34
  35. package/dist/lib/models/reactive_esm.js.map +1 -1
  36. package/dist/lib/styles/markdown.css.js +1 -1
  37. package/dist/panel.js +333 -236
  38. package/dist/panel.js.map +1 -1
  39. package/dist/panel.json +1 -1
  40. package/dist/panel.min.js +10 -10
  41. package/package.json +2 -2
  42. package/dist/bundled/notificationarea/panel/1.6.2/dist/bundled/font-awesome/css/all.min.css +0 -2
  43. package/dist/bundled/panel/1.6.2/dist/bundled/bootstrap5/css/bootstrap.min.css +0 -2
  44. package/dist/bundled/panel/1.6.2/dist/bundled/bootstrap5/js/bootstrap.bundle.min.js +0 -2
  45. package/dist/bundled/panel/1.6.2/dist/bundled/font-awesome/css/all.min.css +0 -2
  46. package/dist/bundled/panel/1.6.2/dist/bundled/jquery/jquery.min.js +0 -2
package/dist/panel.js CHANGED
@@ -54,9 +54,9 @@
54
54
  __esModule();
55
55
  exports.VizzuChart = exports.VideoStream = exports.Video = exports.VegaPlot = exports.TrendIndicator = exports.TooltipIcon = exports.ToggleIcon = void 0;
56
56
  const tslib_1 = require("tslib");
57
- var ace_1 = require("4ccbc5a371") /* ./ace */;
57
+ var ace_1 = require("04c3c73615") /* ./ace */;
58
58
  __esExport("AcePlot", ace_1.AcePlot);
59
- var anywidget_component_1 = require("3df8113309") /* ./anywidget_component */;
59
+ var anywidget_component_1 = require("1f663ffe94") /* ./anywidget_component */;
60
60
  __esExport("AnyWidgetComponent", anywidget_component_1.AnyWidgetComponent);
61
61
  var audio_1 = require("fd59c985b3") /* ./audio */;
62
62
  __esExport("Audio", audio_1.Audio);
@@ -74,7 +74,7 @@
74
74
  __esExport("CheckboxButtonGroup", checkbox_button_group_1.CheckboxButtonGroup);
75
75
  var chatarea_input_1 = require("27a077673d") /* ./chatarea_input */;
76
76
  __esExport("ChatAreaInput", chatarea_input_1.ChatAreaInput);
77
- var column_1 = require("42f54ab82e") /* ./column */;
77
+ var column_1 = require("975c86e1d3") /* ./column */;
78
78
  __esExport("Column", column_1.Column);
79
79
  var comm_manager_1 = require("3ec0e8eb36") /* ./comm_manager */;
80
80
  __esExport("CommManager", comm_manager_1.CommManager);
@@ -114,7 +114,7 @@
114
114
  __esExport("Location", location_1.Location);
115
115
  var mathjax_1 = require("d889a68424") /* ./mathjax */;
116
116
  __esExport("MathJax", mathjax_1.MathJax);
117
- var modal_1 = require("c7aa6cc7c5") /* ./modal */;
117
+ var modal_1 = require("90f76e3d2e") /* ./modal */;
118
118
  __esExport("Modal", modal_1.Modal);
119
119
  var pdf_1 = require("f87ad1873c") /* ./pdf */;
120
120
  __esExport("PDF", pdf_1.PDF);
@@ -130,11 +130,11 @@
130
130
  __esExport("QuillInput", quill_1.QuillInput);
131
131
  var radio_button_group_1 = require("25e2d7c208") /* ./radio_button_group */;
132
132
  __esExport("RadioButtonGroup", radio_button_group_1.RadioButtonGroup);
133
- var react_component_1 = require("134ad3d91a") /* ./react_component */;
133
+ var react_component_1 = require("6ad133a76d") /* ./react_component */;
134
134
  __esExport("ReactComponent", react_component_1.ReactComponent);
135
135
  var reactive_html_1 = require("d5752cda5a") /* ./reactive_html */;
136
136
  __esExport("ReactiveHTML", reactive_html_1.ReactiveHTML);
137
- var reactive_esm_1 = require("7ce3127e65") /* ./reactive_esm */;
137
+ var reactive_esm_1 = require("0b75212524") /* ./reactive_esm */;
138
138
  __esExport("ReactiveESM", reactive_esm_1.ReactiveESM);
139
139
  var singleselect_1 = require("4155401209") /* ./singleselect */;
140
140
  __esExport("SingleSelect", singleselect_1.SingleSelect);
@@ -170,7 +170,7 @@
170
170
  __esExport("VizzuChart", vizzu_1.VizzuChart);
171
171
  tslib_1.__exportStar(require("c51f25e2a7") /* ./vtk */, exports);
172
172
  },
173
- "4ccbc5a371": /* models/ace.js */ function _(require, module, exports, __esModule, __esExport) {
173
+ "04c3c73615": /* models/ace.js */ function _(require, module, exports, __esModule, __esExport) {
174
174
  var _a;
175
175
  __esModule();
176
176
  const dom_1 = require("@bokehjs/core/dom");
@@ -179,13 +179,15 @@
179
179
  class AcePlotView extends layout_1.HTMLBoxView {
180
180
  connect_signals() {
181
181
  super.connect_signals();
182
- const { code, theme, language, filename, print_margin, annotations, readonly } = this.model.properties;
182
+ const { code, theme, language, filename, print_margin, annotations, soft_tabs, indent, readonly } = this.model.properties;
183
183
  this.on_change(code, () => this._update_code_from_model());
184
184
  this.on_change(theme, () => this._update_theme());
185
185
  this.on_change(language, () => this._update_language());
186
186
  this.on_change(filename, () => this._update_filename());
187
187
  this.on_change(print_margin, () => this._update_print_margin());
188
188
  this.on_change(annotations, () => this._add_annotations());
189
+ this.on_change(indent, () => this._editor.setOptions({ tabSize: this.model.indent }));
190
+ this.on_change(soft_tabs, () => this._editor.setOptions({ useSoftTabs: this.model.indent }));
189
191
  this.on_change(readonly, () => {
190
192
  this._editor.setReadOnly(this.model.readonly);
191
193
  });
@@ -208,6 +210,8 @@
208
210
  this._modelist = ace.require("ace/ext/modelist");
209
211
  this._editor.setOptions({
210
212
  enableBasicAutocompletion: true,
213
+ tabSize: this.model.indent,
214
+ useSoftTabs: this.model.soft_tabs,
211
215
  enableSnippets: true,
212
216
  fontFamily: "monospace", //hack for cursor position
213
217
  });
@@ -287,16 +291,18 @@
287
291
  AcePlot.__module__ = "panel.models.ace";
288
292
  (() => {
289
293
  _a.prototype.default_view = AcePlotView;
290
- _a.define(({ Any, List, Bool, Str, Nullable }) => ({
294
+ _a.define(({ Any, Bool, Int, List, Str, Nullable }) => ({
295
+ annotations: [List(Any), []],
291
296
  code: [Str, ""],
292
297
  code_input: [Str, ""],
293
- on_keyup: [Bool, true],
294
298
  filename: [Nullable(Str), null],
299
+ indent: [Int, 4],
295
300
  language: [Str, ""],
301
+ on_keyup: [Bool, true],
302
+ print_margin: [Bool, false],
296
303
  theme: [Str, "chrome"],
297
- annotations: [List(Any), []],
298
304
  readonly: [Bool, false],
299
- print_margin: [Bool, false],
305
+ soft_tabs: [Bool, false],
300
306
  }));
301
307
  _a.override({
302
308
  height: 300,
@@ -696,10 +702,10 @@
696
702
  scheduled();
697
703
  }
698
704
  },
699
- "3df8113309": /* models/anywidget_component.js */ function _(require, module, exports, __esModule, __esExport) {
705
+ "1f663ffe94": /* models/anywidget_component.js */ function _(require, module, exports, __esModule, __esExport) {
700
706
  var _a;
701
707
  __esModule();
702
- const reactive_esm_1 = require("7ce3127e65") /* ./reactive_esm */;
708
+ const reactive_esm_1 = require("0b75212524") /* ./reactive_esm */;
703
709
  class AnyWidgetModelAdapter {
704
710
  constructor(model) {
705
711
  this.view = null;
@@ -823,11 +829,24 @@
823
829
  this.destroyer.then((d) => d({ model: this.adapter, el: this.container }));
824
830
  }
825
831
  }
832
+ after_rendered() {
833
+ this.render_children();
834
+ this._rendered = true;
835
+ }
836
+ }
837
+ exports.AnyWidgetComponentView = AnyWidgetComponentView;
838
+ AnyWidgetComponentView.__name__ = "AnyWidgetComponentView";
839
+ class AnyWidgetComponent extends reactive_esm_1.ReactiveESM {
840
+ constructor(attrs) {
841
+ super(attrs);
842
+ this.sucrase_transforms = ["typescript", "jsx"];
843
+ }
826
844
  _render_code() {
827
845
  return `
828
- const view = Bokeh.index.find_one_by_id('${this.model.id}')
846
+ function render(id) {
847
+ const view = Bokeh.index.find_one_by_id(id)
848
+ if (!view) { return }
829
849
 
830
- function render() {
831
850
  const out = Promise.resolve(view.render_fn({
832
851
  view, model: view.adapter, data: view.model.data, el: view.container
833
852
  }) || null)
@@ -837,17 +856,6 @@ function render() {
837
856
 
838
857
  export default {render}`;
839
858
  }
840
- after_rendered() {
841
- this.render_children();
842
- this._rendered = true;
843
- }
844
- }
845
- exports.AnyWidgetComponentView = AnyWidgetComponentView;
846
- AnyWidgetComponentView.__name__ = "AnyWidgetComponentView";
847
- class AnyWidgetComponent extends reactive_esm_1.ReactiveESM {
848
- constructor(attrs) {
849
- super(attrs);
850
- }
851
859
  _run_initializer(initialize) {
852
860
  const props = { model: new AnyWidgetModelAdapter(this) };
853
861
  initialize(props);
@@ -861,7 +869,7 @@ export default {render}`;
861
869
  _a.prototype.default_view = AnyWidgetComponentView;
862
870
  })();
863
871
  },
864
- "7ce3127e65": /* models/reactive_esm.js */ function _(require, module, exports, __esModule, __esExport) {
872
+ "0b75212524": /* models/reactive_esm.js */ function _(require, module, exports, __esModule, __esExport) {
865
873
  var _a, _b, _c;
866
874
  __esModule();
867
875
  exports.model_getter = model_getter;
@@ -1052,7 +1060,6 @@ export default {render}`;
1052
1060
  this.accessed_properties = [];
1053
1061
  this.accessed_children = [];
1054
1062
  this.compiled_module = null;
1055
- this.render_module = null;
1056
1063
  this._changing = false;
1057
1064
  this._child_rendered = new Map();
1058
1065
  this._event_handlers = [];
@@ -1076,15 +1083,6 @@ export default {render}`;
1076
1083
  set: model_setter,
1077
1084
  });
1078
1085
  }
1079
- init_module() {
1080
- if (this.model.compile_error) {
1081
- return;
1082
- }
1083
- const code = this._render_code();
1084
- const render_url = URL.createObjectURL(new Blob([code], { type: "text/javascript" }));
1085
- // @ts-ignore
1086
- this.render_module = importShim(render_url);
1087
- }
1088
1086
  async lazy_initialize() {
1089
1087
  await super.lazy_initialize();
1090
1088
  this.compiled_module = await this.model.compiled_module;
@@ -1210,30 +1208,12 @@ export default {render}`;
1210
1208
  this.render_error(this.model.compile_error);
1211
1209
  }
1212
1210
  else {
1213
- if (this.render_module == null) {
1214
- this.init_module();
1215
- }
1216
1211
  this.render_esm();
1217
1212
  }
1218
- }
1219
- _render_code() {
1220
- return `
1221
- const view = Bokeh.index.find_one_by_id('${this.model.id}')
1222
-
1223
- function render() {
1224
- const output = view.render_fn({
1225
- view: view, model: view.model_proxy, data: view.model.data, el: view.container
1226
- })
1227
-
1228
- Promise.resolve(output).then((out) => {
1229
- if (out instanceof Element) {
1230
- view.container.replaceChildren(out)
1231
- }
1232
- view.after_rendered()
1233
- })
1234
- }
1235
-
1236
- export default {render}`;
1213
+ for (const element_view of this.element_views) {
1214
+ const target = element_view.rendering_target() ?? this.self_target;
1215
+ element_view.render_to(target);
1216
+ }
1237
1217
  }
1238
1218
  after_rendered() {
1239
1219
  const handlers = (this._lifecycle_handlers.get("after_render") || []);
@@ -1250,7 +1230,7 @@ export default {render}`;
1250
1230
  this._rendered = true;
1251
1231
  }
1252
1232
  render_esm() {
1253
- if (this.model.compiled === null || this.render_module === null) {
1233
+ if (this.model.compiled === null || this.model.render_module === null) {
1254
1234
  return;
1255
1235
  }
1256
1236
  this.accessed_properties = [];
@@ -1258,7 +1238,7 @@ export default {render}`;
1258
1238
  (this._lifecycle_handlers.get(lf) || []).splice(0);
1259
1239
  }
1260
1240
  this.model.disconnect_watchers(this);
1261
- this.render_module.then((mod) => mod.default.render());
1241
+ this.model.render_module.then((mod) => mod.default.render(this.model.id));
1262
1242
  }
1263
1243
  render_children() {
1264
1244
  for (const child of this.model.children) {
@@ -1385,6 +1365,7 @@ export default {render}`;
1385
1365
  this.compiled = null;
1386
1366
  this.compiled_module = null;
1387
1367
  this.compile_error = null;
1368
+ this.render_module = null;
1388
1369
  this.sucrase_transforms = ["typescript"];
1389
1370
  this._destroyer = null;
1390
1371
  this._esm_watchers = {};
@@ -1519,6 +1500,46 @@ export default {render}`;
1519
1500
  this._destroyer(this.model_proxy);
1520
1501
  }
1521
1502
  }
1503
+ init_module() {
1504
+ if (this.compile_error) {
1505
+ return;
1506
+ }
1507
+ else if (MODULE_CACHE.has(this._render_cache_key)) {
1508
+ this.render_module = MODULE_CACHE.get(this._render_cache_key);
1509
+ }
1510
+ else {
1511
+ const code = this._render_code();
1512
+ const render_url = URL.createObjectURL(new Blob([code], { type: "text/javascript" }));
1513
+ // @ts-ignore
1514
+ this.render_module = importShim(render_url);
1515
+ MODULE_CACHE.set(this.data.type, this.render_module);
1516
+ }
1517
+ }
1518
+ _render_code() {
1519
+ return `
1520
+ function render(id) {
1521
+ const view = Bokeh.index.find_one_by_id(id)
1522
+ if (view == null) {
1523
+ return null
1524
+ }
1525
+
1526
+ const output = view.render_fn({
1527
+ view: view, model: view.model_proxy, data: view.model.data, el: view.container
1528
+ })
1529
+
1530
+ Promise.resolve(output).then((out) => {
1531
+ if (out instanceof Element) {
1532
+ view.container.replaceChildren(out)
1533
+ }
1534
+ view.after_rendered()
1535
+ })
1536
+ }
1537
+
1538
+ export default {render}`;
1539
+ }
1540
+ get _render_cache_key() {
1541
+ return "reactive_esm";
1542
+ }
1522
1543
  compile() {
1523
1544
  if (this.bundle != null) {
1524
1545
  return this.esm;
@@ -1593,6 +1614,7 @@ export default {render}`;
1593
1614
  if (initialize) {
1594
1615
  this._run_initializer(initialize);
1595
1616
  }
1617
+ this.init_module();
1596
1618
  return mod;
1597
1619
  }
1598
1620
  catch (e) {
@@ -18629,7 +18651,7 @@ ${namesToRegister
18629
18651
  __esModule();
18630
18652
  const tslib_1 = require("tslib");
18631
18653
  const DOM = tslib_1.__importStar(require("@bokehjs/core/dom"));
18632
- const column_1 = require("42f54ab82e") /* ./column */;
18654
+ const column_1 = require("975c86e1d3") /* ./column */;
18633
18655
  const card_css_1 = tslib_1.__importDefault(require("edc7ee0090") /* ../styles/models/card.css */);
18634
18656
  const CHEVRON_RIGHT = `
18635
18657
  <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-chevron-right"><path stroke="none" d="M0 0h12v12H0z" fill="none"/><path d="M9 6l6 6l-6 6" /></svg>
@@ -18788,7 +18810,7 @@ ${namesToRegister
18788
18810
  }));
18789
18811
  })();
18790
18812
  },
18791
- "42f54ab82e": /* models/column.js */ function _(require, module, exports, __esModule, __esExport) {
18813
+ "975c86e1d3": /* models/column.js */ function _(require, module, exports, __esModule, __esExport) {
18792
18814
  var _a, _b, _c;
18793
18815
  __esModule();
18794
18816
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -18932,6 +18954,27 @@ ${namesToRegister
18932
18954
  this.model.trigger_event(new ScrollButtonClick());
18933
18955
  });
18934
18956
  }
18957
+ async update_children() {
18958
+ // Can be removed after https://github.com/bokeh/bokeh/pull/14459 is released
18959
+ const created = await this.build_child_views();
18960
+ const created_children = new Set(created);
18961
+ // Since appending to a DOM node will move the node to the end if it has
18962
+ // already been added appending all the children in order will result in
18963
+ // correct ordering
18964
+ for (const child_view of this.child_views) {
18965
+ const is_new = created_children.has(child_view);
18966
+ const target = child_view.rendering_target() ?? this.shadow_el;
18967
+ if (is_new) {
18968
+ child_view.render_to(target);
18969
+ }
18970
+ else {
18971
+ target.append(child_view.el);
18972
+ }
18973
+ }
18974
+ this.r_after_render();
18975
+ this._update_children();
18976
+ this.invalidate_layout();
18977
+ }
18935
18978
  after_render() {
18936
18979
  super.after_render();
18937
18980
  requestAnimationFrame(() => {
@@ -26115,7 +26158,7 @@ ${namesToRegister
26115
26158
  return c > 3 && r && Object.defineProperty(target, key, r), r;
26116
26159
  };
26117
26160
  var ScrollLatestEvent_1;
26118
- const column_1 = require("42f54ab82e") /* ./column */;
26161
+ const column_1 = require("975c86e1d3") /* ./column */;
26119
26162
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
26120
26163
  const build_views_1 = require("@bokehjs/core/build_views");
26121
26164
  const column_2 = require("@bokehjs/models/layouts/column");
@@ -27220,7 +27263,7 @@ ${namesToRegister
27220
27263
  _a.prototype.default_view = MathJaxView;
27221
27264
  })();
27222
27265
  },
27223
- "c7aa6cc7c5": /* models/modal.js */ function _(require, module, exports, __esModule, __esExport) {
27266
+ "90f76e3d2e": /* models/modal.js */ function _(require, module, exports, __esModule, __esExport) {
27224
27267
  var _a, _b;
27225
27268
  __esModule();
27226
27269
  const tslib_1 = require("tslib");
@@ -27243,16 +27286,19 @@ ${namesToRegister
27243
27286
  const layout_dom_1 = require("@bokehjs/models/layouts/layout_dom");
27244
27287
  const modal_css_1 = tslib_1.__importDefault(require("be4b4352c6") /* ../styles/models/modal.css */);
27245
27288
  let ModalDialogEvent = (_a = class ModalDialogEvent extends bokeh_events_1.ModelEvent {
27246
- constructor(open) {
27289
+ constructor(model, open) {
27247
27290
  super();
27291
+ this.model = model;
27248
27292
  this.open = open;
27293
+ this.open = open;
27294
+ this.origin = model;
27249
27295
  }
27250
27296
  get event_values() {
27251
- return { open: this.open };
27297
+ return { open: this.open, origin: this.origin };
27252
27298
  }
27253
27299
  static from_values(values) {
27254
- const { open } = values;
27255
- return new ModalDialogEvent_1(open);
27300
+ const { open, model } = values;
27301
+ return new ModalDialogEvent_1(model, open);
27256
27302
  }
27257
27303
  },
27258
27304
  (() => {
@@ -28571,10 +28617,10 @@ ${namesToRegister
28571
28617
  }));
28572
28618
  })();
28573
28619
  },
28574
- "134ad3d91a": /* models/react_component.js */ function _(require, module, exports, __esModule, __esExport) {
28620
+ "6ad133a76d": /* models/react_component.js */ function _(require, module, exports, __esModule, __esExport) {
28575
28621
  var _a;
28576
28622
  __esModule();
28577
- const reactive_esm_1 = require("7ce3127e65") /* ./reactive_esm */;
28623
+ const reactive_esm_1 = require("0b75212524") /* ./reactive_esm */;
28578
28624
  class ReactComponentView extends reactive_esm_1.ReactiveESMView {
28579
28625
  constructor() {
28580
28626
  super(...arguments);
@@ -28583,7 +28629,7 @@ ${namesToRegister
28583
28629
  this._force_update_callbacks = [];
28584
28630
  }
28585
28631
  render_esm() {
28586
- if (this.model.compiled === null || this.render_module === null) {
28632
+ if (this.model.compiled === null || this.model.render_module === null) {
28587
28633
  return;
28588
28634
  }
28589
28635
  if (this.model.usesMui) {
@@ -28600,8 +28646,8 @@ ${namesToRegister
28600
28646
  (this._lifecycle_handlers.get(lf) || []).splice(0);
28601
28647
  }
28602
28648
  this.model.disconnect_watchers(this);
28603
- this.render_module.then((mod) => {
28604
- this.react_root = mod.default.render();
28649
+ this.model.render_module.then((mod) => {
28650
+ this.react_root = mod.default.render(this.model.id);
28605
28651
  });
28606
28652
  }
28607
28653
  on_force_update(cb) {
@@ -28616,16 +28662,51 @@ ${namesToRegister
28616
28662
  super.remove();
28617
28663
  this._force_update_callbacks = [];
28618
28664
  if (this.react_root) {
28619
- this.react_root.unmount();
28665
+ this.react_root.then((root) => root.unmount());
28620
28666
  }
28621
28667
  }
28622
28668
  render() {
28623
28669
  if (this.react_root) {
28624
- this.react_root.unmount();
28670
+ this.react_root.then((root) => root.unmount());
28625
28671
  }
28626
28672
  this._force_update_callbacks = [];
28627
28673
  super.render();
28628
28674
  }
28675
+ async update_children() {
28676
+ const created_children = new Set(await this.build_child_views());
28677
+ const all_views = this.child_views;
28678
+ const new_views = new Map();
28679
+ for (const child_view of this.child_views) {
28680
+ if (!created_children.has(child_view)) {
28681
+ continue;
28682
+ }
28683
+ const child = this._lookup_child(child_view);
28684
+ if (!child) {
28685
+ continue;
28686
+ }
28687
+ if (new_views.has(child)) {
28688
+ new_views.get(child).push(child_view);
28689
+ }
28690
+ else {
28691
+ new_views.set(child, [child_view]);
28692
+ }
28693
+ }
28694
+ for (const view of this._child_rendered.keys()) {
28695
+ if (!all_views.includes(view)) {
28696
+ this._child_rendered.delete(view);
28697
+ view.el.remove();
28698
+ }
28699
+ }
28700
+ for (const child of this.model.children) {
28701
+ const callbacks = this._child_callbacks.get(child) || [];
28702
+ const new_children = new_views.get(child) || [];
28703
+ for (const callback of callbacks) {
28704
+ callback(new_children);
28705
+ }
28706
+ }
28707
+ this._update_children();
28708
+ this.invalidate_layout();
28709
+ }
28629
28710
  after_rendered() {
28630
28711
  const handlers = (this._lifecycle_handlers.get("after_render") || []);
28631
28712
  for (const cb of handlers) {
@@ -28638,13 +28719,27 @@ ${namesToRegister
28638
28719
  }
28639
28720
  this._rendered = true;
28640
28721
  }
28722
+ }
28723
+ exports.ReactComponentView = ReactComponentView;
28724
+ ReactComponentView.__name__ = "ReactComponentView";
28725
+ class ReactComponent extends reactive_esm_1.ReactiveESM {
28726
+ constructor(attrs) {
28727
+ super(attrs);
28728
+ this.sucrase_transforms = ["typescript", "jsx"];
28729
+ }
28730
+ get usesMui() {
28731
+ if (this.importmap?.imports) {
28732
+ return Object.keys(this.importmap?.imports).some(k => k.startsWith("@mui"));
28733
+ }
28734
+ return false;
28735
+ }
28641
28736
  _render_code() {
28642
- let import_code;
28643
- const cache_key = (this.model.bundle === "url") ? this.model.esm : (this.model.bundle || `${this.model.class_name}-${this.model.esm.length}`);
28644
- if (this.model.bundle) {
28645
- import_code = `
28646
- const ns = await view._module_cache.get("${cache_key}")
28647
- const {React, createRoot} = ns.default`;
28737
+ let [import_code, bundle_code] = ["", ""];
28738
+ const cache_key = (this.bundle === "url") ? this.esm : (this.bundle || `${this.class_name}-${this.esm.length}`);
28739
+ if (this.bundle) {
28740
+ bundle_code = `
28741
+ const ns = await view._module_cache.get("${cache_key}")
28742
+ const {React, createRoot} = ns.default`;
28648
28743
  }
28649
28744
  else {
28650
28745
  import_code = `
@@ -28653,11 +28748,11 @@ import { createRoot } from "react-dom/client"`;
28653
28748
  }
28654
28749
  let init_code = "";
28655
28750
  let render_code = "";
28656
- if (this.model.usesMui) {
28657
- if (this.model.bundle) {
28658
- import_code = `
28659
- const ns = await view._module_cache.get("${cache_key}")
28660
- const {CacheProvider, React, createCache, createRoot} = ns.default`;
28751
+ if (this.usesMui) {
28752
+ if (this.bundle) {
28753
+ bundle_code = `
28754
+ const ns = await view._module_cache.get("${cache_key}")
28755
+ const {CacheProvider, React, createCache, createRoot} = ns.default`;
28661
28756
  }
28662
28757
  else {
28663
28758
  import_code = `
@@ -28665,150 +28760,163 @@ ${import_code}
28665
28760
  import createCache from "@emotion/cache"
28666
28761
  import { CacheProvider } from "@emotion/react"`;
28667
28762
  }
28668
- const css_key = this.model.id.replace("-", "").replace(/\d/g, (digit) => String.fromCharCode(digit.charCodeAt(0) + 49)).toLowerCase();
28669
28763
  init_code = `
28670
- this.mui_cache = createCache({
28671
- key: 'css-${css_key}',
28672
- prepend: true,
28673
- container: view.style_cache,
28674
- })`;
28764
+ const css_key = id.replace("-", "").replace(/\d/g, (digit) => String.fromCharCode(digit.charCodeAt(0) + 49)).toLowerCase()
28765
+ this.mui_cache = createCache({
28766
+ key: 'css-'+css_key,
28767
+ prepend: true,
28768
+ container: view.style_cache,
28769
+ })`;
28675
28770
  render_code = `
28676
28771
  if (rendered) {
28677
28772
  rendered = React.createElement(CacheProvider, {value: this.mui_cache}, rendered)
28678
28773
  }`;
28679
28774
  }
28680
28775
  return `
28681
- const view = Bokeh.index.find_one_by_id('${this.model.id}')
28682
-
28683
28776
  ${import_code}
28684
28777
 
28685
- class Child extends React.PureComponent {
28686
-
28687
- constructor(props) {
28688
- super(props)
28689
- this.render_callback = null
28778
+ async function render(id) {
28779
+ const view = Bokeh.index.find_one_by_id(id)
28780
+ if (view == null) {
28781
+ return null
28690
28782
  }
28691
28783
 
28692
- get view() {
28693
- const child = this.props.parent.model.data[this.props.name]
28694
- const model = this.props.index == null ? child : child[this.props.index]
28695
- return this.props.parent.get_child_view(model)
28696
- }
28784
+ ${bundle_code}
28697
28785
 
28698
- get element() {
28699
- const view = this.view
28700
- return view == null ? null : view.el
28701
- }
28786
+ class Child extends React.PureComponent {
28702
28787
 
28703
- componentDidMount() {
28704
- this.props.parent.rerender_(this.view)
28705
- this.render_callback = (new_views) => {
28706
- const view = this.view
28707
- if (!view) {
28708
- return
28709
- } else if (new_views.includes(view)) {
28710
- if (this.props.id === undefined) { this.forceUpdate() }
28711
- this.props.parent.rerender_(view)
28712
- } else {
28713
- this.forceUpdate()
28714
- if (view.force_update) { view.force_update() }
28788
+ constructor(props) {
28789
+ super(props)
28790
+ this.render_callback = null
28791
+ this.containerRef = React.createRef()
28792
+ }
28793
+
28794
+ updateElement() {
28795
+ const childView = this.view
28796
+ const el = childView?.el
28797
+ if (el && this.containerRef.current && !this.containerRef.current.contains(el)) {
28798
+ this.containerRef.current.innerHTML = ""
28799
+ this.containerRef.current.appendChild(el)
28715
28800
  }
28716
28801
  }
28717
- this.props.parent.on_child_render(this.props.name, this.render_callback)
28718
- this.props.parent.notify_mount(this.props.name, this.view.model.id)
28719
- }
28720
28802
 
28721
- componentWillUnmount() {
28722
- if (this.render_callback) {
28723
- this.props.parent.remove_on_child_render(this.props.name, this.render_callback)
28803
+ get view() {
28804
+ const child = this.props.parent.model.data[this.props.name]
28805
+ const model = this.props.id == null ? child : child.find(item => item.id === this.props.id)
28806
+ return this.props.parent.get_child_view(model)
28724
28807
  }
28725
- }
28726
28808
 
28727
- render() {
28728
- return React.createElement('div', {
28729
- className: "child-wrapper",
28730
- ref: (ref) => {
28731
- if (ref != null && this.view != null) {
28732
- ref.appendChild(this.element)
28809
+ get element() {
28810
+ const view = this.view
28811
+ return view == null ? null : view.el
28812
+ }
28813
+
28814
+ componentDidMount() {
28815
+ const view = this.view
28816
+ if (view == null) { return }
28817
+ this.updateElement()
28818
+ this.props.parent.rerender_(view)
28819
+ this.render_callback = (new_views) => {
28820
+ const view = this.view
28821
+ if (!view) {
28822
+ return
28823
+ }
28824
+ this.updateElement()
28825
+ if (new_views.includes(view)) {
28826
+ this.props.parent.rerender_(view)
28733
28827
  }
28734
28828
  }
28735
- })
28829
+ this.props.parent.on_child_render(this.props.name, this.render_callback)
28830
+ this.props.parent.notify_mount(this.props.name, view.model.id)
28831
+ }
28832
+
28833
+ componentWillUnmount() {
28834
+ if (this.render_callback) {
28835
+ this.props.parent.remove_on_child_render(this.props.name, this.render_callback)
28836
+ }
28837
+ }
28838
+
28839
+ componentDidUpdate() {
28840
+ this.updateElement()
28841
+ }
28842
+
28843
+ render() {
28844
+ return React.createElement('div', {className: "child-wrapper", ref: this.containerRef})
28845
+ }
28736
28846
  }
28737
- }
28738
28847
 
28739
- function react_getter(target, name) {
28740
- if (name === "useMount") {
28741
- return (callback) => React.useEffect(() => {
28742
- target.model_proxy.on('lifecycle:mounted', callback)
28743
- return () => target.model_proxy.off('lifecycle:mounted', callback)
28744
- }, [])
28745
- } if (name == "useState") {
28746
- return (prop) => {
28747
- const data_model = target.model.data
28748
- const propPath = prop.split(".")
28749
- let targetModel = data_model
28750
- let resolvedProp = null
28848
+ function react_getter(target, name) {
28849
+ if (name === "useMount") {
28850
+ return (callback) => React.useEffect(() => {
28851
+ target.model_proxy.on('lifecycle:mounted', callback)
28852
+ return () => target.model_proxy.off('lifecycle:mounted', callback)
28853
+ }, [])
28854
+ } if (name == "useState") {
28855
+ return (prop) => {
28856
+ const data_model = target.model.data
28857
+ const propPath = prop.split(".")
28858
+ let targetModel = data_model
28859
+ let resolvedProp = null
28751
28860
 
28752
- for (let i = 0; i < propPath.length - 1; i++) {
28753
- if (targetModel && targetModel.properties && propPath[i] in targetModel.properties) {
28754
- targetModel = targetModel[propPath[i]]
28755
- } else {
28756
- // Stop if any part of the path is missing
28757
- targetModel = null
28758
- break
28861
+ for (let i = 0; i < propPath.length - 1; i++) {
28862
+ if (targetModel && targetModel.properties && propPath[i] in targetModel.properties) {
28863
+ targetModel = targetModel[propPath[i]]
28864
+ } else {
28865
+ // Stop if any part of the path is missing
28866
+ targetModel = null
28867
+ break
28868
+ }
28759
28869
  }
28760
- }
28761
- if (targetModel && targetModel.attributes && propPath[propPath.length - 1] in targetModel.attributes) {
28762
- resolvedProp = propPath[propPath.length - 1]
28763
- }
28764
- if (resolvedProp && targetModel) {
28765
- const [value, setValue] = React.useState(targetModel.attributes[resolvedProp])
28870
+ if (targetModel && targetModel.attributes && propPath[propPath.length - 1] in targetModel.attributes) {
28871
+ resolvedProp = propPath[propPath.length - 1]
28872
+ }
28873
+ if (resolvedProp && targetModel) {
28874
+ const [value, setValue] = React.useState(targetModel.attributes[resolvedProp])
28766
28875
 
28767
- react_proxy.on(prop, () => setValue(targetModel.attributes[resolvedProp]))
28876
+ react_proxy.on(prop, () => setValue(targetModel.attributes[resolvedProp]))
28768
28877
 
28769
- React.useEffect(() => {
28770
- targetModel.setv({ [resolvedProp]: value })
28771
- }, [value])
28878
+ React.useEffect(() => {
28879
+ targetModel.setv({ [resolvedProp]: value })
28880
+ }, [value])
28772
28881
 
28773
- return [value, setValue]
28882
+ return [value, setValue]
28883
+ }
28884
+ throw ReferenceError("Could not resolve " + prop + " on " + target.model.class_name)
28774
28885
  }
28775
- throw ReferenceError("Could not resolve " + prop + " on " + target.model.class_name)
28776
- }
28777
- } else if (name === "get_child") {
28778
- return (child) => {
28779
- const data_model = target.model.data
28780
- const value = data_model.attributes[child]
28781
- if (Array.isArray(value)) {
28782
- const [children_state, set_children] = React.useState(value.map((model, i) =>
28783
- React.createElement(Child, { parent: target, name: child, key: child+i, index: i })
28784
- ))
28785
- React.useEffect(() => {
28786
- target.on_child_render(child, () => {
28787
- const current_models = data_model.attributes[child]
28788
- const previous_models = children_state.map(child => child.props.index)
28789
- if (current_models.length !== previous_models.length ||
28790
- current_models.some((model, i) => i !== previous_models[i])) {
28791
- set_children(current_models.map((model, i) => (
28792
- React.createElement(Child, { parent: target, name: child, key: child+i, index: i })
28793
- )))
28794
- }
28795
- })
28796
- }, [])
28797
- return children_state
28798
- } else {
28799
- return React.createElement(Child, {parent: target, name: child})
28886
+ } else if (name === "get_child") {
28887
+ return (child) => {
28888
+ const data_model = target.model.data
28889
+ const value = data_model.attributes[child]
28890
+ if (Array.isArray(value)) {
28891
+ const [children_state, set_children] = React.useState(value.map((model) =>
28892
+ React.createElement(Child, { parent: target, name: child, key: model.id, id: model.id })
28893
+ ))
28894
+ React.useEffect(() => {
28895
+ target.on_child_render(child, () => {
28896
+ const current_models = data_model.attributes[child]
28897
+ const previous_models = children_state.map(child => child.props.index)
28898
+ if (current_models.some((model, i) => model.id !== previous_models[i])) {
28899
+ set_children(current_models.map((model, i) => (
28900
+ React.createElement(Child, { parent: target, name: child, key: model.id, id: model.id })
28901
+ )))
28902
+ }
28903
+ })
28904
+ }, [])
28905
+ return children_state
28906
+ } else {
28907
+ return React.createElement(Child, {parent: target, name: child})
28908
+ }
28800
28909
  }
28801
28910
  }
28911
+ return target.model_getter(target, name)
28802
28912
  }
28803
- return target.model_getter(target, name)
28804
- }
28805
28913
 
28806
- const react_proxy = new Proxy(view, {
28807
- get: react_getter,
28808
- set: view.model_setter
28809
- })
28914
+ const react_proxy = new Proxy(view, {
28915
+ get: react_getter,
28916
+ set: view.model_setter
28917
+ })
28810
28918
 
28811
- class ErrorBoundary extends React.Component {
28919
+ class ErrorBoundary extends React.Component {
28812
28920
  constructor(props) {
28813
28921
  super(props)
28814
28922
  // initialize the error state
@@ -28830,35 +28938,34 @@ class ErrorBoundary extends React.Component {
28830
28938
  }
28831
28939
  return React.createElement('div', {className: "error-wrapper"}, this.props.children)
28832
28940
  }
28833
- }
28834
-
28835
- class Component extends React.Component {
28836
-
28837
- constructor(props) {
28838
- super(props)
28839
- ${init_code}
28840
28941
  }
28841
28942
 
28842
- componentDidMount() {
28843
- this.props.view.on_force_update(() => {
28943
+ class Component extends React.Component {
28944
+
28945
+ constructor(props) {
28946
+ super(props)
28844
28947
  ${init_code}
28845
- this.forceUpdate()
28846
- })
28847
- this.props.view._changing = false
28848
- this.props.view.after_rendered()
28849
- }
28948
+ }
28850
28949
 
28851
- render() {
28852
- let rendered = React.createElement(this.props.view.render_fn, this.props)
28853
- if (this.props.view.model.dev) {
28854
- rendered = React.createElement(ErrorBoundary, {view}, rendered)
28950
+ componentDidMount() {
28951
+ this.props.view.on_force_update(() => {
28952
+ ${init_code}
28953
+ this.forceUpdate()
28954
+ })
28955
+ this.props.view._changing = false
28956
+ this.props.view.after_rendered()
28957
+ }
28958
+
28959
+ render() {
28960
+ let rendered = React.createElement(this.props.view.render_fn, this.props)
28961
+ if (this.props.view.model.dev) {
28962
+ rendered = React.createElement(ErrorBoundary, {view}, rendered)
28963
+ }
28964
+ ${render_code}
28965
+ return rendered
28855
28966
  }
28856
- ${render_code}
28857
- return rendered
28858
28967
  }
28859
- }
28860
28968
 
28861
- function render() {
28862
28969
  const props = {view, model: react_proxy, data: view.model.data, el: view.container}
28863
28970
  const rendered = React.createElement(Component, props)
28864
28971
  if (rendered) {
@@ -28886,20 +28993,6 @@ function render() {
28886
28993
 
28887
28994
  export default {render}`;
28888
28995
  }
28889
- }
28890
- exports.ReactComponentView = ReactComponentView;
28891
- ReactComponentView.__name__ = "ReactComponentView";
28892
- class ReactComponent extends reactive_esm_1.ReactiveESM {
28893
- constructor(attrs) {
28894
- super(attrs);
28895
- this.sucrase_transforms = ["typescript", "jsx"];
28896
- }
28897
- get usesMui() {
28898
- if (this.importmap?.imports) {
28899
- return Object.keys(this.importmap?.imports).some(k => k.startsWith("@mui"));
28900
- }
28901
- return false;
28902
- }
28903
28996
  compile() {
28904
28997
  const compiled = super.compile();
28905
28998
  if (this.bundle) {
@@ -28913,6 +29006,10 @@ import * as React from "react"
28913
29006
 
28914
29007
  ${compiled}`;
28915
29008
  }
29009
+ get _render_cache_key() {
29010
+ const cache_key = (this.bundle === "url") ? this.esm : (this.bundle || `${this.class_name}-${this.esm.length}`);
29011
+ return `react-${this.usesMui}-${cache_key}`;
29012
+ }
28916
29013
  }
28917
29014
  exports.ReactComponent = ReactComponent;
28918
29015
  _a = ReactComponent;
@@ -40105,5 +40202,5 @@ ${compiled}`;
40105
40202
  util_1.vtkns.FullScreenRenderWindowSynchronized = FullScreenRenderWindowSynchronized;
40106
40203
  }
40107
40204
  },
40108
- }, "4e90918c0a", {"index":"4e90918c0a","models/index":"2fe1822b2b","models/ace":"4ccbc5a371","models/layout":"9b11ce01a3","models/util":"6ae1cb3800","models/anywidget_component":"3df8113309","models/reactive_esm":"7ce3127e65","models/event-to-object":"2cc1a33000","models/html":"4c04683fdc","styles/models/html.css":"8694ed3f61","styles/models/esm.css":"727a14f76b","models/audio":"fd59c985b3","models/browser":"5a16cc23e6","models/button":"1db93211cd","models/button_icon":"1738ddeb3a","models/icon":"6c7fbea0ef","models/card":"330f4a8735","models/column":"42f54ab82e","styles/models/card.css":"edc7ee0090","models/checkbox_button_group":"51fbe9e2d0","models/chatarea_input":"27a077673d","models/textarea_input":"b7d595d74a","models/comm_manager":"3ec0e8eb36","models/customselect":"92bbd30bd1","models/multiselect":"27b5580835","models/tabulator":"8fc874f76d","models/data":"be689f0377","styles/models/tabulator.css":"b0e650c65c","models/datetime_picker":"ddf98634bb","models/datetime_slider":"c97cc0eade","models/deckgl":"f3ddc6fd49","models/lumagl":"a49afbffe9","models/tooltips":"f8f8ea4284","models/discrete_player":"0dca2cd4f6","models/player":"b5cfca1687","models/echarts":"253f80e325","models/feed":"4cfe0841a5","models/file_download":"84a13dddfb","models/file_dropper":"c0c26a60ff","styles/models/filedropper.css":"c03dd3c931","models/ipywidget":"8a8089cbf3","models/json":"245cd3cfde","models/jsoneditor":"d34360f699","models/katex":"f672d71a9f","models/location":"bd8e0fe48b","models/mathjax":"d889a68424","models/modal":"c7aa6cc7c5","styles/models/modal.css":"be4b4352c6","models/pdf":"f87ad1873c","models/perspective":"5db5031a50","styles/models/perspective.css":"2e2913ea54","models/plotly":"ffbe075545","styles/models/plotly.css":"ce7c8e2a4f","models/progress":"b1f4d68596","models/quill":"f6d86c7342","models/radio_button_group":"25e2d7c208","models/react_component":"134ad3d91a","models/reactive_html":"d5752cda5a","models/singleselect":"4155401209","models/speech_to_text":"5ac2cab0ab","models/state":"92822cb73a","models/tabs":"2231cdc549","models/terminal":"121f00bd6f","models/text_input":"8be416b160","models/text_to_speech":"a04eb51988","models/time_picker":"1afcab4e45","models/toggle_icon":"ad985f285e","models/tooltip_icon":"ae3a172647","models/trend":"29d55a28a9","models/vega":"119dc23765","models/video":"79dc37b888","styles/models/video.css":"dfe21e6f1b","models/videostream":"f8afc4e661","models/vizzu":"1f7bc1f95b","models/vtk/index":"c51f25e2a7","models/vtk/vtkjs":"ac55912dc1","models/vtk/vtklayout":"b06d05fa3e","models/vtk/util":"df9946ff52","models/vtk/vtkcolorbar":"b1d68776a9","models/vtk/vtkaxes":"0379dcf1cd","models/vtk/vtkvolume":"18592eecef","models/vtk/vtksynchronized":"a4e5946204","models/vtk/panel_fullscreen_renwin_sync":"5e89c7b3eb"}, {});});
40205
+ }, "4e90918c0a", {"index":"4e90918c0a","models/index":"2fe1822b2b","models/ace":"04c3c73615","models/layout":"9b11ce01a3","models/util":"6ae1cb3800","models/anywidget_component":"1f663ffe94","models/reactive_esm":"0b75212524","models/event-to-object":"2cc1a33000","models/html":"4c04683fdc","styles/models/html.css":"8694ed3f61","styles/models/esm.css":"727a14f76b","models/audio":"fd59c985b3","models/browser":"5a16cc23e6","models/button":"1db93211cd","models/button_icon":"1738ddeb3a","models/icon":"6c7fbea0ef","models/card":"330f4a8735","models/column":"975c86e1d3","styles/models/card.css":"edc7ee0090","models/checkbox_button_group":"51fbe9e2d0","models/chatarea_input":"27a077673d","models/textarea_input":"b7d595d74a","models/comm_manager":"3ec0e8eb36","models/customselect":"92bbd30bd1","models/multiselect":"27b5580835","models/tabulator":"8fc874f76d","models/data":"be689f0377","styles/models/tabulator.css":"b0e650c65c","models/datetime_picker":"ddf98634bb","models/datetime_slider":"c97cc0eade","models/deckgl":"f3ddc6fd49","models/lumagl":"a49afbffe9","models/tooltips":"f8f8ea4284","models/discrete_player":"0dca2cd4f6","models/player":"b5cfca1687","models/echarts":"253f80e325","models/feed":"4cfe0841a5","models/file_download":"84a13dddfb","models/file_dropper":"c0c26a60ff","styles/models/filedropper.css":"c03dd3c931","models/ipywidget":"8a8089cbf3","models/json":"245cd3cfde","models/jsoneditor":"d34360f699","models/katex":"f672d71a9f","models/location":"bd8e0fe48b","models/mathjax":"d889a68424","models/modal":"90f76e3d2e","styles/models/modal.css":"be4b4352c6","models/pdf":"f87ad1873c","models/perspective":"5db5031a50","styles/models/perspective.css":"2e2913ea54","models/plotly":"ffbe075545","styles/models/plotly.css":"ce7c8e2a4f","models/progress":"b1f4d68596","models/quill":"f6d86c7342","models/radio_button_group":"25e2d7c208","models/react_component":"6ad133a76d","models/reactive_html":"d5752cda5a","models/singleselect":"4155401209","models/speech_to_text":"5ac2cab0ab","models/state":"92822cb73a","models/tabs":"2231cdc549","models/terminal":"121f00bd6f","models/text_input":"8be416b160","models/text_to_speech":"a04eb51988","models/time_picker":"1afcab4e45","models/toggle_icon":"ad985f285e","models/tooltip_icon":"ae3a172647","models/trend":"29d55a28a9","models/vega":"119dc23765","models/video":"79dc37b888","styles/models/video.css":"dfe21e6f1b","models/videostream":"f8afc4e661","models/vizzu":"1f7bc1f95b","models/vtk/index":"c51f25e2a7","models/vtk/vtkjs":"ac55912dc1","models/vtk/vtklayout":"b06d05fa3e","models/vtk/util":"df9946ff52","models/vtk/vtkcolorbar":"b1d68776a9","models/vtk/vtkaxes":"0379dcf1cd","models/vtk/vtkvolume":"18592eecef","models/vtk/vtksynchronized":"a4e5946204","models/vtk/panel_fullscreen_renwin_sync":"5e89c7b3eb"}, {});});
40109
40206
  //# sourceMappingURL=panel.js.map