@holoviz/panel 1.4.2 → 1.5.0-a.1

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 (40) hide show
  1. package/dist/bundled/notificationarea/panel/1.5.0-a.1/dist/bundled/font-awesome/css/all.min.css +2 -0
  2. package/dist/bundled/panel/1.5.0-a.1/dist/bundled/bootstrap5/css/bootstrap.min.css +2 -0
  3. package/dist/bundled/panel/1.5.0-a.1/dist/bundled/bootstrap5/js/bootstrap.bundle.min.js +2 -0
  4. package/dist/bundled/panel/1.5.0-a.1/dist/bundled/font-awesome/css/all.min.css +2 -0
  5. package/dist/bundled/panel/1.5.0-a.1/dist/bundled/jquery/jquery.slim.min.js +2 -0
  6. package/dist/bundled/plotlyplot/panel/1.5.0-a.1/dist/bundled/jquery/jquery.slim.min.js +2 -0
  7. package/dist/bundled/theme/fast.css +0 -1
  8. package/dist/css/models/card.css +11 -0
  9. package/dist/lib/models/comm_manager.d.ts +1 -1
  10. package/dist/lib/models/comm_manager.js +16 -18
  11. package/dist/lib/models/comm_manager.js.map +1 -1
  12. package/dist/lib/models/html.d.ts +7 -7
  13. package/dist/lib/models/html.js +28 -25
  14. package/dist/lib/models/html.js.map +1 -1
  15. package/dist/lib/models/index.d.ts +1 -0
  16. package/dist/lib/models/index.js +1 -0
  17. package/dist/lib/models/index.js.map +1 -1
  18. package/dist/lib/models/layout.d.ts +5 -4
  19. package/dist/lib/models/layout.js +41 -36
  20. package/dist/lib/models/layout.js.map +1 -1
  21. package/dist/lib/models/pdf.js +2 -2
  22. package/dist/lib/models/pdf.js.map +1 -1
  23. package/dist/lib/models/reactive_html.d.ts +18 -17
  24. package/dist/lib/models/reactive_html.js +159 -138
  25. package/dist/lib/models/reactive_html.js.map +1 -1
  26. package/dist/lib/models/text_input.d.ts +25 -0
  27. package/dist/lib/models/text_input.js +38 -0
  28. package/dist/lib/models/text_input.js.map +1 -0
  29. package/dist/lib/styles/models/card.css.js +1 -1
  30. package/dist/panel.js +335 -261
  31. package/dist/panel.js.map +1 -1
  32. package/dist/panel.json +1 -1
  33. package/dist/panel.min.js +33 -32
  34. package/package.json +1 -1
  35. package/dist/bundled/notificationarea/panel/1.4.2/dist/bundled/font-awesome/css/all.min.css +0 -2
  36. package/dist/bundled/panel/1.4.2/dist/bundled/bootstrap5/css/bootstrap.min.css +0 -2
  37. package/dist/bundled/panel/1.4.2/dist/bundled/bootstrap5/js/bootstrap.bundle.min.js +0 -2
  38. package/dist/bundled/panel/1.4.2/dist/bundled/font-awesome/css/all.min.css +0 -2
  39. package/dist/bundled/panel/1.4.2/dist/bundled/jquery/jquery.slim.min.js +0 -2
  40. package/dist/bundled/plotlyplot/panel/1.4.2/dist/bundled/jquery/jquery.slim.min.js +0 -2
package/dist/panel.js CHANGED
@@ -45,12 +45,12 @@
45
45
  "4e90918c0a": /* index.js */ function _(require, module, exports, __esModule, __esExport) {
46
46
  __esModule();
47
47
  const tslib_1 = require("tslib");
48
- const Panel = tslib_1.__importStar(require("38670592ce") /* ./models */);
48
+ const Panel = tslib_1.__importStar(require("62567e6811") /* ./models */);
49
49
  exports.Panel = Panel;
50
50
  const base_1 = require("@bokehjs/base");
51
51
  (0, base_1.register_models)(Panel);
52
52
  },
53
- "38670592ce": /* models/index.js */ function _(require, module, exports, __esModule, __esExport) {
53
+ "62567e6811": /* models/index.js */ function _(require, module, exports, __esModule, __esExport) {
54
54
  __esModule();
55
55
  const tslib_1 = require("tslib");
56
56
  var ace_1 = require("c780fc99fd") /* ./ace */;
@@ -73,7 +73,7 @@
73
73
  __esExport("ChatAreaInput", chatarea_input_1.ChatAreaInput);
74
74
  var column_1 = require("aab20b9d6a") /* ./column */;
75
75
  __esExport("Column", column_1.Column);
76
- var comm_manager_1 = require("352943c042") /* ./comm_manager */;
76
+ var comm_manager_1 = require("a5b1a17220") /* ./comm_manager */;
77
77
  __esExport("CommManager", comm_manager_1.CommManager);
78
78
  var customselect_1 = require("92bbd30bd1") /* ./customselect */;
79
79
  __esExport("CustomSelect", customselect_1.CustomSelect);
@@ -89,7 +89,7 @@
89
89
  __esExport("Feed", feed_1.Feed);
90
90
  var file_download_1 = require("3ead851ca6") /* ./file_download */;
91
91
  __esExport("FileDownload", file_download_1.FileDownload);
92
- var html_1 = require("89d2d3667a") /* ./html */;
92
+ var html_1 = require("9cfeb137e6") /* ./html */;
93
93
  __esExport("HTML", html_1.HTML);
94
94
  var ipywidget_1 = require("8a8089cbf3") /* ./ipywidget */;
95
95
  __esExport("IPyWidget", ipywidget_1.IPyWidget);
@@ -103,7 +103,7 @@
103
103
  __esExport("Location", location_1.Location);
104
104
  var mathjax_1 = require("ec353a3d9a") /* ./mathjax */;
105
105
  __esExport("MathJax", mathjax_1.MathJax);
106
- var pdf_1 = require("cf33f23f5c") /* ./pdf */;
106
+ var pdf_1 = require("f87ad1873c") /* ./pdf */;
107
107
  __esExport("PDF", pdf_1.PDF);
108
108
  var perspective_1 = require("8b1673a40b") /* ./perspective */;
109
109
  __esExport("Perspective", perspective_1.Perspective);
@@ -117,7 +117,7 @@
117
117
  __esExport("QuillInput", quill_1.QuillInput);
118
118
  var radio_button_group_1 = require("25e2d7c208") /* ./radio_button_group */;
119
119
  __esExport("RadioButtonGroup", radio_button_group_1.RadioButtonGroup);
120
- var reactive_html_1 = require("6cfc3f348e") /* ./reactive_html */;
120
+ var reactive_html_1 = require("4c1a1063b3") /* ./reactive_html */;
121
121
  __esExport("ReactiveHTML", reactive_html_1.ReactiveHTML);
122
122
  var singleselect_1 = require("168c4d0ebd") /* ./singleselect */;
123
123
  __esExport("SingleSelect", singleselect_1.SingleSelect);
@@ -131,6 +131,8 @@
131
131
  __esExport("Terminal", terminal_1.Terminal);
132
132
  var textarea_input_1 = require("b7d595d74a") /* ./textarea_input */;
133
133
  __esExport("TextAreaInput", textarea_input_1.TextAreaInput);
134
+ var text_input_1 = require("8be416b160") /* ./text_input */;
135
+ __esExport("TextInput", text_input_1.TextInput);
134
136
  var text_to_speech_1 = require("a04eb51988") /* ./text_to_speech */;
135
137
  __esExport("TextToSpeech", text_to_speech_1.TextToSpeech);
136
138
  var toggle_icon_1 = require("ad985f285e") /* ./toggle_icon */;
@@ -153,7 +155,7 @@
153
155
  var _a;
154
156
  __esModule();
155
157
  const dom_1 = require("@bokehjs/core/dom");
156
- const layout_1 = require("73d6aee8f5") /* ./layout */;
158
+ const layout_1 = require("c37096b5ea") /* ./layout */;
157
159
  function ID() {
158
160
  // Math.random should be unique because of its seeding algorithm.
159
161
  // Convert it to base 36 (numbers + letters), and grab the first 9 characters
@@ -268,10 +270,11 @@
268
270
  });
269
271
  })();
270
272
  },
271
- "73d6aee8f5": /* models/layout.js */ function _(require, module, exports, __esModule, __esExport) {
273
+ "c37096b5ea": /* models/layout.js */ function _(require, module, exports, __esModule, __esExport) {
272
274
  __esModule();
273
275
  const dom_1 = require("@bokehjs/core/dom");
274
276
  const types_1 = require("@bokehjs/core/util/types");
277
+ const assert_1 = require("@bokehjs/core/util/assert");
275
278
  const widget_1 = require("@bokehjs/models/widgets/widget");
276
279
  const layout_dom_1 = require("@bokehjs/models/layouts/layout_dom");
277
280
  class PanelMarkupView extends widget_1.WidgetView {
@@ -294,25 +297,25 @@
294
297
  }
295
298
  }
296
299
  watch_stylesheets() {
297
- this._initialized_stylesheets = {};
298
- for (const sts of this._applied_stylesheets) {
299
- const style_el = sts.el;
300
+ this._initialized_stylesheets = new Map();
301
+ for (const stylesheet of this._applied_stylesheets) {
302
+ // @ts-expect-error: 'el' is protected
303
+ const style_el = stylesheet.el;
300
304
  if (style_el instanceof HTMLLinkElement) {
301
- this._initialized_stylesheets[style_el.href] = false;
305
+ this._initialized_stylesheets.set(style_el.href, false);
302
306
  style_el.addEventListener("load", () => {
303
- this._initialized_stylesheets[style_el.href] = true;
304
- if (Object.values(this._initialized_stylesheets).every(Boolean)) {
307
+ this._initialized_stylesheets.set(style_el.href, true);
308
+ if ([...this._initialized_stylesheets.values()].every((v) => v)) {
305
309
  this.style_redraw();
306
310
  }
307
311
  });
308
312
  }
309
313
  }
310
- if (Object.keys(this._initialized_stylesheets).length === 0) {
314
+ if (this._initialized_stylesheets.size == 0) {
311
315
  this.style_redraw();
312
316
  }
313
317
  }
314
- style_redraw() {
315
- }
318
+ style_redraw() { }
316
319
  has_math_disabled() {
317
320
  return this.model.disable_math || !this.contains_tex_string(this.model.text);
318
321
  }
@@ -329,7 +332,7 @@
329
332
  }
330
333
  exports.PanelMarkupView = PanelMarkupView;
331
334
  PanelMarkupView.__name__ = "PanelMarkupView";
332
- function set_size(el, model, adjustMargin = true) {
335
+ function set_size(el, model, adjust_margin = true) {
333
336
  let width_policy = model.width != null ? "fixed" : "fit";
334
337
  let height_policy = model.height != null ? "fixed" : "fit";
335
338
  const { sizing_mode, margin } = model;
@@ -348,25 +351,29 @@
348
351
  }
349
352
  else {
350
353
  switch (sizing_mode) {
351
- case "scale_width":
354
+ case "scale_width": {
352
355
  width_policy = "max";
353
356
  height_policy = "min";
354
357
  break;
355
- case "scale_height":
358
+ }
359
+ case "scale_height": {
356
360
  width_policy = "min";
357
361
  height_policy = "max";
358
362
  break;
359
- case "scale_both":
363
+ }
364
+ case "scale_both": {
360
365
  width_policy = "max";
361
366
  height_policy = "max";
362
367
  break;
363
- default:
364
- throw new Error("unreachable");
368
+ }
369
+ default: {
370
+ (0, assert_1.unreachable)();
371
+ }
365
372
  }
366
373
  }
367
374
  }
368
375
  let wm, hm;
369
- if (!adjustMargin) {
376
+ if (!adjust_margin) {
370
377
  hm = wm = 0;
371
378
  }
372
379
  else if ((0, types_1.isArray)(margin)) {
@@ -385,29 +392,29 @@
385
392
  else {
386
393
  wm = hm = margin * 2;
387
394
  }
388
- if (width_policy == "fixed" && model.width) {
389
- el.style.width = `${model.width}px`;
395
+ if (width_policy == "fixed" && model.width != null) {
396
+ el.style.width = (0, dom_1.px)(model.width);
390
397
  }
391
398
  else if (width_policy == "max") {
392
- el.style.width = wm ? `calc(100% - ${wm}px)` : "100%";
399
+ el.style.width = wm != 0 ? `calc(100% - ${(0, dom_1.px)(wm)})` : "100%";
393
400
  }
394
401
  if (model.min_width != null) {
395
- el.style.minWidth = `${model.min_width}px`;
402
+ el.style.minWidth = (0, dom_1.px)(model.min_width);
396
403
  }
397
404
  if (model.max_width != null) {
398
- el.style.maxWidth = `${model.max_width}px`;
405
+ el.style.maxWidth = (0, dom_1.px)(model.max_width);
399
406
  }
400
- if (height_policy == "fixed" && model.height) {
401
- el.style.height = `${model.height}px`;
407
+ if (height_policy == "fixed" && model.height != null) {
408
+ el.style.height = (0, dom_1.px)(model.height);
402
409
  }
403
410
  else if (height_policy == "max") {
404
- el.style.height = hm ? `calc(100% - ${hm}px)` : "100%";
411
+ el.style.height = hm != 0 ? `calc(100% - ${(0, dom_1.px)(hm)})` : "100%";
405
412
  }
406
413
  if (model.min_height != null) {
407
- el.style.minHeight = `${model.min_height}px`;
414
+ el.style.minHeight = (0, dom_1.px)(model.min_height);
408
415
  }
409
- if (model.max_width != null) {
410
- el.style.maxHeight = `${model.max_height}px`;
416
+ if (model.max_height != null) {
417
+ el.style.maxHeight = (0, dom_1.px)(model.max_height);
411
418
  }
412
419
  }
413
420
  exports.set_size = set_size;
@@ -424,22 +431,22 @@
424
431
  set_size(this.el, this.model);
425
432
  }
426
433
  watch_stylesheets() {
427
- this._initialized_stylesheets = {};
428
- for (const sts of this._applied_stylesheets) {
429
- const style_el = sts.el;
434
+ this._initialized_stylesheets = new Map();
435
+ for (const stylesheet of this._applied_stylesheets) {
436
+ // @ts-expect-error: 'el' is protected
437
+ const style_el = stylesheet.el;
430
438
  if (style_el instanceof HTMLLinkElement) {
431
- this._initialized_stylesheets[style_el.href] = false;
439
+ this._initialized_stylesheets.set(style_el.href, false);
432
440
  style_el.addEventListener("load", () => {
433
- this._initialized_stylesheets[style_el.href] = true;
434
- if (Object.values(this._initialized_stylesheets).every(Boolean)) {
441
+ this._initialized_stylesheets.set(style_el.href, true);
442
+ if ([...this._initialized_stylesheets.values()].every((v) => v)) {
435
443
  this.style_redraw();
436
444
  }
437
445
  });
438
446
  }
439
447
  }
440
448
  }
441
- style_redraw() {
442
- }
449
+ style_redraw() { }
443
450
  get child_models() {
444
451
  return [];
445
452
  }
@@ -457,7 +464,7 @@
457
464
  "fd59c985b3": /* models/audio.js */ function _(require, module, exports, __esModule, __esExport) {
458
465
  var _a;
459
466
  __esModule();
460
- const layout_1 = require("73d6aee8f5") /* ./layout */;
467
+ const layout_1 = require("c37096b5ea") /* ./layout */;
461
468
  class AudioView extends layout_1.HTMLBoxView {
462
469
  initialize() {
463
470
  super.initialize();
@@ -930,7 +937,7 @@
930
937
  const tslib_1 = require("tslib");
931
938
  const column_1 = require("aab20b9d6a") /* ./column */;
932
939
  const DOM = tslib_1.__importStar(require("@bokehjs/core/dom"));
933
- const card_css_1 = tslib_1.__importDefault(require("dfbedd1d49") /* ../styles/models/card.css */);
940
+ const card_css_1 = tslib_1.__importDefault(require("edc7ee0090") /* ../styles/models/card.css */);
934
941
  const CHEVRON_RIGHT = `
935
942
  <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>
936
943
  `;
@@ -1179,9 +1186,9 @@
1179
1186
  }));
1180
1187
  })();
1181
1188
  },
1182
- "dfbedd1d49": /* styles/models/card.css.js */ function _(require, module, exports, __esModule, __esExport) {
1189
+ "edc7ee0090": /* styles/models/card.css.js */ function _(require, module, exports, __esModule, __esExport) {
1183
1190
  __esModule();
1184
- exports.default = `:host(.card){border-radius:0.25rem;box-shadow:rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px;flex:auto;outline:1px solid rgba(0, 0, 0, 0.125);}:host(.accordion){box-shadow:rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px;outline:1px solid rgba(0, 0, 0, 0.125);width:100%;}.card-header{align-items:center;background-color:rgba(0, 0, 0, 0.03);border:unset;border-radius:0.25rem;display:inline-flex;justify-content:start;outline:unset;position:sticky;width:100%;padding-inline:0.5em;}.accordion-header{align-items:center;background-color:rgba(0, 0, 0, 0.03);border:unset;outline:1px solid;border-radius:0;display:flex;justify-content:start;position:sticky;width:100%;}.card-button{background-color:transparent;margin-left:0em;margin-right:0.25em;}.card-header-row{position:relative !important;}.card-title{align-items:center;font-size:1.4em;font-weight:bold;overflow-wrap:break-word;}.card-header-row > .bk{overflow-wrap:break-word;text-align:center;}`;
1191
+ exports.default = `:host(.card){border-radius:0.25rem;box-shadow:rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px;flex:auto;outline:1px solid rgba(0, 0, 0, 0.125);}:host(.accordion){box-shadow:rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px;outline:1px solid rgba(0, 0, 0, 0.125);width:100%;}.card-header{align-items:center;background-color:rgba(0, 0, 0, 0.03);border:unset;border-radius:0.25rem;display:inline-flex;justify-content:start;outline:unset;position:sticky;width:100%;margin-right:0.5em;padding-inline:0.5em;cursor:pointer;}.card-header:hover{box-shadow:0 0 3px rgba(0, 0, 0, 0.3);}.card-header:not(:hover){box-shadow:0 0 3px rgba(0, 0, 0, 0);}.accordion-header{align-items:center;background-color:rgba(0, 0, 0, 0.03);border:unset;outline:1px solid;border-radius:0;display:flex;justify-content:start;position:sticky;width:100%;cursor:pointer;}.card-button{background-color:transparent;margin-left:0em;margin-right:0.25em;height:12px;width:12px;}.card-header-row{position:relative !important;}.card-title{align-items:center;font-size:1.4em;font-weight:bold;overflow-wrap:break-word;}.card-header-row > .bk{overflow-wrap:break-word;text-align:center;}`;
1185
1192
  },
1186
1193
  "51fbe9e2d0": /* models/checkbox_button_group.js */ function _(require, module, exports, __esModule, __esExport) {
1187
1194
  var _a;
@@ -1370,7 +1377,7 @@
1370
1377
  }));
1371
1378
  })();
1372
1379
  },
1373
- "352943c042": /* models/comm_manager.js */ function _(require, module, exports, __esModule, __esExport) {
1380
+ "a5b1a17220": /* models/comm_manager.js */ function _(require, module, exports, __esModule, __esExport) {
1374
1381
  var _a;
1375
1382
  __esModule();
1376
1383
  const document_1 = require("@bokehjs/document");
@@ -1378,6 +1385,8 @@
1378
1385
  const model_1 = require("@bokehjs/model");
1379
1386
  const message_1 = require("@bokehjs/protocol/message");
1380
1387
  const receiver_1 = require("@bokehjs/protocol/receiver");
1388
+ const types_1 = require("@bokehjs/core/util/types");
1389
+ const object_1 = require("@bokehjs/core/util/object");
1381
1390
  exports.comm_settings = {
1382
1391
  debounce: true,
1383
1392
  };
@@ -1448,29 +1457,25 @@
1448
1457
  }
1449
1458
  }
1450
1459
  _extract_buffers(value, buffers) {
1451
- let extracted;
1452
- if (value instanceof Array) {
1453
- extracted = [];
1460
+ if ((0, types_1.isArray)(value)) {
1454
1461
  for (const val of value) {
1455
- extracted.push(this._extract_buffers(val, buffers));
1462
+ this._extract_buffers(val, buffers);
1456
1463
  }
1457
1464
  }
1458
- else if (value instanceof Object) {
1459
- extracted = {};
1460
- for (const key in value) {
1461
- if (key === "buffer" && value[key] instanceof ArrayBuffer) {
1462
- const id = Object.keys(buffers).length;
1463
- extracted = { id };
1464
- buffers.push(value[key]);
1465
- break;
1465
+ else if ((0, types_1.isPlainObject)(value)) {
1466
+ if ((0, object_1.size)(value) == 1 && value.buffer instanceof ArrayBuffer) {
1467
+ const { buffer } = value;
1468
+ delete value.buffer;
1469
+ const id = buffers.length;
1470
+ value.id = id;
1471
+ buffers.push(buffer);
1472
+ }
1473
+ else {
1474
+ for (const val of (0, object_1.values)(value)) {
1475
+ this._extract_buffers(val, buffers);
1466
1476
  }
1467
- extracted[key] = this._extract_buffers(value[key], buffers);
1468
1477
  }
1469
1478
  }
1470
- else {
1471
- extracted = value;
1472
- }
1473
- return extracted;
1474
1479
  }
1475
1480
  process_events() {
1476
1481
  if ((this.document == null) || (this._client_comm == null)) {
@@ -1480,7 +1485,7 @@
1480
1485
  this._event_buffer = [];
1481
1486
  const message = { ...message_1.Message.create("PATCH-DOC", {}, patch) };
1482
1487
  const buffers = [];
1483
- message.content = this._extract_buffers(message.content, buffers);
1488
+ this._extract_buffers(message.content, buffers);
1484
1489
  this._client_comm.send(message, {}, buffers);
1485
1490
  for (const view of this.ns.shared_views.get(this.plot_id)) {
1486
1491
  if (view !== this && view.document != null) {
@@ -1630,9 +1635,9 @@
1630
1635
  const column_data_source_1 = require("@bokehjs/models/sources/column_data_source");
1631
1636
  const tables_1 = require("@bokehjs/models/widgets/tables");
1632
1637
  const debounce_1 = require("99a25e6992") /* debounce */;
1633
- const comm_manager_1 = require("352943c042") /* ./comm_manager */;
1638
+ const comm_manager_1 = require("a5b1a17220") /* ./comm_manager */;
1634
1639
  const data_1 = require("be689f0377") /* ./data */;
1635
- const layout_1 = require("73d6aee8f5") /* ./layout */;
1640
+ const layout_1 = require("c37096b5ea") /* ./layout */;
1636
1641
  class TableEditEvent extends bokeh_events_1.ModelEvent {
1637
1642
  constructor(column, row, pre) {
1638
1643
  super();
@@ -6952,7 +6957,7 @@
6952
6957
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
6953
6958
  const dom_1 = require("@bokehjs/core/dom");
6954
6959
  const event_to_object_1 = require("2cc1a33000") /* ./event-to-object */;
6955
- const layout_1 = require("73d6aee8f5") /* ./layout */;
6960
+ const layout_1 = require("c37096b5ea") /* ./layout */;
6956
6961
  const mouse_events = [
6957
6962
  "click", "dblclick", "mousedown", "mousemove", "mouseup", "mouseover", "mouseout",
6958
6963
  "globalout", "contextmenu",
@@ -7685,12 +7690,13 @@
7685
7690
  });
7686
7691
  })();
7687
7692
  },
7688
- "89d2d3667a": /* models/html.js */ function _(require, module, exports, __esModule, __esExport) {
7693
+ "9cfeb137e6": /* models/html.js */ function _(require, module, exports, __esModule, __esExport) {
7689
7694
  var _a, _b;
7690
7695
  __esModule();
7691
7696
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
7697
+ const object_1 = require("@bokehjs/core/util/object");
7692
7698
  const markup_1 = require("@bokehjs/models/widgets/markup");
7693
- const layout_1 = require("73d6aee8f5") /* ./layout */;
7699
+ const layout_1 = require("c37096b5ea") /* ./layout */;
7694
7700
  const event_to_object_1 = require("2cc1a33000") /* ./event-to-object */;
7695
7701
  class DOMEvent extends bokeh_events_1.ModelEvent {
7696
7702
  constructor(node, data) {
@@ -7708,27 +7714,29 @@
7708
7714
  (() => {
7709
7715
  _a.prototype.event_name = "dom_event";
7710
7716
  })();
7711
- function htmlDecode(input) {
7717
+ function html_decode(input) {
7712
7718
  const doc = new DOMParser().parseFromString(input, "text/html");
7713
7719
  return doc.documentElement.textContent;
7714
7720
  }
7715
- exports.htmlDecode = htmlDecode;
7716
- function runScripts(node) {
7717
- Array.from(node.querySelectorAll("script")).forEach((oldScript) => {
7718
- const newScript = document.createElement("script");
7719
- Array.from(oldScript.attributes)
7720
- .forEach((attr) => newScript.setAttribute(attr.name, attr.value));
7721
- newScript.appendChild(document.createTextNode(oldScript.innerHTML));
7722
- if (oldScript.parentNode) {
7723
- oldScript.parentNode.replaceChild(newScript, oldScript);
7721
+ exports.html_decode = html_decode;
7722
+ function run_scripts(node) {
7723
+ for (const old_script of node.querySelectorAll("script")) {
7724
+ const new_script = document.createElement("script");
7725
+ for (const attr of old_script.attributes) {
7726
+ new_script.setAttribute(attr.name, attr.value);
7724
7727
  }
7725
- });
7728
+ new_script.append(document.createTextNode(old_script.innerHTML));
7729
+ const parent_node = old_script.parentNode;
7730
+ if (parent_node != null) {
7731
+ parent_node.replaceChild(new_script, old_script);
7732
+ }
7733
+ }
7726
7734
  }
7727
- exports.runScripts = runScripts;
7735
+ exports.run_scripts = run_scripts;
7728
7736
  class HTMLView extends layout_1.PanelMarkupView {
7729
7737
  constructor() {
7730
7738
  super(...arguments);
7731
- this._event_listeners = {};
7739
+ this._event_listeners = new Map();
7732
7740
  }
7733
7741
  connect_signals() {
7734
7742
  super.connect_signals();
@@ -7755,7 +7763,7 @@
7755
7763
  if (html !== null) {
7756
7764
  this.container.innerHTML = html;
7757
7765
  if (this.model.run_scripts) {
7758
- runScripts(this.container);
7766
+ run_scripts(this.container);
7759
7767
  }
7760
7768
  this._setup_event_listeners();
7761
7769
  }
@@ -7777,8 +7785,8 @@
7777
7785
  }
7778
7786
  }
7779
7787
  process_tex() {
7780
- const decoded = htmlDecode(this.model.text);
7781
- const text = decoded || this.model.text;
7788
+ const decoded = html_decode(this.model.text);
7789
+ const text = decoded ?? this.model.text;
7782
7790
  if (this.model.disable_math || !this.contains_tex(text)) {
7783
7791
  return text;
7784
7792
  }
@@ -7802,35 +7810,35 @@
7802
7810
  return this.provider.MathJax.find_tex(html).length > 0;
7803
7811
  }
7804
7812
  _remove_event_listeners() {
7805
- for (const node in this._event_listeners) {
7813
+ for (const [node, callbacks] of this._event_listeners) {
7806
7814
  const el = document.getElementById(node);
7807
7815
  if (el == null) {
7808
7816
  console.warn(`DOM node '${node}' could not be found. Cannot subscribe to DOM events.`);
7809
7817
  continue;
7810
7818
  }
7811
- for (const event_name in this._event_listeners[node]) {
7812
- const event_callback = this._event_listeners[node][event_name];
7819
+ for (const [event_name, event_callback] of callbacks) {
7813
7820
  el.removeEventListener(event_name, event_callback);
7814
7821
  }
7815
7822
  }
7816
- this._event_listeners = {};
7823
+ this._event_listeners.clear();
7817
7824
  }
7818
7825
  _setup_event_listeners() {
7819
- for (const node in this.model.events) {
7826
+ for (const [node, event_names] of (0, object_1.entries)(this.model.events)) {
7820
7827
  const el = document.getElementById(node);
7821
7828
  if (el == null) {
7822
7829
  console.warn(`DOM node '${node}' could not be found. Cannot subscribe to DOM events.`);
7823
7830
  continue;
7824
7831
  }
7825
- for (const event_name of this.model.events[node]) {
7832
+ for (const event_name of event_names) {
7826
7833
  const callback = (event) => {
7827
7834
  this.model.trigger_event(new DOMEvent(node, (0, event_to_object_1.serializeEvent)(event)));
7828
7835
  };
7829
7836
  el.addEventListener(event_name, callback);
7830
- if (!(node in this._event_listeners)) {
7831
- this._event_listeners[node] = {};
7837
+ let callbacks = this._event_listeners.get(node);
7838
+ if (callbacks === undefined) {
7839
+ this._event_listeners.set(node, callbacks = new Map());
7832
7840
  }
7833
- this._event_listeners[node][event_name] = callback;
7841
+ callbacks.set(event_name, callback);
7834
7842
  }
7835
7843
  }
7836
7844
  }
@@ -7848,8 +7856,8 @@
7848
7856
  HTML.__module__ = "panel.models.markup";
7849
7857
  (() => {
7850
7858
  _b.prototype.default_view = HTMLView;
7851
- _b.define(({ Any, Bool }) => ({
7852
- events: [Any, {}],
7859
+ _b.define(({ Bool, Str, List, Dict }) => ({
7860
+ events: [Dict(List(Str)), {}],
7853
7861
  run_scripts: [Bool, true],
7854
7862
  }));
7855
7863
  })();
@@ -7858,7 +7866,7 @@
7858
7866
  var _a;
7859
7867
  __esModule();
7860
7868
  const dom_1 = require("@bokehjs/core/dom");
7861
- const layout_1 = require("73d6aee8f5") /* ./layout */;
7869
+ const layout_1 = require("c37096b5ea") /* ./layout */;
7862
7870
  const Jupyter = window.Jupyter;
7863
7871
  class IPyWidgetView extends layout_1.HTMLBoxView {
7864
7872
  initialize() {
@@ -7947,7 +7955,7 @@
7947
7955
  const kinds_1 = require("@bokehjs/core/kinds");
7948
7956
  const markup_1 = require("@bokehjs/models/widgets/markup");
7949
7957
  const json_formatter_js_1 = tslib_1.__importDefault(require("18bba7b7e1") /* json-formatter-js */);
7950
- const layout_1 = require("73d6aee8f5") /* ./layout */;
7958
+ const layout_1 = require("c37096b5ea") /* ./layout */;
7951
7959
  class JSONView extends layout_1.PanelMarkupView {
7952
7960
  connect_signals() {
7953
7961
  super.connect_signals();
@@ -8090,7 +8098,7 @@
8090
8098
  __esModule();
8091
8099
  const dom_1 = require("@bokehjs/core/dom");
8092
8100
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
8093
- const layout_1 = require("73d6aee8f5") /* ./layout */;
8101
+ const layout_1 = require("c37096b5ea") /* ./layout */;
8094
8102
  class JSONEditEvent extends bokeh_events_1.ModelEvent {
8095
8103
  constructor(data) {
8096
8104
  super();
@@ -8187,7 +8195,7 @@
8187
8195
  var _a;
8188
8196
  __esModule();
8189
8197
  const markup_1 = require("@bokehjs/models/widgets/markup");
8190
- const layout_1 = require("73d6aee8f5") /* ./layout */;
8198
+ const layout_1 = require("c37096b5ea") /* ./layout */;
8191
8199
  class KaTeXView extends layout_1.PanelMarkupView {
8192
8200
  connect_signals() {
8193
8201
  super.connect_signals();
@@ -8310,7 +8318,7 @@
8310
8318
  var _a;
8311
8319
  __esModule();
8312
8320
  const markup_1 = require("@bokehjs/models/widgets/markup");
8313
- const layout_1 = require("73d6aee8f5") /* ./layout */;
8321
+ const layout_1 = require("c37096b5ea") /* ./layout */;
8314
8322
  class MathJaxView extends layout_1.PanelMarkupView {
8315
8323
  connect_signals() {
8316
8324
  super.connect_signals();
@@ -8337,12 +8345,12 @@
8337
8345
  _a.prototype.default_view = MathJaxView;
8338
8346
  })();
8339
8347
  },
8340
- "cf33f23f5c": /* models/pdf.js */ function _(require, module, exports, __esModule, __esExport) {
8348
+ "f87ad1873c": /* models/pdf.js */ function _(require, module, exports, __esModule, __esExport) {
8341
8349
  var _a;
8342
8350
  __esModule();
8343
8351
  const markup_1 = require("@bokehjs/models/widgets/markup");
8344
- const layout_1 = require("73d6aee8f5") /* ./layout */;
8345
- const html_1 = require("89d2d3667a") /* ./html */;
8352
+ const layout_1 = require("c37096b5ea") /* ./layout */;
8353
+ const html_1 = require("9cfeb137e6") /* ./html */;
8346
8354
  class PDFView extends layout_1.PanelMarkupView {
8347
8355
  connect_signals() {
8348
8356
  super.connect_signals();
@@ -8360,7 +8368,7 @@
8360
8368
  this.container.innerHTML = `<embed src="${url}#page=${this.model.start_page}" type="application/pdf" width="100%" height="100%"></embed>`;
8361
8369
  }
8362
8370
  else {
8363
- const html = (0, html_1.htmlDecode)(this.model.text);
8371
+ const html = (0, html_1.html_decode)(this.model.text);
8364
8372
  this.container.innerHTML = html || "";
8365
8373
  }
8366
8374
  }
@@ -8405,7 +8413,7 @@
8405
8413
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
8406
8414
  const dom_1 = require("@bokehjs/core/dom");
8407
8415
  const column_data_source_1 = require("@bokehjs/models/sources/column_data_source");
8408
- const layout_1 = require("73d6aee8f5") /* ./layout */;
8416
+ const layout_1 = require("c37096b5ea") /* ./layout */;
8409
8417
  const perspective_css_1 = tslib_1.__importDefault(require("2e2913ea54") /* ../styles/models/perspective.css */);
8410
8418
  const THEMES = {
8411
8419
  "pro-dark": "Pro Dark",
@@ -9131,7 +9139,7 @@
9131
9139
  const column_data_source_1 = require("@bokehjs/models/sources/column_data_source");
9132
9140
  const debounce_1 = require("99a25e6992") /* debounce */;
9133
9141
  const util_1 = require("27e2a99e99") /* ./util */;
9134
- const layout_1 = require("73d6aee8f5") /* ./layout */;
9142
+ const layout_1 = require("c37096b5ea") /* ./layout */;
9135
9143
  const plotly_css_1 = tslib_1.__importDefault(require("ce7c8e2a4f") /* ../styles/models/plotly.css */);
9136
9144
  class PlotlyEvent extends bokeh_events_1.ModelEvent {
9137
9145
  constructor(data) {
@@ -9627,7 +9635,7 @@
9627
9635
  var _a;
9628
9636
  __esModule();
9629
9637
  const dom_1 = require("@bokehjs/core/dom");
9630
- const layout_1 = require("73d6aee8f5") /* ./layout */;
9638
+ const layout_1 = require("c37096b5ea") /* ./layout */;
9631
9639
  class ProgressView extends layout_1.HTMLBoxView {
9632
9640
  connect_signals() {
9633
9641
  super.connect_signals();
@@ -9707,7 +9715,7 @@
9707
9715
  var _a;
9708
9716
  __esModule();
9709
9717
  const dom_1 = require("@bokehjs/core/dom");
9710
- const layout_1 = require("73d6aee8f5") /* ./layout */;
9718
+ const layout_1 = require("c37096b5ea") /* ./layout */;
9711
9719
  class QuillInputView extends layout_1.HTMLBoxView {
9712
9720
  connect_signals() {
9713
9721
  super.connect_signals();
@@ -9975,78 +9983,85 @@
9975
9983
  }));
9976
9984
  })();
9977
9985
  },
9978
- "6cfc3f348e": /* models/reactive_html.js */ function _(require, module, exports, __esModule, __esExport) {
9986
+ "4c1a1063b3": /* models/reactive_html.js */ function _(require, module, exports, __esModule, __esExport) {
9979
9987
  var _a;
9980
9988
  __esModule();
9981
9989
  const preact_1 = require("bfac992a64") /* preact */;
9982
9990
  const hooks_1 = require("d952f1d8b6") /* preact/hooks */;
9983
9991
  const preact_2 = require("b3f51db71c") /* htm/preact */;
9984
9992
  const dom_1 = require("@bokehjs/core/dom");
9993
+ const assert_1 = require("@bokehjs/core/util/assert");
9994
+ const iterator_1 = require("@bokehjs/core/util/iterator");
9985
9995
  const types_1 = require("@bokehjs/core/util/types");
9996
+ const object_1 = require("@bokehjs/core/util/object");
9997
+ const model_1 = require("@bokehjs/model");
9998
+ const ui_element_1 = require("@bokehjs/models/ui/ui_element");
9986
9999
  const data_1 = require("be689f0377") /* ./data */;
9987
10000
  const event_to_object_1 = require("2cc1a33000") /* ./event-to-object */;
9988
- const html_1 = require("89d2d3667a") /* ./html */;
9989
- const layout_1 = require("73d6aee8f5") /* ./layout */;
10001
+ const html_1 = require("9cfeb137e6") /* ./html */;
10002
+ const layout_1 = require("c37096b5ea") /* ./layout */;
9990
10003
  function serialize_attrs(attrs) {
9991
10004
  const serialized = {};
9992
- for (const attr in attrs) {
9993
- let value = attrs[attr];
9994
- if (!(0, types_1.isString)(value)) {
9995
- }
9996
- else if (value !== "" && (value === "NaN" || !isNaN(Number(value)))) {
9997
- value = Number(value);
9998
- }
9999
- else if (value === "false" || value === "true") {
10000
- value = value === "true" ? true : false;
10001
- }
10002
- serialized[attr] = value;
10005
+ for (const [attr, value] of (0, object_1.entries)(attrs)) {
10006
+ const serialized_value = (() => {
10007
+ if ((0, types_1.isString)(value)) {
10008
+ if (value !== "" && (value === "NaN" || !isNaN(Number(value)))) {
10009
+ return Number(value);
10010
+ }
10011
+ else if (value === "false" || value === "true") {
10012
+ return value === "true" ? true : false;
10013
+ }
10014
+ }
10015
+ return value;
10016
+ })();
10017
+ serialized[attr] = serialized_value;
10003
10018
  }
10004
10019
  return serialized;
10005
10020
  }
10006
- function escapeRegex(string) {
10021
+ function escape_regex(string) {
10007
10022
  return string.replace(/[-\/\\^$*+?.()|[\]]/g, "\\$&");
10008
10023
  }
10009
- function extractToken(template, str, tokens) {
10010
- const tokenMapping = {};
10024
+ function extract_token(template, str, tokens) {
10025
+ const token_mapping = new Map();
10011
10026
  for (const match of tokens) {
10012
- tokenMapping[`{${match}}`] = "(.*)";
10027
+ token_mapping.set(`{${match}}`, "(.*)");
10013
10028
  }
10014
- const tokenList = [];
10015
- let regexpTemplate = `^${escapeRegex(template)}$`;
10029
+ const token_list = [];
10030
+ let regexp_template = `^${escape_regex(template)}$`;
10016
10031
  // Find the order of the tokens
10017
- let i, tokenIndex, tokenEntry;
10018
- for (const m in tokenMapping) {
10019
- tokenIndex = template.indexOf(m);
10032
+ let i, token_index, token_entry;
10033
+ for (const [m, replacement] of token_mapping) {
10034
+ token_index = template.indexOf(m);
10020
10035
  // Token found
10021
- if (tokenIndex > -1) {
10022
- regexpTemplate = regexpTemplate.replace(m, tokenMapping[m]);
10023
- tokenEntry = {
10024
- index: tokenIndex,
10036
+ if (token_index > -1) {
10037
+ regexp_template = regexp_template.replace(m, replacement);
10038
+ token_entry = {
10039
+ index: token_index,
10025
10040
  token: m,
10026
10041
  };
10027
- for (i = 0; i < tokenList.length && tokenList[i].index < tokenIndex; i++) {
10028
- ;
10029
- }
10042
+ for (i = 0; i < token_list.length && token_list[i].index < token_index; i++) { }
10030
10043
  // Insert it at index i
10031
- if (i < tokenList.length) {
10032
- tokenList.splice(i, 0, tokenEntry);
10044
+ if (i < token_list.length) {
10045
+ token_list.splice(i, 0, token_entry);
10033
10046
  }
10034
10047
  else {
10035
- tokenList.push(tokenEntry);
10048
+ token_list.push(token_entry);
10036
10049
  }
10037
10050
  }
10038
10051
  }
10039
- regexpTemplate = regexpTemplate.replace(/\{[^{}]+\}/g, ".*");
10040
- const match = new RegExp(regexpTemplate).exec(str);
10041
- let result = null;
10042
- if (match) {
10043
- result = {};
10052
+ regexp_template = regexp_template.replace(/\{[^{}]+\}/g, ".*");
10053
+ const match = new RegExp(regexp_template).exec(str);
10054
+ if (match != null) {
10055
+ const result = {};
10044
10056
  // Find your token entry
10045
- for (i = 0; i < tokenList.length; i++) {
10046
- result[tokenList[i].token.slice(1, -1)] = match[i + 1];
10057
+ for (i = 0; i < token_list.length; i++) {
10058
+ result[token_list[i].token.slice(1, -1)] = match[i + 1];
10047
10059
  }
10060
+ return result;
10061
+ }
10062
+ else {
10063
+ return null;
10048
10064
  }
10049
- return result;
10050
10065
  }
10051
10066
  function element_lookup(root, el_id) {
10052
10067
  let el = root.getElementById(el_id);
@@ -10058,38 +10073,31 @@
10058
10073
  class ReactiveHTMLView extends layout_1.HTMLBoxView {
10059
10074
  constructor() {
10060
10075
  super(...arguments);
10061
- this._parent = null;
10062
10076
  this._changing = false;
10063
- this._event_listeners = {};
10077
+ this._event_listeners = new Map();
10064
10078
  this._mutation_observers = [];
10065
- this._script_fns = {};
10079
+ this._script_fns = new Map();
10066
10080
  this._state = {};
10067
10081
  }
10068
10082
  initialize() {
10069
10083
  super.initialize();
10070
- this.html = (0, html_1.htmlDecode)(this.model.html) || this.model.html;
10084
+ this.html = (0, html_1.html_decode)(this.model.html) ?? this.model.html;
10071
10085
  }
10072
10086
  _recursive_connect(model, update_children, path) {
10073
- for (const prop in model.properties) {
10074
- let subpath;
10075
- if (path.length) {
10076
- subpath = `${path}.${prop}`;
10077
- }
10078
- else {
10079
- subpath = prop;
10080
- }
10081
- const obj = model[prop];
10087
+ for (const prop of model) {
10088
+ const subpath = path.length != 0 ? `${path}.${prop.attr}` : prop.attr;
10089
+ const obj = prop.get_value();
10082
10090
  if (obj == null) {
10083
10091
  continue;
10084
10092
  }
10085
- if (obj.properties != null) {
10093
+ if (obj instanceof model_1.Model) {
10086
10094
  this._recursive_connect(obj, true, subpath);
10087
10095
  }
10088
- this.on_change(model.properties[prop], () => {
10096
+ this.on_change(prop, () => {
10089
10097
  if (update_children) {
10090
- for (const node in this.model.children) {
10091
- if (this.model.children[node] == prop) {
10092
- let children = model[prop];
10098
+ for (const [node, attr] of (0, object_1.entries)(this.model.children)) {
10099
+ if (attr == prop.attr) {
10100
+ let children = prop.get_value();
10093
10101
  if (!(0, types_1.isArray)(children)) {
10094
10102
  children = [children];
10095
10103
  }
@@ -10108,7 +10116,7 @@
10108
10116
  super.connect_signals();
10109
10117
  const { children, events } = this.model.properties;
10110
10118
  this.on_change(children, async () => {
10111
- this.html = (0, html_1.htmlDecode)(this.model.html) || this.model.html;
10119
+ this.html = (0, html_1.html_decode)(this.model.html) ?? this.model.html;
10112
10120
  await this.build_child_views();
10113
10121
  this.invalidate_render();
10114
10122
  });
@@ -10120,32 +10128,33 @@
10120
10128
  this.connect_scripts();
10121
10129
  }
10122
10130
  connect_scripts() {
10123
- const id = this.model.data.id;
10124
- for (const prop in this.model.scripts) {
10125
- const scripts = this.model.scripts[prop];
10131
+ const { id } = this.model.data;
10132
+ for (const [prop, scripts] of (0, object_1.entries)(this.model.scripts)) {
10126
10133
  let data_model = this.model.data;
10127
10134
  let attr;
10128
- if (prop.indexOf(".") >= 0) {
10135
+ if (prop.includes(".")) {
10129
10136
  const path = prop.split(".");
10130
10137
  attr = path[path.length - 1];
10131
10138
  for (const p of path.slice(0, -1)) {
10132
- data_model = data_model[p];
10139
+ const value = data_model.property(p).get_value();
10140
+ (0, assert_1.assert)(value instanceof model_1.Model);
10141
+ data_model = value;
10133
10142
  }
10134
10143
  }
10135
10144
  else {
10136
10145
  attr = prop;
10137
10146
  }
10138
10147
  for (const script of scripts) {
10139
- const decoded_script = (0, html_1.htmlDecode)(script) || script;
10148
+ const decoded_script = (0, html_1.html_decode)(script) ?? script;
10140
10149
  const script_fn = this._render_script(decoded_script, id);
10141
- this._script_fns[prop] = script_fn;
10142
- const property = data_model.properties[attr];
10143
- if (property == null) {
10150
+ this._script_fns.set(prop, script_fn);
10151
+ if (!(attr in data_model.properties)) {
10144
10152
  continue;
10145
10153
  }
10154
+ const property = data_model.property(attr);
10146
10155
  const is_event_param = this.model.event_params.includes(prop);
10147
10156
  this.on_change(property, () => {
10148
- if (!this._changing && !(is_event_param && !data_model[prop])) {
10157
+ if (!this._changing && !(is_event_param && !data_model.property(prop).get_value())) {
10149
10158
  this.run_script(prop);
10150
10159
  if (is_event_param) {
10151
10160
  data_model.setv({ [prop]: false });
@@ -10156,7 +10165,7 @@
10156
10165
  }
10157
10166
  }
10158
10167
  run_script(property, silent = false) {
10159
- const script_fn = this._script_fns[property];
10168
+ const script_fn = this._script_fns.get(property);
10160
10169
  if (script_fn === undefined) {
10161
10170
  if (!silent) {
10162
10171
  console.log(`Script '${property}' could not be found.`);
@@ -10164,15 +10173,17 @@
10164
10173
  return;
10165
10174
  }
10166
10175
  const this_obj = {
10167
- get_records: (property, index) => this.get_records(property, index),
10176
+ get_records(property, index) {
10177
+ return this.get_records(property, index);
10178
+ },
10168
10179
  };
10169
- for (const name in this._script_fns) {
10180
+ for (const name of this._script_fns.keys()) {
10170
10181
  this_obj[name] = () => this.run_script(name);
10171
10182
  }
10172
10183
  return script_fn(this.model, this.model.data, this._state, this, (s) => this.run_script(s), this_obj);
10173
10184
  }
10174
- get_records(property, index = true) {
10175
- return (0, data_1.dict_to_records)(this.model.data[property], index);
10185
+ get_records(property_name, index = true) {
10186
+ return (0, data_1.dict_to_records)(this.model.data.property(property_name), index);
10176
10187
  }
10177
10188
  disconnect_signals() {
10178
10189
  super.disconnect_signals();
@@ -10185,8 +10196,8 @@
10185
10196
  }
10186
10197
  get child_models() {
10187
10198
  const models = [];
10188
- for (const parent in this.model.children) {
10189
- for (const model of this.model.children[parent]) {
10199
+ for (const [_parent, children] of (0, object_1.entries)(this.model.children)) {
10200
+ for (const model of children) {
10190
10201
  if (!(0, types_1.isString)(model)) {
10191
10202
  models.push(model);
10192
10203
  }
@@ -10221,33 +10232,40 @@
10221
10232
  }
10222
10233
  this.model.trigger_event(new html_1.DOMEvent(elname, serialized));
10223
10234
  }
10224
- _render_child(model, el) {
10225
- const view = this._child_views.get(model);
10226
- if (view == null) {
10227
- el.innerHTML = (0, html_1.htmlDecode)(model) || model;
10235
+ _render_child(child, el) {
10236
+ if ((0, types_1.isString)(child)) {
10237
+ el.innerHTML = (0, html_1.html_decode)(child) ?? child;
10228
10238
  }
10229
10239
  else {
10230
- el.appendChild(view.el);
10231
- view.render();
10232
- view.after_render();
10240
+ const view = this._child_views.get(child);
10241
+ if (view == null) {
10242
+ el.innerHTML = "";
10243
+ }
10244
+ else {
10245
+ el.appendChild(view.el);
10246
+ view.render();
10247
+ view.after_render();
10248
+ }
10233
10249
  }
10234
10250
  }
10235
10251
  _render_node(node, children) {
10236
- const id = this.model.data.id;
10237
- if (this.model.looped.indexOf(node) > -1) {
10238
- for (let i = 0; i < children.length; i++) {
10239
- const el = element_lookup(this.shadow_el, `${node}-${i}-${id}`);
10252
+ const { id } = this.model.data;
10253
+ if (this.model.looped.includes(node)) {
10254
+ for (const [child, i] of (0, iterator_1.enumerate)(children)) {
10255
+ const el_id = `${node}-${i}-${id}`;
10256
+ const el = element_lookup(this.shadow_el, el_id);
10240
10257
  if (el == null) {
10241
- console.warn(`DOM node '${node}-${i}-${id}' could not be found. Cannot render children.`);
10258
+ console.warn(`DOM node '${el_id}' could not be found. Cannot render children.`);
10242
10259
  continue;
10243
10260
  }
10244
- this._render_child(children[i], el);
10261
+ this._render_child(child, el);
10245
10262
  }
10246
10263
  }
10247
10264
  else {
10248
- const el = element_lookup(this.shadow_el, `${node}-${id}`);
10265
+ const el_id = `${node}-${id}`;
10266
+ const el = element_lookup(this.shadow_el, el_id);
10249
10267
  if (el == null) {
10250
- console.warn(`DOM node '${node}-${id}' could not be found. Cannot render children.`);
10268
+ console.warn(`DOM node '${el_id}' could not be found. Cannot render children.`);
10251
10269
  return;
10252
10270
  }
10253
10271
  for (const child of children) {
@@ -10256,24 +10274,33 @@
10256
10274
  }
10257
10275
  }
10258
10276
  _render_children() {
10259
- for (const node in this.model.children) {
10260
- let children = this.model.children[node];
10261
- if ((0, types_1.isString)(children)) {
10262
- children = this.model.data[children];
10263
- if (!(0, types_1.isArray)(children)) {
10264
- children = [children];
10277
+ for (const [node, children] of (0, object_1.entries)(this.model.children)) {
10278
+ const computed_children = (() => {
10279
+ if ((0, types_1.isString)(children)) {
10280
+ const value = this.model.data.property(children).get_value();
10281
+ if ((0, types_1.isString)(value)) {
10282
+ return [value];
10283
+ }
10284
+ else if ((0, types_1.isArray)(value)) {
10285
+ return value;
10286
+ }
10287
+ else {
10288
+ (0, assert_1.unreachable)();
10289
+ }
10265
10290
  }
10266
- }
10267
- this._render_node(node, children);
10291
+ else {
10292
+ return children;
10293
+ }
10294
+ })();
10295
+ this._render_node(node, computed_children);
10268
10296
  }
10269
10297
  }
10270
10298
  _render_html(literal, state = {}) {
10271
10299
  let htm = literal.replace(/[`]/g, "\\$&");
10272
- let callbacks = "";
10300
+ let collected_callbacks = "";
10273
10301
  const methods = [];
10274
- for (const elname in this.model.callbacks) {
10275
- for (const callback of this.model.callbacks[elname]) {
10276
- const [cb, method] = callback;
10302
+ for (const [el_name, callbacks] of (0, object_1.entries)(this.model.callbacks)) {
10303
+ for (const [cb, method] of callbacks) {
10277
10304
  let definition;
10278
10305
  htm = htm.replaceAll(`\${${method}}`, `$--{${method}}`);
10279
10306
  if (method.startsWith("script(")) {
@@ -10294,7 +10321,7 @@
10294
10321
  else {
10295
10322
  definition = `
10296
10323
  const ${method} = (event) => {
10297
- let elname = "${elname}"
10324
+ let elname = "${el_name}"
10298
10325
  if (RegExp("\{\{.*loop\.index.*\}\}").test(elname)) {
10299
10326
  const pattern = RegExp(elname.replace(/\{\{(.+?)\}\}/g, String.fromCharCode(92) + "d+"))
10300
10327
  for (const p of event.path) {
@@ -10312,27 +10339,28 @@
10312
10339
  continue;
10313
10340
  }
10314
10341
  methods.push(method);
10315
- callbacks = callbacks + definition;
10342
+ collected_callbacks += definition;
10316
10343
  }
10317
10344
  }
10318
- htm = (htm
10345
+ htm = htm
10319
10346
  .replaceAll("${model.", "$-{model.")
10320
10347
  .replaceAll("${", "${data.")
10321
10348
  .replaceAll("$-{model.", "${model.")
10322
- .replaceAll("$--{", "${"));
10323
- return new Function("view, model, data, state, html, useCallback", `${callbacks}return html\`${htm}\`;`)(this, this.model, this.model.data, state, preact_2.html, hooks_1.useCallback);
10349
+ .replaceAll("$--{", "${");
10350
+ return new Function("view, model, data, state, html, useCallback", `${collected_callbacks}return html\`${htm}\`;`)(this, this.model, this.model.data, state, preact_2.html, hooks_1.useCallback);
10324
10351
  }
10325
10352
  _render_script(literal, id) {
10326
10353
  const scripts = [];
10327
10354
  for (const elname of this.model.nodes) {
10328
10355
  const elvar = elname.replace("-", "_");
10329
- if (literal.indexOf(elvar) === -1) {
10356
+ if (!literal.includes(elvar)) {
10330
10357
  continue;
10331
10358
  }
10332
10359
  const script = `
10333
10360
  let ${elvar} = view.shadow_el.getElementById('${elname}-${id}')
10334
- if (${elvar} == null)
10361
+ if (${elvar} == null) {
10335
10362
  ${elvar} = document.getElementById('${elname}-${id}')
10363
+ }
10336
10364
  if (${elvar} == null) {
10337
10365
  console.warn("DOM node '${elname}' could not be found. Cannot execute callback.")
10338
10366
  return
@@ -10357,8 +10385,8 @@
10357
10385
  this._mutation_observers = [];
10358
10386
  }
10359
10387
  _setup_mutation_observers() {
10360
- const id = this.model.data.id;
10361
- for (const name in this.model.attrs) {
10388
+ const { id } = this.model.data;
10389
+ for (const name of (0, object_1.keys)(this.model.attrs)) {
10362
10390
  const el = element_lookup(this.shadow_el, `${name}-${id}`);
10363
10391
  if (el == null) {
10364
10392
  console.warn(`DOM node '${name}-${id}' could not be found. Cannot set up MutationObserver.`);
@@ -10372,45 +10400,45 @@
10372
10400
  }
10373
10401
  }
10374
10402
  _remove_event_listeners() {
10375
- const id = this.model.data.id;
10376
- for (const node in this._event_listeners) {
10403
+ const { id } = this.model.data;
10404
+ for (const [node, callbacks] of this._event_listeners) {
10377
10405
  const el = element_lookup(this.shadow_el, `${node}-${id}`);
10378
10406
  if (el == null) {
10379
10407
  continue;
10380
10408
  }
10381
- for (const event_name in this._event_listeners[node]) {
10382
- const event_callback = this._event_listeners[node][event_name];
10409
+ for (const [event_name, event_callback] of callbacks) {
10383
10410
  el.removeEventListener(event_name, event_callback);
10384
10411
  }
10385
10412
  }
10386
- this._event_listeners = {};
10413
+ this._event_listeners.clear();
10387
10414
  }
10388
10415
  _setup_event_listeners() {
10389
- const id = this.model.data.id;
10390
- for (const node in this.model.events) {
10416
+ const { id } = this.model.data;
10417
+ const attrs = (0, object_1.dict)(this.model.attrs);
10418
+ for (const [node, node_events] of (0, object_1.entries)(this.model.events)) {
10391
10419
  const el = element_lookup(this.shadow_el, `${node}-${id}`);
10392
10420
  if (el == null) {
10393
10421
  console.warn(`DOM node '${node}-${id}' could not be found. Cannot subscribe to DOM events.`);
10394
10422
  continue;
10395
10423
  }
10396
- const node_events = this.model.events[node];
10397
- for (const event_name in node_events) {
10424
+ for (const [event_name, event_doit] of (0, object_1.entries)(node_events)) {
10398
10425
  const event_callback = (event) => {
10399
10426
  this._send_event(node, event_name, event);
10400
- if (node in this.model.attrs && node_events[event_name]) {
10427
+ if (attrs.has(node) && event_doit) {
10401
10428
  this._update_model(el, node);
10402
10429
  }
10403
10430
  };
10404
10431
  el.addEventListener(event_name, event_callback);
10405
- if (!(node in this._event_listeners)) {
10406
- this._event_listeners[node] = {};
10432
+ let callbacks = this._event_listeners.get(node);
10433
+ if (callbacks === undefined) {
10434
+ this._event_listeners.set(node, callbacks = new Map());
10407
10435
  }
10408
- this._event_listeners[node][event_name] = event_callback;
10436
+ callbacks.set(event_name, event_callback);
10409
10437
  }
10410
10438
  }
10411
10439
  }
10412
10440
  _update(property = null) {
10413
- if (property == null || (this.html.indexOf(`\${${property}}`) > -1)) {
10441
+ if (property == null || this.html.includes(`\${${property}}`)) {
10414
10442
  const rendered = this._render_html(this.html);
10415
10443
  if (rendered == null) {
10416
10444
  return;
@@ -10428,25 +10456,26 @@
10428
10456
  if (this._changing) {
10429
10457
  return;
10430
10458
  }
10459
+ const attr_infos = (0, object_1.dict)(this.model.attrs).get(name) ?? [];
10431
10460
  const attrs = {};
10432
- for (const attr_info of this.model.attrs[name]) {
10461
+ for (const attr_info of attr_infos) {
10433
10462
  const [attr, tokens, template] = attr_info;
10434
- let value = attr === "children" ? el.innerHTML : el[attr];
10463
+ let value = attr == "children" ? el.innerHTML : el[attr];
10435
10464
  if (tokens.length === 1 && (`{${tokens[0]}}` === template)) {
10436
10465
  attrs[tokens[0]] = value;
10437
10466
  }
10438
10467
  else if ((0, types_1.isString)(value)) {
10439
- value = extractToken(template, value, tokens);
10468
+ value = extract_token(template, value, tokens);
10440
10469
  if (value == null) {
10441
10470
  console.warn(`Could not resolve parameters in ${name} element ${attr} attribute value ${value}.`);
10442
10471
  }
10443
10472
  else {
10444
- for (const param in value) {
10445
- if (value[param] === undefined) {
10473
+ for (const [param, param_val] of (0, object_1.entries)(value)) {
10474
+ if (param_val === undefined) {
10446
10475
  console.warn(`Could not resolve ${param} in ${name} element ${attr} attribute value ${value}.`);
10447
10476
  }
10448
10477
  else {
10449
- attrs[param] = value[param];
10478
+ attrs[param] = param_val;
10450
10479
  }
10451
10480
  }
10452
10481
  }
@@ -10477,17 +10506,17 @@
10477
10506
  ReactiveHTML.__module__ = "panel.models.reactive_html";
10478
10507
  (() => {
10479
10508
  _a.prototype.default_view = ReactiveHTMLView;
10480
- _a.define(({ List, Any, Str }) => ({
10481
- attrs: [Any, {}],
10482
- callbacks: [Any, {}],
10483
- children: [Any, {}],
10484
- data: [Any],
10509
+ _a.define(({ Bool, Str, List, Dict, Tuple, Or, Ref }) => ({
10510
+ attrs: [Dict(List(Tuple(Str, List(Str), Str))), {}],
10511
+ callbacks: [Dict(List(Tuple(Str, Str))), {}],
10512
+ children: [Dict(Or(List(Or(Ref(ui_element_1.UIElement), Str)), Str)), {}],
10513
+ data: [Ref(model_1.Model)],
10485
10514
  event_params: [List(Str), []],
10486
- events: [Any, {}],
10515
+ events: [Dict(Dict(Bool)), {}],
10487
10516
  html: [Str, ""],
10488
10517
  looped: [List(Str), []],
10489
10518
  nodes: [List(Str), []],
10490
- scripts: [Any, {}],
10519
+ scripts: [Dict(List(Str)), {}],
10491
10520
  }));
10492
10521
  })();
10493
10522
  },
@@ -10999,7 +11028,7 @@
10999
11028
  "739cca6576": /* models/speech_to_text.js */ function _(require, module, exports, __esModule, __esExport) {
11000
11029
  var _a;
11001
11030
  __esModule();
11002
- const layout_1 = require("73d6aee8f5") /* ./layout */;
11031
+ const layout_1 = require("c37096b5ea") /* ./layout */;
11003
11032
  const iconStarted = `<svg xmlns="http://www.w3.org/2000/svg" height="22px" style="vertical-align: middle;" fill="currentColor" class="bi bi-mic" viewBox="0 0 16 16">
11004
11033
  <path fill-rule="evenodd" d="M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5z"/>
11005
11034
  <path fill-rule="evenodd" d="M10 8V3a2 2 0 1 0-4 0v5a2 2 0 1 0 4 0zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3z"/>
@@ -11430,7 +11459,7 @@
11430
11459
  __esModule();
11431
11460
  const dom_1 = require("@bokehjs/core/dom");
11432
11461
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
11433
- const layout_1 = require("73d6aee8f5") /* ./layout */;
11462
+ const layout_1 = require("c37096b5ea") /* ./layout */;
11434
11463
  class KeystrokeEvent extends bokeh_events_1.ModelEvent {
11435
11464
  constructor(key) {
11436
11465
  super();
@@ -11549,10 +11578,55 @@
11549
11578
  }));
11550
11579
  })();
11551
11580
  },
11581
+ "8be416b160": /* models/text_input.js */ function _(require, module, exports, __esModule, __esExport) {
11582
+ var _a, _b;
11583
+ __esModule();
11584
+ const text_input_1 = require("@bokehjs/models/widgets/text_input");
11585
+ const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
11586
+ class EnterEvent extends bokeh_events_1.ModelEvent {
11587
+ constructor(value_input) {
11588
+ super();
11589
+ this.value_input = value_input;
11590
+ }
11591
+ get event_values() {
11592
+ return { model: this.origin, value_input: this.value_input };
11593
+ }
11594
+ }
11595
+ exports.EnterEvent = EnterEvent;
11596
+ _a = EnterEvent;
11597
+ EnterEvent.__name__ = "EnterEvent";
11598
+ (() => {
11599
+ _a.prototype.event_name = "enter-pressed";
11600
+ })();
11601
+ class TextInputView extends text_input_1.TextInputView {
11602
+ _keyup(event) {
11603
+ super._keyup(event);
11604
+ if (event.key == "Enter") {
11605
+ const { value_input } = this.model;
11606
+ this.model.trigger_event(new EnterEvent(value_input));
11607
+ }
11608
+ }
11609
+ }
11610
+ exports.TextInputView = TextInputView;
11611
+ TextInputView.__name__ = "TextInputView";
11612
+ class TextInput extends text_input_1.TextInput {
11613
+ constructor(attrs) {
11614
+ super(attrs);
11615
+ }
11616
+ }
11617
+ exports.TextInput = TextInput;
11618
+ _b = TextInput;
11619
+ TextInput.__name__ = "TextInput";
11620
+ TextInput.__module__ = "panel.models.widgets";
11621
+ (() => {
11622
+ _b.prototype.default_view = TextInputView;
11623
+ _b.define(({}) => ({}));
11624
+ })();
11625
+ },
11552
11626
  "a04eb51988": /* models/text_to_speech.js */ function _(require, module, exports, __esModule, __esExport) {
11553
11627
  var _a;
11554
11628
  __esModule();
11555
- const layout_1 = require("73d6aee8f5") /* ./layout */;
11629
+ const layout_1 = require("c37096b5ea") /* ./layout */;
11556
11630
  function toVoicesList(voices) {
11557
11631
  const voicesList = [];
11558
11632
  for (const voice of voices) {
@@ -11814,7 +11888,7 @@
11814
11888
  "3584638c04": /* models/trend.js */ function _(require, module, exports, __esModule, __esExport) {
11815
11889
  var _a;
11816
11890
  __esModule();
11817
- const layout_1 = require("73d6aee8f5") /* ./layout */;
11891
+ const layout_1 = require("c37096b5ea") /* ./layout */;
11818
11892
  const build_views_1 = require("@bokehjs/core/build_views");
11819
11893
  const plots_1 = require("@bokehjs/models/plots");
11820
11894
  const glyphs_1 = require("@bokehjs/models/glyphs");
@@ -12038,7 +12112,7 @@
12038
12112
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
12039
12113
  const types_1 = require("@bokehjs/core/util/types");
12040
12114
  const layout_dom_1 = require("@bokehjs/models/layouts/layout_dom");
12041
- const layout_1 = require("73d6aee8f5") /* ./layout */;
12115
+ const layout_1 = require("c37096b5ea") /* ./layout */;
12042
12116
  const debounce_1 = require("99a25e6992") /* debounce */;
12043
12117
  class VegaEvent extends bokeh_events_1.ModelEvent {
12044
12118
  constructor(data) {
@@ -12226,7 +12300,7 @@
12226
12300
  __esModule();
12227
12301
  const tslib_1 = require("tslib");
12228
12302
  const dom_1 = require("@bokehjs/core/dom");
12229
- const layout_1 = require("73d6aee8f5") /* ./layout */;
12303
+ const layout_1 = require("c37096b5ea") /* ./layout */;
12230
12304
  const video_css_1 = tslib_1.__importDefault(require("dfe21e6f1b") /* ../styles/models/video.css */);
12231
12305
  class VideoView extends layout_1.HTMLBoxView {
12232
12306
  constructor() {
@@ -12391,7 +12465,7 @@
12391
12465
  "f8afc4e661": /* models/videostream.js */ function _(require, module, exports, __esModule, __esExport) {
12392
12466
  var _a;
12393
12467
  __esModule();
12394
- const layout_1 = require("73d6aee8f5") /* ./layout */;
12468
+ const layout_1 = require("c37096b5ea") /* ./layout */;
12395
12469
  class VideoStreamView extends layout_1.HTMLBoxView {
12396
12470
  constructor() {
12397
12471
  super(...arguments);
@@ -12516,7 +12590,7 @@
12516
12590
  const column_data_source_1 = require("@bokehjs/models/sources/column_data_source");
12517
12591
  const bokeh_events_1 = require("@bokehjs/core/bokeh_events");
12518
12592
  const debounce_1 = require("99a25e6992") /* debounce */;
12519
- const layout_1 = require("73d6aee8f5") /* ./layout */;
12593
+ const layout_1 = require("c37096b5ea") /* ./layout */;
12520
12594
  class VizzuEvent extends bokeh_events_1.ModelEvent {
12521
12595
  constructor(data) {
12522
12596
  super();
@@ -12789,7 +12863,7 @@
12789
12863
  const object_1 = require("@bokehjs/core/util/object");
12790
12864
  const color_mapper_1 = require("@bokehjs/models/mappers/color_mapper");
12791
12865
  const kinds_1 = require("@bokehjs/core/kinds");
12792
- const layout_1 = require("73d6aee8f5") /* ../layout */;
12866
+ const layout_1 = require("c37096b5ea") /* ../layout */;
12793
12867
  const util_1 = require("df9946ff52") /* ./util */;
12794
12868
  const vtkcolorbar_1 = require("b1d68776a9") /* ./vtkcolorbar */;
12795
12869
  const vtkaxes_1 = require("0379dcf1cd") /* ./vtkaxes */;
@@ -21008,5 +21082,5 @@
21008
21082
  }
21009
21083
  exports.initialize_fullscreen_render = initialize_fullscreen_render;
21010
21084
  },
21011
- }, "4e90918c0a", {"index":"4e90918c0a","models/index":"38670592ce","models/ace":"c780fc99fd","models/layout":"73d6aee8f5","models/audio":"fd59c985b3","models/browser":"85211a0a5b","models/button":"1db93211cd","models/button_icon":"1738ddeb3a","models/icon":"17193475a8","models/card":"aaa0c51c8d","models/column":"aab20b9d6a","styles/models/card.css":"dfbedd1d49","models/checkbox_button_group":"51fbe9e2d0","models/chatarea_input":"27a077673d","models/textarea_input":"b7d595d74a","models/comm_manager":"352943c042","models/customselect":"92bbd30bd1","models/tabulator":"887daef873","models/data":"be689f0377","models/datetime_picker":"ddf98634bb","models/deckgl":"dc03aab885","models/tooltips":"f8f8ea4284","models/echarts":"04cbffdfe0","models/event-to-object":"2cc1a33000","models/feed":"976c02c0a8","models/file_download":"3ead851ca6","models/html":"89d2d3667a","models/ipywidget":"8a8089cbf3","models/json":"7eff964d3e","models/jsoneditor":"d57683bd1f","models/katex":"f672d71a9f","models/location":"bd8e0fe48b","models/mathjax":"ec353a3d9a","models/pdf":"cf33f23f5c","models/perspective":"8b1673a40b","styles/models/perspective.css":"2e2913ea54","models/player":"f06104d237","models/plotly":"6f2064dc74","models/util":"27e2a99e99","styles/models/plotly.css":"ce7c8e2a4f","models/progress":"aded75e266","models/quill":"c72e00086f","models/radio_button_group":"25e2d7c208","models/reactive_html":"6cfc3f348e","models/singleselect":"168c4d0ebd","models/speech_to_text":"739cca6576","models/state":"92822cb73a","models/tabs":"2231cdc549","models/terminal":"121f00bd6f","models/text_to_speech":"a04eb51988","models/toggle_icon":"ad985f285e","models/tooltip_icon":"ae3a172647","models/trend":"3584638c04","models/vega":"119dc23765","models/video":"79dc37b888","styles/models/video.css":"dfe21e6f1b","models/videostream":"f8afc4e661","models/vizzu":"470ce1dcbc","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":"4797a2858f","models/vtk/vtksynchronized":"a4e5946204","models/vtk/panel_fullscreen_renwin_sync":"5e89c7b3eb"}, {});});
21085
+ }, "4e90918c0a", {"index":"4e90918c0a","models/index":"62567e6811","models/ace":"c780fc99fd","models/layout":"c37096b5ea","models/audio":"fd59c985b3","models/browser":"85211a0a5b","models/button":"1db93211cd","models/button_icon":"1738ddeb3a","models/icon":"17193475a8","models/card":"aaa0c51c8d","models/column":"aab20b9d6a","styles/models/card.css":"edc7ee0090","models/checkbox_button_group":"51fbe9e2d0","models/chatarea_input":"27a077673d","models/textarea_input":"b7d595d74a","models/comm_manager":"a5b1a17220","models/customselect":"92bbd30bd1","models/tabulator":"887daef873","models/data":"be689f0377","models/datetime_picker":"ddf98634bb","models/deckgl":"dc03aab885","models/tooltips":"f8f8ea4284","models/echarts":"04cbffdfe0","models/event-to-object":"2cc1a33000","models/feed":"976c02c0a8","models/file_download":"3ead851ca6","models/html":"9cfeb137e6","models/ipywidget":"8a8089cbf3","models/json":"7eff964d3e","models/jsoneditor":"d57683bd1f","models/katex":"f672d71a9f","models/location":"bd8e0fe48b","models/mathjax":"ec353a3d9a","models/pdf":"f87ad1873c","models/perspective":"8b1673a40b","styles/models/perspective.css":"2e2913ea54","models/player":"f06104d237","models/plotly":"6f2064dc74","models/util":"27e2a99e99","styles/models/plotly.css":"ce7c8e2a4f","models/progress":"aded75e266","models/quill":"c72e00086f","models/radio_button_group":"25e2d7c208","models/reactive_html":"4c1a1063b3","models/singleselect":"168c4d0ebd","models/speech_to_text":"739cca6576","models/state":"92822cb73a","models/tabs":"2231cdc549","models/terminal":"121f00bd6f","models/text_input":"8be416b160","models/text_to_speech":"a04eb51988","models/toggle_icon":"ad985f285e","models/tooltip_icon":"ae3a172647","models/trend":"3584638c04","models/vega":"119dc23765","models/video":"79dc37b888","styles/models/video.css":"dfe21e6f1b","models/videostream":"f8afc4e661","models/vizzu":"470ce1dcbc","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":"4797a2858f","models/vtk/vtksynchronized":"a4e5946204","models/vtk/panel_fullscreen_renwin_sync":"5e89c7b3eb"}, {});});
21012
21086
  //# sourceMappingURL=panel.js.map