@yuneta/gobj-ui 5.4.0 → 5.6.0

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.
@@ -799,7 +799,7 @@ function secondary_nav_renders(item, layout) {
799
799
  /***************************************************************
800
800
  * Constants
801
801
  ***************************************************************/
802
- var GCLASS_NAME$17 = "C_YUI_SHELL";
802
+ var GCLASS_NAME$18 = "C_YUI_SHELL";
803
803
  var __last_shell__ = null;
804
804
  var ZONE_IDS = [
805
805
  "top",
@@ -821,7 +821,7 @@ var LAYER_DEFS = [
821
821
  /***************************************************************
822
822
  * Attrs
823
823
  ***************************************************************/
824
- var attrs_table$17 = [
824
+ var attrs_table$18 = [
825
825
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
826
826
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_JSON, "config", 0, null, "Shell declarative config (zones, menu, stages, toolbar)"),
827
827
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "default_route", 0, "", "Fallback route if hash is empty"),
@@ -832,7 +832,7 @@ var attrs_table$17 = [
832
832
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$container", 0, null, "Root HTMLElement of the shell"),
833
833
  (0, _yuneta_gobj_js.SDATA_END)()
834
834
  ];
835
- var PRIVATE_DATA$17 = {
835
+ var PRIVATE_DATA$18 = {
836
836
  zones: {},
837
837
  layers: {},
838
838
  stages: {},
@@ -854,14 +854,14 @@ var PRIVATE_DATA$17 = {
854
854
  conn_nodes: [],
855
855
  active_dropdown: null
856
856
  };
857
- var __gclass__$17 = null;
857
+ var __gclass__$18 = null;
858
858
  /******************************
859
859
  * Framework Methods
860
860
  ******************************/
861
861
  /***************************************************************
862
862
  * Framework Method: Create
863
863
  ***************************************************************/
864
- function mt_create$17(gobj) {
864
+ function mt_create$18(gobj) {
865
865
  const subscriber = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "subscriber");
866
866
  if (subscriber) (0, _yuneta_gobj_js.gobj_subscribe_event)(gobj, null, {}, subscriber);
867
867
  __last_shell__ = gobj;
@@ -870,7 +870,7 @@ function mt_create$17(gobj) {
870
870
  /***************************************************************
871
871
  * Framework Method: Start
872
872
  ***************************************************************/
873
- function mt_start$14(gobj) {
873
+ function mt_start$15(gobj) {
874
874
  let config = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "config") || {};
875
875
  let priv = gobj.priv;
876
876
  if (!validate_config(config)) {
@@ -939,7 +939,7 @@ function mt_start$14(gobj) {
939
939
  /***************************************************************
940
940
  * Framework Method: Stop
941
941
  ***************************************************************/
942
- function mt_stop$14(gobj) {
942
+ function mt_stop$15(gobj) {
943
943
  let priv = gobj.priv;
944
944
  if (!priv) return;
945
945
  close_toolbar_dropdown(gobj);
@@ -980,7 +980,7 @@ function mt_stop$14(gobj) {
980
980
  /***************************************************************
981
981
  * Framework Method: Destroy
982
982
  ***************************************************************/
983
- function mt_destroy$17(gobj) {
983
+ function mt_destroy$18(gobj) {
984
984
  close_toolbar_dropdown(gobj);
985
985
  let $container = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$container");
986
986
  if ($container && $container.parentNode) $container.parentNode.removeChild($container);
@@ -1590,8 +1590,7 @@ function build_view_gobj(gobj, entry, route, stage) {
1590
1590
  }
1591
1591
  stage.el.appendChild($view);
1592
1592
  (0, _yuneta_gobj_js.gobj_start)(view);
1593
- let priv = gobj.priv;
1594
- if (priv && typeof priv.translator === "function" && target.gclass === "C_YUI_NAV") (0, _yuneta_gobj_js.refresh_language)($view, priv.translator);
1593
+ if (target.gclass === "C_YUI_NAV") yui_shell_translate(gobj, $view);
1595
1594
  return view;
1596
1595
  }
1597
1596
  function safe_id(s) {
@@ -1657,17 +1656,59 @@ function build_toolbar(gobj, config) {
1657
1656
  $zone.appendChild($bar);
1658
1657
  }
1659
1658
  /************************************************************
1659
+ * The badge node of a toolbar item — the little count pinned to
1660
+ * the corner of its icon (unread notifications, active alarms).
1661
+ *
1662
+ * ALWAYS rendered, hidden when empty, so the runtime setter has a
1663
+ * node to write into and does not have to rebuild the button.
1664
+ *
1665
+ * EMPTY IS 0, "" AND null ALIKE: a badge reading "0" is worse than
1666
+ * no badge — it draws the eye to say nothing. A count is only
1667
+ * worth a pixel when there IS something.
1668
+ *
1669
+ * Capped at 99+: the toolbar is a fixed-width row, and a four
1670
+ * digit pill pushes the items next to it off a phone screen.
1671
+ *
1672
+ * role="status" and NOT aria-hidden, deliberately. The button
1673
+ * carries an explicit aria-label, and an explicit label REPLACES
1674
+ * the element's content for a screen reader — so a badge inside
1675
+ * it would be silent. As its own live region it is both read and
1676
+ * announced when the count changes, which is the whole point of a
1677
+ * badge that means "something needs you".
1678
+ ************************************************************/
1679
+ function badge_text(value) {
1680
+ if (value === null || value === void 0 || value === false) return "";
1681
+ if (typeof value === "number") {
1682
+ if (!isFinite(value) || value <= 0) return "";
1683
+ return value > 99 ? "99+" : String(Math.floor(value));
1684
+ }
1685
+ return String(value).trim();
1686
+ }
1687
+ function badge_node(value) {
1688
+ let text = badge_text(value);
1689
+ let attrs = {
1690
+ class: "yui-toolbar-badge",
1691
+ role: "status"
1692
+ };
1693
+ if (!text) attrs.hidden = "hidden";
1694
+ return [
1695
+ "span",
1696
+ attrs,
1697
+ text
1698
+ ];
1699
+ }
1700
+ /************************************************************
1660
1701
  * Renderer for the default ("action") item kind.
1661
1702
  ************************************************************/
1662
1703
  function build_toolbar_action_item(gobj, it) {
1663
1704
  let children = [];
1664
1705
  if (!(0, _yuneta_gobj_js.empty_string)(it.icon)) children.push([
1665
1706
  "span",
1666
- { class: "icon" },
1667
- ["i", {
1707
+ { class: "icon yui-toolbar-icon" },
1708
+ [["i", {
1668
1709
  class: it.icon,
1669
1710
  "aria-hidden": "true"
1670
- }]
1711
+ }], badge_node(it.badge)]
1671
1712
  ]);
1672
1713
  if (!(0, _yuneta_gobj_js.empty_string)(it.name)) children.push([
1673
1714
  "span",
@@ -1962,7 +2003,7 @@ function open_toolbar_dropdown(gobj, item, action, $trigger) {
1962
2003
  } else style_parts.push(`left:${Math.max(0, Math.round(rect.left))}px`);
1963
2004
  $panel.setAttribute("style", style_parts.join(";"));
1964
2005
  priv.layers.popup.appendChild($panel);
1965
- if (typeof priv.translator === "function") (0, _yuneta_gobj_js.refresh_language)($panel, priv.translator);
2006
+ yui_shell_translate(gobj, $panel);
1966
2007
  let backdrop = (ev) => {
1967
2008
  if ($panel.contains(ev.target)) return;
1968
2009
  if ($trigger && $trigger.contains(ev.target)) return;
@@ -2375,14 +2416,14 @@ function ac_nav_item_close(gobj, event, kw, src) {
2375
2416
  /***************************************************************
2376
2417
  * FSM
2377
2418
  ***************************************************************/
2378
- var gmt$17 = {
2379
- mt_create: mt_create$17,
2380
- mt_start: mt_start$14,
2381
- mt_stop: mt_stop$14,
2382
- mt_destroy: mt_destroy$17
2419
+ var gmt$18 = {
2420
+ mt_create: mt_create$18,
2421
+ mt_start: mt_start$15,
2422
+ mt_stop: mt_stop$15,
2423
+ mt_destroy: mt_destroy$18
2383
2424
  };
2384
- function create_gclass$17(gclass_name) {
2385
- if (__gclass__$17) {
2425
+ function create_gclass$18(gclass_name) {
2426
+ if (__gclass__$18) {
2386
2427
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
2387
2428
  return -1;
2388
2429
  }
@@ -2403,19 +2444,19 @@ function create_gclass$17(gclass_name) {
2403
2444
  null
2404
2445
  ]
2405
2446
  ]]];
2406
- __gclass__$17 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
2447
+ __gclass__$18 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
2407
2448
  ["EV_NAV_CLICKED", 0],
2408
2449
  ["EV_DRAWER_CLOSE_REQUESTED", 0],
2409
2450
  ["EV_NAV_ITEM_CLOSE", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_PUBLIC_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS],
2410
2451
  ["EV_ROUTE_REQUESTED", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_PUBLIC_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS],
2411
2452
  ["EV_ROUTE_CHANGED", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_PUBLIC_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS],
2412
2453
  ["EV_LANGUAGE_CHANGED", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_PUBLIC_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS]
2413
- ], states, gmt$17, 0, attrs_table$17, PRIVATE_DATA$17, 0, 0, 0, _yuneta_gobj_js.gclass_flag_t.gcflag_no_check_output_events);
2414
- if (!__gclass__$17) return -1;
2454
+ ], states, gmt$18, 0, attrs_table$18, PRIVATE_DATA$18, 0, 0, 0, _yuneta_gobj_js.gclass_flag_t.gcflag_no_check_output_events);
2455
+ if (!__gclass__$18) return -1;
2415
2456
  return 0;
2416
2457
  }
2417
2458
  function register_c_yui_shell() {
2418
- return create_gclass$17(GCLASS_NAME$17);
2459
+ return create_gclass$18(GCLASS_NAME$18);
2419
2460
  }
2420
2461
  /***************************************************************
2421
2462
  * Public helpers — exported alongside register_c_yui_shell().
@@ -2474,7 +2515,7 @@ function remembered_position(gobj, route) {
2474
2515
  function yui_shell_of(gobj) {
2475
2516
  let g = gobj;
2476
2517
  while (g) {
2477
- if ((0, _yuneta_gobj_js.gobj_gclass_name)(g) === GCLASS_NAME$17) return g;
2518
+ if ((0, _yuneta_gobj_js.gobj_gclass_name)(g) === GCLASS_NAME$18) return g;
2478
2519
  g = (0, _yuneta_gobj_js.gobj_parent)(g);
2479
2520
  }
2480
2521
  return __last_shell__;
@@ -2611,9 +2652,10 @@ function yui_shell_refresh_avatars(shell_gobj) {
2611
2652
  * Register the host's i18n translator (a t-function:
2612
2653
  * key => translated string). The host still translates the
2613
2654
  * static shell tree itself via refresh_language($container, t);
2614
- * this is only so the shell can translate DOM it builds LAZILY
2615
- * and OUTSIDE $containertoday the toolbar dropdown panel.
2616
- * Optional: with no translator the panel renders raw keys
2655
+ * this is only so the shell and the library components that
2656
+ * build DOM under it can translate DOM built LAZILY, after
2657
+ * that one-shot pass and often outside $container.
2658
+ * Optional: with no translator such DOM renders raw keys
2617
2659
  * (the previous behaviour).
2618
2660
  ************************************************************/
2619
2661
  function yui_shell_set_translator(shell_gobj, t) {
@@ -2622,6 +2664,33 @@ function yui_shell_set_translator(shell_gobj, t) {
2622
2664
  priv.translator = typeof t === "function" ? t : null;
2623
2665
  }
2624
2666
  /************************************************************
2667
+ * Apply the registered translator to a FRESHLY BUILT subtree.
2668
+ *
2669
+ * Carrying the `i18n` key on a node is not enough for it to
2670
+ * render translated: the node is born holding the raw English
2671
+ * key, and the host's refresh_language() passes walk what
2672
+ * ALREADY exists — the shell tree at start up, document.body on
2673
+ * a language switch. Anything built after that (a dropdown
2674
+ * panel, a nav a node renders when you walk into it) is reached
2675
+ * by neither, so it renders the key: lower-case English that
2676
+ * never changes language, i.e. exactly what a MISSING key looks
2677
+ * like.
2678
+ *
2679
+ * The division of labour, unchanged: LIBRARY-built DOM is
2680
+ * translated through here; APP view gclasses translate their own
2681
+ * DOM (they own a `t` — see mount_view).
2682
+ *
2683
+ * Silent no-op with no shell or no translator: an app that never
2684
+ * registered one keeps the previous behaviour instead of losing
2685
+ * its chrome.
2686
+ ************************************************************/
2687
+ function yui_shell_translate(shell_gobj, $el) {
2688
+ if (!$el || !shell_gobj || !(0, _yuneta_gobj_js.is_gobj)(shell_gobj)) return;
2689
+ let priv = shell_gobj.priv;
2690
+ if (!priv || typeof priv.translator !== "function") return;
2691
+ (0, _yuneta_gobj_js.refresh_language)($el, priv.translator);
2692
+ }
2693
+ /************************************************************
2625
2694
  * Set the backend-connection state painted by every
2626
2695
  * type:"connection" toolbar item. Host/event-driven: the
2627
2696
  * app calls this from its transport handlers (EV_ON_OPEN →
@@ -2650,6 +2719,41 @@ function yui_shell_set_toolbar_item_icon(shell_gobj, item_id, icon_class) {
2650
2719
  if ($i) $i.className = icon_class;
2651
2720
  }
2652
2721
  /************************************************************
2722
+ * Set (or clear) a toolbar item's badge — the count pinned to
2723
+ * its icon.
2724
+ *
2725
+ * yui_shell_set_toolbar_item_badge(shell, "alarms", 3);
2726
+ * yui_shell_set_toolbar_item_badge(shell, "alarms", 0); // hidden
2727
+ *
2728
+ * This is the API that matters: a count is a RUNTIME fact. The
2729
+ * `badge` field of a toolbar item only seeds the first paint, and
2730
+ * an app whose number never changes did not need a badge.
2731
+ *
2732
+ * 0 / "" / null / false all clear it, and a number over 99 renders
2733
+ * "99+" — see badge_node(). Accepts a string for the states that
2734
+ * are not counts ("!", "…").
2735
+ *
2736
+ * Silent no-op on an unknown item id: a toolbar that does not
2737
+ * declare the item (an app without alarms) must not be an error
2738
+ * at every tick of whatever feeds the number.
2739
+ ************************************************************/
2740
+ function yui_shell_set_toolbar_item_badge(shell_gobj, item_id, value) {
2741
+ if (!shell_gobj || !(0, _yuneta_gobj_js.is_gobj)(shell_gobj) || (0, _yuneta_gobj_js.empty_string)(item_id)) return;
2742
+ let $container = (0, _yuneta_gobj_js.gobj_read_attr)(shell_gobj, "$container");
2743
+ if (!$container) return;
2744
+ let $badge = $container.querySelector(`[data-toolbar-item-id="${item_id}"] .yui-toolbar-badge`);
2745
+ if (!$badge) return;
2746
+ let text = badge_text(value);
2747
+ if (!text) {
2748
+ $badge.textContent = "";
2749
+ $badge.setAttribute("hidden", "hidden");
2750
+ return;
2751
+ }
2752
+ if ($badge.textContent === text && !$badge.hasAttribute("hidden")) return;
2753
+ $badge.textContent = text;
2754
+ $badge.removeAttribute("hidden");
2755
+ }
2756
+ /************************************************************
2653
2757
  * Programmatic close of any open toolbar dropdown. Useful for
2654
2758
  * external triggers (e.g. EV_LOGOUT firing from elsewhere) that
2655
2759
  * want to dismiss whatever menu is on screen.
@@ -3131,7 +3235,7 @@ function yui_shell_confirm_yesnocancel(shell, message, opts) {
3131
3235
  /***************************************************************
3132
3236
  * Constants
3133
3237
  ***************************************************************/
3134
- var GCLASS_NAME$16 = "C_YUI_WINDOW";
3238
+ var GCLASS_NAME$17 = "C_YUI_WINDOW";
3135
3239
  var WC_MIN = "<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><rect x=\"3\" y=\"11\" width=\"10\" height=\"1.6\" rx=\"0.8\" fill=\"currentColor\"/></svg>";
3136
3240
  var WC_MAX = "<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><rect x=\"3.3\" y=\"3.3\" width=\"9.4\" height=\"9.4\" rx=\"1.6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/></svg>";
3137
3241
  var WC_RESTORE = "<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><rect x=\"5.2\" y=\"3\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"/><rect x=\"3\" y=\"5.2\" width=\"7.8\" height=\"7.8\" rx=\"1.3\" fill=\"var(--bulma-scheme-main)\" stroke=\"currentColor\" stroke-width=\"1.4\"/></svg>";
@@ -3140,7 +3244,7 @@ var MOBILE_MAX = 768;
3140
3244
  /***************************************************************
3141
3245
  * Data
3142
3246
  ***************************************************************/
3143
- var attrs_table$16 = [
3247
+ var attrs_table$17 = [
3144
3248
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
3145
3249
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$parent", 0, null, "$container will be appended to $parent if not null, else to document.body"),
3146
3250
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_INTEGER, "x", 0, "300", "X position"),
@@ -3178,15 +3282,15 @@ var attrs_table$16 = [
3178
3282
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "win_resize_handler", 0, null, "Internal: native window 'resize' listener"),
3179
3283
  (0, _yuneta_gobj_js.SDATA_END)()
3180
3284
  ];
3181
- var PRIVATE_DATA$16 = { prevSize: 0 };
3182
- var __gclass__$16 = null;
3285
+ var PRIVATE_DATA$17 = { prevSize: 0 };
3286
+ var __gclass__$17 = null;
3183
3287
  /******************************
3184
3288
  * Framework Methods
3185
3289
  ******************************/
3186
3290
  /***************************************************************
3187
3291
  * Framework Method: Create
3188
3292
  ***************************************************************/
3189
- function mt_create$16(gobj) {
3293
+ function mt_create$17(gobj) {
3190
3294
  const subscriber = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "subscriber");
3191
3295
  if (subscriber) (0, _yuneta_gobj_js.gobj_subscribe_event)(gobj, null, {}, subscriber);
3192
3296
  (0, _yuneta_gobj_js.gobj_write_attr)(gobj, "window_id", "window-" + (0, _yuneta_gobj_js.clean_name)((0, _yuneta_gobj_js.gobj_short_name)(gobj)));
@@ -3222,7 +3326,7 @@ function mt_create$16(gobj) {
3222
3326
  /***************************************************************
3223
3327
  * Framework Method: Destroy
3224
3328
  ***************************************************************/
3225
- function mt_destroy$16(gobj) {
3329
+ function mt_destroy$17(gobj) {
3226
3330
  let manager = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "manager");
3227
3331
  if (manager) (0, _yuneta_gobj_js.gobj_send_event)(manager, "EV_UNREGISTER_WINDOW", { window: gobj }, gobj);
3228
3332
  let back_overlay = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "back_overlay");
@@ -3951,15 +4055,15 @@ function ac_close(gobj, event, kw, src) {
3951
4055
  /***************************
3952
4056
  * FSM
3953
4057
  ***************************/
3954
- var gmt$16 = {
3955
- mt_create: mt_create$16,
3956
- mt_destroy: mt_destroy$16
4058
+ var gmt$17 = {
4059
+ mt_create: mt_create$17,
4060
+ mt_destroy: mt_destroy$17
3957
4061
  };
3958
4062
  /***************************************************************
3959
4063
  * Create the GClass
3960
4064
  ***************************************************************/
3961
- function create_gclass$16(gclass_name) {
3962
- if (__gclass__$16) {
4065
+ function create_gclass$17(gclass_name) {
4066
+ if (__gclass__$17) {
3963
4067
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
3964
4068
  return -1;
3965
4069
  }
@@ -3985,7 +4089,7 @@ function create_gclass$16(gclass_name) {
3985
4089
  null
3986
4090
  ]
3987
4091
  ]]];
3988
- __gclass__$16 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
4092
+ __gclass__$17 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
3989
4093
  ["EV_WINDOW_TO_CLOSE", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS],
3990
4094
  ["EV_WINDOW_MOVED", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS],
3991
4095
  ["EV_WINDOW_RESIZED", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS],
@@ -3993,15 +4097,15 @@ function create_gclass$16(gclass_name) {
3993
4097
  ["EV_SHOW", 0],
3994
4098
  ["EV_HIDE", 0],
3995
4099
  ["EV_CLOSE_WINDOW", 0]
3996
- ], states, gmt$16, 0, attrs_table$16, PRIVATE_DATA$16, 0, 0, 0, 0);
3997
- if (!__gclass__$16) return -1;
4100
+ ], states, gmt$17, 0, attrs_table$17, PRIVATE_DATA$17, 0, 0, 0, 0);
4101
+ if (!__gclass__$17) return -1;
3998
4102
  return 0;
3999
4103
  }
4000
4104
  /***************************************************************
4001
4105
  * Register GClass
4002
4106
  ***************************************************************/
4003
4107
  function register_c_yui_window() {
4004
- return create_gclass$16(GCLASS_NAME$16);
4108
+ return create_gclass$17(GCLASS_NAME$17);
4005
4109
  }
4006
4110
  //#endregion
4007
4111
  //#region src/c_yui_window_manager.js
@@ -4039,13 +4143,13 @@ function register_c_yui_window() {
4039
4143
  /***************************************************************
4040
4144
  * Constants
4041
4145
  ***************************************************************/
4042
- var GCLASS_NAME$15 = "C_YUI_WINDOW_MANAGER";
4146
+ var GCLASS_NAME$16 = "C_YUI_WINDOW_MANAGER";
4043
4147
  var DOCK_Z = 1e6;
4044
4148
  var WC_X = "<svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M4.5 4.5 L11.5 11.5 M11.5 4.5 L4.5 11.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/></svg>";
4045
4149
  /***************************************************************
4046
4150
  * Data
4047
4151
  ***************************************************************/
4048
- var attrs_table$15 = [
4152
+ var attrs_table$16 = [
4049
4153
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
4050
4154
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "dock_mode", 0, "floating", "floating | inline | responsive (floating on wide screens, inline on narrow)"),
4051
4155
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "dock_corner", 0, "bottom-left", "Floating placement: top-left | top-right | bottom-left | bottom-right"),
@@ -4055,20 +4159,20 @@ var attrs_table$15 = [
4055
4159
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$container", 0, null, "Internal: the dock element"),
4056
4160
  (0, _yuneta_gobj_js.SDATA_END)()
4057
4161
  ];
4058
- var PRIVATE_DATA$15 = {
4162
+ var PRIVATE_DATA$16 = {
4059
4163
  windows: null,
4060
4164
  z: 0,
4061
4165
  mql: null,
4062
4166
  mql_handler: null
4063
4167
  };
4064
- var __gclass__$15 = null;
4168
+ var __gclass__$16 = null;
4065
4169
  /******************************
4066
4170
  * Framework Methods
4067
4171
  ******************************/
4068
4172
  /***************************************************************
4069
4173
  * Framework Method: Create
4070
4174
  ***************************************************************/
4071
- function mt_create$15(gobj) {
4175
+ function mt_create$16(gobj) {
4072
4176
  let priv = gobj.priv;
4073
4177
  priv.windows = [];
4074
4178
  priv.z = 10;
@@ -4087,7 +4191,7 @@ function mt_create$15(gobj) {
4087
4191
  /***************************************************************
4088
4192
  * Framework Method: Destroy
4089
4193
  ***************************************************************/
4090
- function mt_destroy$15(gobj) {
4194
+ function mt_destroy$16(gobj) {
4091
4195
  let priv = gobj.priv;
4092
4196
  if (priv.mql && priv.mql_handler) {
4093
4197
  priv.mql.removeEventListener("change", priv.mql_handler);
@@ -4446,19 +4550,19 @@ function ac_focus_window(gobj, event, kw, src) {
4446
4550
  /***************************
4447
4551
  * FSM
4448
4552
  ***************************/
4449
- var gmt$15 = {
4450
- mt_create: mt_create$15,
4451
- mt_destroy: mt_destroy$15
4553
+ var gmt$16 = {
4554
+ mt_create: mt_create$16,
4555
+ mt_destroy: mt_destroy$16
4452
4556
  };
4453
4557
  /***************************************************************
4454
4558
  * Create the GClass
4455
4559
  ***************************************************************/
4456
- function create_gclass$15(gclass_name) {
4457
- if (__gclass__$15) {
4560
+ function create_gclass$16(gclass_name) {
4561
+ if (__gclass__$16) {
4458
4562
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
4459
4563
  return -1;
4460
4564
  }
4461
- __gclass__$15 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
4565
+ __gclass__$16 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
4462
4566
  ["EV_REGISTER_WINDOW", 0],
4463
4567
  ["EV_UNREGISTER_WINDOW", 0],
4464
4568
  ["EV_MINIMIZE_WINDOW", 0],
@@ -4484,15 +4588,15 @@ function create_gclass$15(gclass_name) {
4484
4588
  ac_focus_window,
4485
4589
  null
4486
4590
  ]
4487
- ]]], gmt$15, 0, attrs_table$15, PRIVATE_DATA$15, 0, 0, 0, 0);
4488
- if (!__gclass__$15) return -1;
4591
+ ]]], gmt$16, 0, attrs_table$16, PRIVATE_DATA$16, 0, 0, 0, 0);
4592
+ if (!__gclass__$16) return -1;
4489
4593
  return 0;
4490
4594
  }
4491
4595
  /***************************************************************
4492
4596
  * Register GClass
4493
4597
  ***************************************************************/
4494
4598
  function register_c_yui_window_manager() {
4495
- return create_gclass$15(GCLASS_NAME$15);
4599
+ return create_gclass$16(GCLASS_NAME$16);
4496
4600
  }
4497
4601
  //#endregion
4498
4602
  //#region src/pager_helpers.js
@@ -4578,11 +4682,11 @@ function pager_back_action(stack, back_on_root) {
4578
4682
  /***************************************************************
4579
4683
  * Constants
4580
4684
  ***************************************************************/
4581
- var GCLASS_NAME$14 = "C_YUI_PAGER";
4685
+ var GCLASS_NAME$15 = "C_YUI_PAGER";
4582
4686
  /***************************************************************
4583
4687
  * Data
4584
4688
  ***************************************************************/
4585
- var attrs_table$14 = [
4689
+ var attrs_table$15 = [
4586
4690
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
4587
4691
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "root_title", 0, "", "Title shown on the root page"),
4588
4692
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_BOOLEAN, "back_on_root", 0, true, "On the root page the back affordance emits EV_PAGER_EXIT"),
@@ -4590,15 +4694,15 @@ var attrs_table$14 = [
4590
4694
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$container", 0, null, "HTMLElement root, mounted by the parent"),
4591
4695
  (0, _yuneta_gobj_js.SDATA_END)()
4592
4696
  ];
4593
- var PRIVATE_DATA$14 = { stack: null };
4594
- var __gclass__$14 = null;
4697
+ var PRIVATE_DATA$15 = { stack: null };
4698
+ var __gclass__$15 = null;
4595
4699
  /******************************
4596
4700
  * Framework Methods
4597
4701
  ******************************/
4598
4702
  /***************************************************************
4599
4703
  * Framework Method: Create
4600
4704
  ***************************************************************/
4601
- function mt_create$14(gobj) {
4705
+ function mt_create$15(gobj) {
4602
4706
  let priv = gobj.priv;
4603
4707
  priv.stack = [];
4604
4708
  build_ui$13(gobj);
@@ -4609,17 +4713,17 @@ function mt_create$14(gobj) {
4609
4713
  /***************************************************************
4610
4714
  * Framework Method: Start
4611
4715
  ***************************************************************/
4612
- function mt_start$13(gobj) {}
4716
+ function mt_start$14(gobj) {}
4613
4717
  /***************************************************************
4614
4718
  * Framework Method: Stop
4615
4719
  ***************************************************************/
4616
- function mt_stop$13(gobj) {
4720
+ function mt_stop$14(gobj) {
4617
4721
  (0, _yuneta_gobj_js.gobj_stop_children)(gobj);
4618
4722
  }
4619
4723
  /***************************************************************
4620
4724
  * Framework Method: Destroy
4621
4725
  ***************************************************************/
4622
- function mt_destroy$14(gobj) {
4726
+ function mt_destroy$15(gobj) {
4623
4727
  destroy_ui$9(gobj);
4624
4728
  }
4625
4729
  /***************************
@@ -4777,7 +4881,7 @@ function ac_push_page(gobj, event, kw, src) {
4777
4881
  let priv = gobj.priv;
4778
4882
  let resolved = resolve_panel$1(kw.content);
4779
4883
  if (!resolved.$el) {
4780
- (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$14}: EV_PUSH_PAGE without content`);
4884
+ (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$15}: EV_PUSH_PAGE without content`);
4781
4885
  return -1;
4782
4886
  }
4783
4887
  let $body = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$container").querySelector(".yui-pager-body");
@@ -4830,7 +4934,7 @@ function ac_replace_page(gobj, event, kw, src) {
4830
4934
  let priv = gobj.priv;
4831
4935
  let resolved = resolve_panel$1(kw.content);
4832
4936
  if (!resolved.$el) {
4833
- (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$14}: EV_REPLACE_PAGE without content`);
4937
+ (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$15}: EV_REPLACE_PAGE without content`);
4834
4938
  return -1;
4835
4939
  }
4836
4940
  let $body = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$container").querySelector(".yui-pager-body");
@@ -4897,17 +5001,17 @@ function ac_resize$4(gobj, event, kw, src) {
4897
5001
  /***************************
4898
5002
  * FSM
4899
5003
  ***************************/
4900
- var gmt$14 = {
4901
- mt_create: mt_create$14,
4902
- mt_start: mt_start$13,
4903
- mt_stop: mt_stop$13,
4904
- mt_destroy: mt_destroy$14
5004
+ var gmt$15 = {
5005
+ mt_create: mt_create$15,
5006
+ mt_start: mt_start$14,
5007
+ mt_stop: mt_stop$14,
5008
+ mt_destroy: mt_destroy$15
4905
5009
  };
4906
5010
  /***************************************************************
4907
5011
  * Create the GClass
4908
5012
  ***************************************************************/
4909
- function create_gclass$14(gclass_name) {
4910
- if (__gclass__$14) {
5013
+ function create_gclass$15(gclass_name) {
5014
+ if (__gclass__$15) {
4911
5015
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
4912
5016
  return -1;
4913
5017
  }
@@ -4958,7 +5062,7 @@ function create_gclass$14(gclass_name) {
4958
5062
  null
4959
5063
  ]
4960
5064
  ]]];
4961
- __gclass__$14 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
5065
+ __gclass__$15 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
4962
5066
  ["EV_PUSH_PAGE", 0],
4963
5067
  ["EV_POP_PAGE", 0],
4964
5068
  ["EV_BACK", 0],
@@ -4971,15 +5075,15 @@ function create_gclass$14(gclass_name) {
4971
5075
  ["EV_PAGE_SHOWN", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS],
4972
5076
  ["EV_PAGE_DISCARD", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT],
4973
5077
  ["EV_PAGER_EXIT", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT]
4974
- ], states, gmt$14, 0, attrs_table$14, PRIVATE_DATA$14, 0, 0, 0, 0);
4975
- if (!__gclass__$14) return -1;
5078
+ ], states, gmt$15, 0, attrs_table$15, PRIVATE_DATA$15, 0, 0, 0, 0);
5079
+ if (!__gclass__$15) return -1;
4976
5080
  return 0;
4977
5081
  }
4978
5082
  /***************************************************************
4979
5083
  * Register GClass
4980
5084
  ***************************************************************/
4981
5085
  function register_c_yui_pager() {
4982
- return create_gclass$14(GCLASS_NAME$14);
5086
+ return create_gclass$15(GCLASS_NAME$15);
4983
5087
  }
4984
5088
  //#endregion
4985
5089
  //#region src/wizard_helpers.js
@@ -5100,11 +5204,11 @@ function wizard_should_validate(linear, has_gobj) {
5100
5204
  /***************************************************************
5101
5205
  * Constants
5102
5206
  ***************************************************************/
5103
- var GCLASS_NAME$13 = "C_YUI_WIZARD";
5207
+ var GCLASS_NAME$14 = "C_YUI_WIZARD";
5104
5208
  /***************************************************************
5105
5209
  * Data
5106
5210
  ***************************************************************/
5107
- var attrs_table$13 = [
5211
+ var attrs_table$14 = [
5108
5212
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
5109
5213
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "confirm_label", 0, "confirm", "i18n key of the last-step primary button"),
5110
5214
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "next_label", 0, "next", "i18n key of the primary button (not last step)"),
@@ -5114,20 +5218,20 @@ var attrs_table$13 = [
5114
5218
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$container", 0, null, "HTMLElement root, mounted by the parent"),
5115
5219
  (0, _yuneta_gobj_js.SDATA_END)()
5116
5220
  ];
5117
- var PRIVATE_DATA$13 = {
5221
+ var PRIVATE_DATA$14 = {
5118
5222
  steps: null,
5119
5223
  idx: 0,
5120
5224
  acc: null,
5121
5225
  awaiting: false
5122
5226
  };
5123
- var __gclass__$13 = null;
5227
+ var __gclass__$14 = null;
5124
5228
  /******************************
5125
5229
  * Framework Methods
5126
5230
  ******************************/
5127
5231
  /***************************************************************
5128
5232
  * Framework Method: Create
5129
5233
  ***************************************************************/
5130
- function mt_create$13(gobj) {
5234
+ function mt_create$14(gobj) {
5131
5235
  let priv = gobj.priv;
5132
5236
  priv.steps = [];
5133
5237
  priv.idx = 0;
@@ -5141,17 +5245,17 @@ function mt_create$13(gobj) {
5141
5245
  /***************************************************************
5142
5246
  * Framework Method: Start
5143
5247
  ***************************************************************/
5144
- function mt_start$12(gobj) {}
5248
+ function mt_start$13(gobj) {}
5145
5249
  /***************************************************************
5146
5250
  * Framework Method: Stop
5147
5251
  ***************************************************************/
5148
- function mt_stop$12(gobj) {
5252
+ function mt_stop$13(gobj) {
5149
5253
  (0, _yuneta_gobj_js.gobj_stop_children)(gobj);
5150
5254
  }
5151
5255
  /***************************************************************
5152
5256
  * Framework Method: Destroy
5153
5257
  ***************************************************************/
5154
- function mt_destroy$13(gobj) {
5258
+ function mt_destroy$14(gobj) {
5155
5259
  destroy_ui$8(gobj);
5156
5260
  }
5157
5261
  /***************************
@@ -5358,7 +5462,7 @@ function ac_set_steps(gobj, event, kw, src) {
5358
5462
  let priv = gobj.priv;
5359
5463
  let steps_in = kw && kw.steps || [];
5360
5464
  if (steps_in.length === 0) {
5361
- (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$13}: EV_SET_STEPS with no steps`);
5465
+ (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$14}: EV_SET_STEPS with no steps`);
5362
5466
  return -1;
5363
5467
  }
5364
5468
  let $body = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$container").querySelector(".yui-wizard-body");
@@ -5368,7 +5472,7 @@ function ac_set_steps(gobj, event, kw, src) {
5368
5472
  let st = steps_in[i];
5369
5473
  let resolved = resolve_panel(st.content);
5370
5474
  if (!resolved.$el) {
5371
- (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$13}: step '${st.id}' has no content`);
5475
+ (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$14}: step '${st.id}' has no content`);
5372
5476
  return -1;
5373
5477
  }
5374
5478
  resolved.$el.classList.add("is-hidden");
@@ -5502,17 +5606,17 @@ function ac_resize$3(gobj, event, kw, src) {
5502
5606
  /***************************
5503
5607
  * FSM
5504
5608
  ***************************/
5505
- var gmt$13 = {
5506
- mt_create: mt_create$13,
5507
- mt_start: mt_start$12,
5508
- mt_stop: mt_stop$12,
5509
- mt_destroy: mt_destroy$13
5609
+ var gmt$14 = {
5610
+ mt_create: mt_create$14,
5611
+ mt_start: mt_start$13,
5612
+ mt_stop: mt_stop$13,
5613
+ mt_destroy: mt_destroy$14
5510
5614
  };
5511
5615
  /***************************************************************
5512
5616
  * Create the GClass
5513
5617
  ***************************************************************/
5514
- function create_gclass$13(gclass_name) {
5515
- if (__gclass__$13) {
5618
+ function create_gclass$14(gclass_name) {
5619
+ if (__gclass__$14) {
5516
5620
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
5517
5621
  return -1;
5518
5622
  }
@@ -5573,7 +5677,7 @@ function create_gclass$13(gclass_name) {
5573
5677
  null
5574
5678
  ]
5575
5679
  ]]];
5576
- __gclass__$13 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
5680
+ __gclass__$14 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
5577
5681
  ["EV_SET_STEPS", 0],
5578
5682
  ["EV_NEXT", 0],
5579
5683
  ["EV_PREV", 0],
@@ -5589,15 +5693,15 @@ function create_gclass$13(gclass_name) {
5589
5693
  ["EV_WIZARD_DONE", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT],
5590
5694
  ["EV_WIZARD_CANCEL", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT],
5591
5695
  ["EV_STEP_VALIDATE", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS]
5592
- ], states, gmt$13, 0, attrs_table$13, PRIVATE_DATA$13, 0, 0, 0, 0);
5593
- if (!__gclass__$13) return -1;
5696
+ ], states, gmt$14, 0, attrs_table$14, PRIVATE_DATA$14, 0, 0, 0, 0);
5697
+ if (!__gclass__$14) return -1;
5594
5698
  return 0;
5595
5699
  }
5596
5700
  /***************************************************************
5597
5701
  * Register GClass
5598
5702
  ***************************************************************/
5599
5703
  function register_c_yui_wizard() {
5600
- return create_gclass$13(GCLASS_NAME$13);
5704
+ return create_gclass$14(GCLASS_NAME$14);
5601
5705
  }
5602
5706
  //#endregion
5603
5707
  //#region src/yui_inputs.js
@@ -5767,11 +5871,11 @@ function yui_watch_theme(gobj, event = "EV_THEME") {
5767
5871
  /***************************************************************
5768
5872
  * Constants
5769
5873
  ***************************************************************/
5770
- var GCLASS_NAME$12 = "C_YUI_FORM";
5874
+ var GCLASS_NAME$13 = "C_YUI_FORM";
5771
5875
  /***************************************************************
5772
5876
  * Data
5773
5877
  ***************************************************************/
5774
- var attrs_table$12 = [
5878
+ var attrs_table$13 = [
5775
5879
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of publishing messages"),
5776
5880
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$parent", 0, null, "$container will be appended to $parent if not null, else do it manually"),
5777
5881
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "template", 0, "<div>You must supply a template for form</div>", "Template for form, object -> TEMPLATE, array -> DESC"),
@@ -5799,15 +5903,15 @@ var attrs_table$12 = [
5799
5903
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_BOOLEAN, "changes", 0, false, "Indicates if changes have been made"),
5800
5904
  (0, _yuneta_gobj_js.SDATA_END)()
5801
5905
  ];
5802
- var PRIVATE_DATA$12 = {};
5803
- var __gclass__$12 = null;
5906
+ var PRIVATE_DATA$13 = {};
5907
+ var __gclass__$13 = null;
5804
5908
  /***************************
5805
5909
  * Framework Methods
5806
5910
  ***************************/
5807
5911
  /************************************************************
5808
5912
  * Framework Method create
5809
5913
  ************************************************************/
5810
- function mt_create$12(gobj) {
5914
+ function mt_create$13(gobj) {
5811
5915
  let subscriber = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "subscriber");
5812
5916
  if (!subscriber) subscriber = (0, _yuneta_gobj_js.gobj_parent)(gobj);
5813
5917
  (0, _yuneta_gobj_js.gobj_subscribe_event)(gobj, null, {}, subscriber);
@@ -5819,20 +5923,20 @@ function mt_create$12(gobj) {
5819
5923
  * In this point, all children
5820
5924
  * and subscriptions are already deleted.
5821
5925
  ************************************************************/
5822
- function mt_destroy$12(gobj) {
5926
+ function mt_destroy$13(gobj) {
5823
5927
  destroy_ui$7(gobj);
5824
5928
  }
5825
5929
  /************************************************************
5826
5930
  * Framework Method start
5827
5931
  ************************************************************/
5828
- function mt_start$11(gobj) {
5932
+ function mt_start$12(gobj) {
5829
5933
  let record = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "record");
5830
5934
  if (record) (0, _yuneta_gobj_js.gobj_send_event)(gobj, "EV_LOAD_RECORD", record, gobj);
5831
5935
  }
5832
5936
  /************************************************************
5833
5937
  * Framework Method stop
5834
5938
  ************************************************************/
5835
- function mt_stop$11(gobj) {}
5939
+ function mt_stop$12(gobj) {}
5836
5940
  /***************************
5837
5941
  * Local Methods
5838
5942
  ***************************/
@@ -7843,17 +7947,17 @@ function ac_timeout(gobj, event, kw, src) {
7843
7947
  /***************************
7844
7948
  * FSM
7845
7949
  ***************************/
7846
- var gmt$12 = {
7847
- mt_create: mt_create$12,
7848
- mt_start: mt_start$11,
7849
- mt_stop: mt_stop$11,
7850
- mt_destroy: mt_destroy$12
7950
+ var gmt$13 = {
7951
+ mt_create: mt_create$13,
7952
+ mt_start: mt_start$12,
7953
+ mt_stop: mt_stop$12,
7954
+ mt_destroy: mt_destroy$13
7851
7955
  };
7852
7956
  /***************************************************************
7853
7957
  * Create the GClass
7854
7958
  ***************************************************************/
7855
- function create_gclass$12(gclass_name) {
7856
- if (__gclass__$12) {
7959
+ function create_gclass$13(gclass_name) {
7960
+ if (__gclass__$13) {
7857
7961
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
7858
7962
  return -1;
7859
7963
  }
@@ -7934,7 +8038,7 @@ function create_gclass$12(gclass_name) {
7934
8038
  null
7935
8039
  ]
7936
8040
  ]]];
7937
- __gclass__$12 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
8041
+ __gclass__$13 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
7938
8042
  ["EV_LOAD_RECORD", 0],
7939
8043
  ["EV_SAVE_RECORD", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT],
7940
8044
  ["EV_UNDO_RECORD", 0],
@@ -7950,16 +8054,16 @@ function create_gclass$12(gclass_name) {
7950
8054
  ["EV_SHOW", 0],
7951
8055
  ["EV_HIDE", 0],
7952
8056
  ["EV_TIMEOUT", 0]
7953
- ], states, gmt$12, 0, attrs_table$12, PRIVATE_DATA$12, 0, 0, 0, 0);
7954
- if (!__gclass__$12) return -1;
8057
+ ], states, gmt$13, 0, attrs_table$13, PRIVATE_DATA$13, 0, 0, 0, 0);
8058
+ if (!__gclass__$13) return -1;
7955
8059
  return 0;
7956
8060
  }
7957
8061
  /***************************************************************
7958
8062
  * Register GClass
7959
8063
  ***************************************************************/
7960
8064
  function register_c_yui_form() {
7961
- if ((0, _yuneta_gobj_js.gclass_find_by_name)(GCLASS_NAME$12, false)) return 0;
7962
- return create_gclass$12(GCLASS_NAME$12);
8065
+ if ((0, _yuneta_gobj_js.gclass_find_by_name)(GCLASS_NAME$13, false)) return 0;
8066
+ return create_gclass$13(GCLASS_NAME$13);
7963
8067
  }
7964
8068
  //#endregion
7965
8069
  //#region src/lib_maplibre.js
@@ -8119,11 +8223,11 @@ var MarkerControl = class {
8119
8223
  /***************************************************************
8120
8224
  * Constants
8121
8225
  ***************************************************************/
8122
- var GCLASS_NAME$11 = "C_YUI_MAP";
8226
+ var GCLASS_NAME$12 = "C_YUI_MAP";
8123
8227
  /***************************************************************
8124
8228
  * Data
8125
8229
  ***************************************************************/
8126
- var attrs_table$11 = [
8230
+ var attrs_table$12 = [
8127
8231
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
8128
8232
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_JSON, "devices", "[]", null, "List of devices"),
8129
8233
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_JSON, "map_settings", 0, {
@@ -8144,7 +8248,7 @@ var attrs_table$11 = [
8144
8248
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_INTEGER, "timeout_idle", 0, 5, "Idle timeout in seconds"),
8145
8249
  (0, _yuneta_gobj_js.SDATA_END)()
8146
8250
  ];
8147
- var PRIVATE_DATA$11 = {
8251
+ var PRIVATE_DATA$12 = {
8148
8252
  xmap: null,
8149
8253
  geojson: null,
8150
8254
  resizeObserver: null,
@@ -8153,21 +8257,21 @@ var PRIVATE_DATA$11 = {
8153
8257
  markers: {},
8154
8258
  draggedFeature: null
8155
8259
  };
8156
- var __gclass__$11 = null;
8260
+ var __gclass__$12 = null;
8157
8261
  /******************************
8158
8262
  * Framework Methods
8159
8263
  ******************************/
8160
8264
  /***************************************************************
8161
8265
  * Framework Method: Create
8162
8266
  ***************************************************************/
8163
- function mt_create$11(gobj) {
8267
+ function mt_create$12(gobj) {
8164
8268
  let priv = gobj.priv;
8165
8269
  let subscriber = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "subscriber");
8166
8270
  if (!subscriber) subscriber = (0, _yuneta_gobj_js.gobj_parent)(gobj);
8167
8271
  (0, _yuneta_gobj_js.gobj_subscribe_event)(gobj, null, {}, subscriber);
8168
8272
  let map_settings = (0, _yuneta_gobj_js.json_deep_copy)((0, _yuneta_gobj_js.gobj_read_attr)(gobj, "map_settings"));
8169
8273
  let $map = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$map");
8170
- if ($map) $map.classList.add(GCLASS_NAME$11);
8274
+ if ($map) $map.classList.add(GCLASS_NAME$12);
8171
8275
  Object.assign(map_settings, { container: $map });
8172
8276
  priv.onClick = (ev) => {
8173
8277
  onClick(gobj, ev);
@@ -8216,7 +8320,7 @@ function mt_create$11(gobj) {
8216
8320
  /***************************************************************
8217
8321
  * Framework Method: Destroy
8218
8322
  ***************************************************************/
8219
- function mt_destroy$11(gobj) {
8323
+ function mt_destroy$12(gobj) {
8220
8324
  let priv = gobj.priv;
8221
8325
  if (priv.resizeObserver) {
8222
8326
  priv.resizeObserver.disconnect();
@@ -8632,19 +8736,19 @@ function ac_hide$7(gobj, event, kw, src) {
8632
8736
  /***************************
8633
8737
  * FSM
8634
8738
  ***************************/
8635
- var gmt$11 = {
8636
- mt_create: mt_create$11,
8637
- mt_destroy: mt_destroy$11
8739
+ var gmt$12 = {
8740
+ mt_create: mt_create$12,
8741
+ mt_destroy: mt_destroy$12
8638
8742
  };
8639
8743
  /***************************************************************
8640
8744
  * Create the GClass
8641
8745
  ***************************************************************/
8642
- function create_gclass$11(gclass_name) {
8643
- if (__gclass__$11) {
8746
+ function create_gclass$12(gclass_name) {
8747
+ if (__gclass__$12) {
8644
8748
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
8645
8749
  return -1;
8646
8750
  }
8647
- __gclass__$11 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
8751
+ __gclass__$12 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
8648
8752
  ["EV_EDIT_MAP", 0],
8649
8753
  ["EV_CONTROL_MAP", 0],
8650
8754
  ["EV_MAP_ON_LOAD", 0],
@@ -8688,15 +8792,15 @@ function create_gclass$11(gclass_name) {
8688
8792
  ac_hide$7,
8689
8793
  null
8690
8794
  ]
8691
- ]]], gmt$11, 0, attrs_table$11, PRIVATE_DATA$11, 0, 0, 0, 0);
8692
- if (!__gclass__$11) return -1;
8795
+ ]]], gmt$12, 0, attrs_table$12, PRIVATE_DATA$12, 0, 0, 0, 0);
8796
+ if (!__gclass__$12) return -1;
8693
8797
  return 0;
8694
8798
  }
8695
8799
  /***************************************************************
8696
8800
  * Register GClass
8697
8801
  ***************************************************************/
8698
8802
  function register_c_yui_map() {
8699
- return create_gclass$11(GCLASS_NAME$11);
8803
+ return create_gclass$12(GCLASS_NAME$12);
8700
8804
  }
8701
8805
  //#endregion
8702
8806
  //#region src/c_yui_uplot.js
@@ -8711,11 +8815,11 @@ function register_c_yui_map() {
8711
8815
  /***************************************************************
8712
8816
  * Constants
8713
8817
  ***************************************************************/
8714
- var GCLASS_NAME$10 = "C_YUI_UPLOT";
8818
+ var GCLASS_NAME$11 = "C_YUI_UPLOT";
8715
8819
  /***************************************************************
8716
8820
  * Data
8717
8821
  ***************************************************************/
8718
- var attrs_table$10 = [
8822
+ var attrs_table$11 = [
8719
8823
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
8720
8824
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "title", 0, "", "Chart title"),
8721
8825
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_INTEGER, "width", 0, 800, "Chart width"),
@@ -8750,15 +8854,15 @@ var attrs_table$10 = [
8750
8854
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_INTEGER, "timeout_idle", 0, 5, "Idle timeout (seconds)"),
8751
8855
  (0, _yuneta_gobj_js.SDATA_END)()
8752
8856
  ];
8753
- var PRIVATE_DATA$10 = {};
8754
- var __gclass__$10 = null;
8857
+ var PRIVATE_DATA$11 = {};
8858
+ var __gclass__$11 = null;
8755
8859
  /******************************
8756
8860
  * Framework Methods
8757
8861
  ******************************/
8758
8862
  /***************************************************************
8759
8863
  * Framework Method: Create
8760
8864
  ***************************************************************/
8761
- function mt_create$10(gobj) {
8865
+ function mt_create$11(gobj) {
8762
8866
  build_ui$10(gobj);
8763
8867
  let subscriber = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "subscriber");
8764
8868
  if (!subscriber) subscriber = (0, _yuneta_gobj_js.gobj_parent)(gobj);
@@ -8767,15 +8871,15 @@ function mt_create$10(gobj) {
8767
8871
  /***************************************************************
8768
8872
  * Framework Method: Start
8769
8873
  ***************************************************************/
8770
- function mt_start$10(gobj) {}
8874
+ function mt_start$11(gobj) {}
8771
8875
  /***************************************************************
8772
8876
  * Framework Method: Stop
8773
8877
  ***************************************************************/
8774
- function mt_stop$10(gobj) {}
8878
+ function mt_stop$11(gobj) {}
8775
8879
  /***************************************************************
8776
8880
  * Framework Method: Destroy
8777
8881
  ***************************************************************/
8778
- function mt_destroy$10(gobj) {
8882
+ function mt_destroy$11(gobj) {
8779
8883
  let uplot$1 = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "uplot");
8780
8884
  if (uplot$1) {
8781
8885
  uplot$1.destroy();
@@ -8941,21 +9045,21 @@ function ac_clear(gobj, event, kw, src) {
8941
9045
  /***************************
8942
9046
  * FSM
8943
9047
  ***************************/
8944
- var gmt$10 = {
8945
- mt_create: mt_create$10,
8946
- mt_start: mt_start$10,
8947
- mt_stop: mt_stop$10,
8948
- mt_destroy: mt_destroy$10
9048
+ var gmt$11 = {
9049
+ mt_create: mt_create$11,
9050
+ mt_start: mt_start$11,
9051
+ mt_stop: mt_stop$11,
9052
+ mt_destroy: mt_destroy$11
8949
9053
  };
8950
9054
  /***************************************************************
8951
9055
  * Create the GClass
8952
9056
  ***************************************************************/
8953
- function create_gclass$10(gclass_name) {
8954
- if (__gclass__$10) {
9057
+ function create_gclass$11(gclass_name) {
9058
+ if (__gclass__$11) {
8955
9059
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
8956
9060
  return -1;
8957
9061
  }
8958
- __gclass__$10 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
9062
+ __gclass__$11 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
8959
9063
  ["EV_LOAD_DATA", 0],
8960
9064
  ["EV_ADD_SERIE", 0],
8961
9065
  ["EV_DEL_SERIE", 0],
@@ -8981,15 +9085,15 @@ function create_gclass$10(gclass_name) {
8981
9085
  ac_clear,
8982
9086
  null
8983
9087
  ]
8984
- ]]], gmt$10, 0, attrs_table$10, PRIVATE_DATA$10, 0, 0, 0, 0);
8985
- if (!__gclass__$10) return -1;
9088
+ ]]], gmt$11, 0, attrs_table$11, PRIVATE_DATA$11, 0, 0, 0, 0);
9089
+ if (!__gclass__$11) return -1;
8986
9090
  return 0;
8987
9091
  }
8988
9092
  /***************************************************************
8989
9093
  * Register GClass
8990
9094
  ***************************************************************/
8991
9095
  function register_c_yui_uplot() {
8992
- return create_gclass$10(GCLASS_NAME$10);
9096
+ return create_gclass$11(GCLASS_NAME$11);
8993
9097
  }
8994
9098
  //#endregion
8995
9099
  //#region src/yui_toolbar.js
@@ -9196,11 +9300,11 @@ function ensure_drag_canvas_patch() {
9196
9300
  /***************************************************************
9197
9301
  * Constants
9198
9302
  ***************************************************************/
9199
- var GCLASS_NAME$9 = "C_YUI_JSON_GRAPH";
9303
+ var GCLASS_NAME$10 = "C_YUI_JSON_GRAPH";
9200
9304
  /***************************************************************
9201
9305
  * Data
9202
9306
  ***************************************************************/
9203
- var attrs_table$9 = [
9307
+ var attrs_table$10 = [
9204
9308
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
9205
9309
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "path", 0, "", "Root path label"),
9206
9310
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_JSON, "json_data", 0, null, "JSON data to visualize"),
@@ -9209,7 +9313,7 @@ var attrs_table$9 = [
9209
9313
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "wide", 0, "36px", "Height of header"),
9210
9314
  (0, _yuneta_gobj_js.SDATA_END)()
9211
9315
  ];
9212
- var PRIVATE_DATA$9 = {
9316
+ var PRIVATE_DATA$10 = {
9213
9317
  canvas_id: "",
9214
9318
  graph: null,
9215
9319
  node_counter: 0,
@@ -9218,7 +9322,7 @@ var PRIVATE_DATA$9 = {
9218
9322
  resize_observer: null,
9219
9323
  _resize_raf: 0
9220
9324
  };
9221
- var __gclass__$9 = null;
9325
+ var __gclass__$10 = null;
9222
9326
  var __layout_registered__$1 = false;
9223
9327
  /***************************************************************
9224
9328
  * Type colors matching the original mx_json_viewer
@@ -9283,7 +9387,7 @@ function type_color(type, dark) {
9283
9387
  /***************************************************************
9284
9388
  * Framework Method: Create
9285
9389
  ***************************************************************/
9286
- function mt_create$9(gobj) {
9390
+ function mt_create$10(gobj) {
9287
9391
  let priv = gobj.priv;
9288
9392
  priv.canvas_id = "json-canvas-" + (0, _yuneta_gobj_js.clean_name)((0, _yuneta_gobj_js.gobj_name)(gobj));
9289
9393
  (0, _yuneta_gobj_js.gobj_write_str_attr)(gobj, "canvas_id", priv.canvas_id);
@@ -9302,18 +9406,18 @@ function mt_create$9(gobj) {
9302
9406
  /***************************************************************
9303
9407
  * Framework Method: Start
9304
9408
  ***************************************************************/
9305
- function mt_start$9(gobj) {
9409
+ function mt_start$10(gobj) {
9306
9410
  build_graph$3(gobj);
9307
9411
  load_json(gobj);
9308
9412
  }
9309
9413
  /***************************************************************
9310
9414
  * Framework Method: Stop
9311
9415
  ***************************************************************/
9312
- function mt_stop$9(gobj) {}
9416
+ function mt_stop$10(gobj) {}
9313
9417
  /***************************************************************
9314
9418
  * Framework Method: Destroy
9315
9419
  ***************************************************************/
9316
- function mt_destroy$9(gobj) {
9420
+ function mt_destroy$10(gobj) {
9317
9421
  let priv = gobj.priv;
9318
9422
  if (priv.theme_observer) {
9319
9423
  priv.theme_observer.disconnect();
@@ -9909,17 +10013,17 @@ function ac_hide$6(gobj, event, kw, src) {
9909
10013
  /***************************
9910
10014
  * FSM
9911
10015
  ***************************/
9912
- var gmt$9 = {
9913
- mt_create: mt_create$9,
9914
- mt_start: mt_start$9,
9915
- mt_stop: mt_stop$9,
9916
- mt_destroy: mt_destroy$9
10016
+ var gmt$10 = {
10017
+ mt_create: mt_create$10,
10018
+ mt_start: mt_start$10,
10019
+ mt_stop: mt_stop$10,
10020
+ mt_destroy: mt_destroy$10
9917
10021
  };
9918
10022
  /***************************************************************
9919
10023
  * Create the GClass
9920
10024
  ***************************************************************/
9921
- function create_gclass$9(gclass_name) {
9922
- if (__gclass__$9) {
10025
+ function create_gclass$10(gclass_name) {
10026
+ if (__gclass__$10) {
9923
10027
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
9924
10028
  return -1;
9925
10029
  }
@@ -9980,7 +10084,7 @@ function create_gclass$9(gclass_name) {
9980
10084
  null
9981
10085
  ]
9982
10086
  ]]];
9983
- __gclass__$9 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
10087
+ __gclass__$10 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
9984
10088
  ["EV_LOAD_DATA", 0],
9985
10089
  ["EV_REFRESH", 0],
9986
10090
  ["EV_THEME", 0],
@@ -9993,15 +10097,15 @@ function create_gclass$9(gclass_name) {
9993
10097
  ["EV_SHOW", 0],
9994
10098
  ["EV_HIDE", 0],
9995
10099
  ["EV_JSON_ITEM_CLICKED", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT]
9996
- ], states, gmt$9, 0, attrs_table$9, PRIVATE_DATA$9, 0, 0, 0, 0);
9997
- if (!__gclass__$9) return -1;
10100
+ ], states, gmt$10, 0, attrs_table$10, PRIVATE_DATA$10, 0, 0, 0, 0);
10101
+ if (!__gclass__$10) return -1;
9998
10102
  return 0;
9999
10103
  }
10000
10104
  /***************************************************************
10001
10105
  * Register GClass
10002
10106
  ***************************************************************/
10003
10107
  function register_c_yui_json_graph() {
10004
- return create_gclass$9(GCLASS_NAME$9);
10108
+ return create_gclass$10(GCLASS_NAME$10);
10005
10109
  }
10006
10110
  /************************************************************
10007
10111
  * JSON type discriminator (viewer vocabulary)
@@ -10178,19 +10282,19 @@ function format_epoch(value) {
10178
10282
  /***************************************************************
10179
10283
  * Constants
10180
10284
  ***************************************************************/
10181
- var GCLASS_NAME$8 = "C_YUI_JSON";
10285
+ var GCLASS_NAME$9 = "C_YUI_JSON";
10182
10286
  var MAX_RENDER_ROWS = 5e3;
10183
10287
  /***************************************************************
10184
10288
  * Data
10185
10289
  ***************************************************************/
10186
- var attrs_table$8 = [
10290
+ var attrs_table$9 = [
10187
10291
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
10188
10292
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "title", 0, "", "Optional header title (i18n key)"),
10189
10293
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_JSON, "json_data", 0, null, "Initial JSON to render (usually already collapsed)"),
10190
10294
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$container", 0, null, "HTMLElement root, mounted by the parent"),
10191
10295
  (0, _yuneta_gobj_js.SDATA_END)()
10192
10296
  ];
10193
- var PRIVATE_DATA$8 = {
10297
+ var PRIVATE_DATA$9 = {
10194
10298
  root: null,
10195
10299
  expanded: null,
10196
10300
  pending: null,
@@ -10199,14 +10303,14 @@ var PRIVATE_DATA$8 = {
10199
10303
  $tree: null,
10200
10304
  $search: null
10201
10305
  };
10202
- var __gclass__$8 = null;
10306
+ var __gclass__$9 = null;
10203
10307
  /******************************
10204
10308
  * Framework Methods
10205
10309
  ******************************/
10206
10310
  /***************************************************************
10207
10311
  * Framework Method: Create
10208
10312
  ***************************************************************/
10209
- function mt_create$8(gobj) {
10313
+ function mt_create$9(gobj) {
10210
10314
  let priv = gobj.priv;
10211
10315
  priv.expanded = /* @__PURE__ */ new Set();
10212
10316
  priv.pending = /* @__PURE__ */ new Set();
@@ -10222,17 +10326,17 @@ function mt_create$8(gobj) {
10222
10326
  /***************************************************************
10223
10327
  * Framework Method: Start
10224
10328
  ***************************************************************/
10225
- function mt_start$8(gobj) {
10329
+ function mt_start$9(gobj) {
10226
10330
  render_tree(gobj);
10227
10331
  }
10228
10332
  /***************************************************************
10229
10333
  * Framework Method: Stop
10230
10334
  ***************************************************************/
10231
- function mt_stop$8(gobj) {}
10335
+ function mt_stop$9(gobj) {}
10232
10336
  /***************************************************************
10233
10337
  * Framework Method: Destroy
10234
10338
  ***************************************************************/
10235
- function mt_destroy$8(gobj) {
10339
+ function mt_destroy$9(gobj) {
10236
10340
  destroy_ui$4(gobj);
10237
10341
  }
10238
10342
  /***************************
@@ -10736,7 +10840,7 @@ function ac_subtree_error(gobj, event, kw, src) {
10736
10840
  let path = kw.path || "";
10737
10841
  priv.pending.delete(path);
10738
10842
  priv.errors.set(path, kw.error || "error");
10739
- (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$8}: subtree load failed at '${path}': ${kw.error || ""}`);
10843
+ (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$9}: subtree load failed at '${path}': ${kw.error || ""}`);
10740
10844
  render_tree(gobj);
10741
10845
  return 0;
10742
10846
  }
@@ -10811,9 +10915,9 @@ function ac_copy_all(gobj, event, kw, src) {
10811
10915
  if (priv.root === null || priv.root === void 0) return 0;
10812
10916
  let text = JSON.stringify(priv.root, null, 4);
10813
10917
  if (navigator.clipboard && navigator.clipboard.writeText) navigator.clipboard.writeText(text).catch(function(e) {
10814
- (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$8}: clipboard write failed: ${e}`);
10918
+ (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$9}: clipboard write failed: ${e}`);
10815
10919
  });
10816
- else (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$8}: clipboard API unavailable`);
10920
+ else (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$9}: clipboard API unavailable`);
10817
10921
  return 0;
10818
10922
  }
10819
10923
  /************************************************************
@@ -10852,17 +10956,17 @@ function ac_refresh$3(gobj, event, kw, src) {
10852
10956
  /***************************
10853
10957
  * FSM
10854
10958
  ***************************/
10855
- var gmt$8 = {
10856
- mt_create: mt_create$8,
10857
- mt_start: mt_start$8,
10858
- mt_stop: mt_stop$8,
10859
- mt_destroy: mt_destroy$8
10959
+ var gmt$9 = {
10960
+ mt_create: mt_create$9,
10961
+ mt_start: mt_start$9,
10962
+ mt_stop: mt_stop$9,
10963
+ mt_destroy: mt_destroy$9
10860
10964
  };
10861
10965
  /***************************************************************
10862
10966
  * Create the GClass
10863
10967
  ***************************************************************/
10864
- function create_gclass$8(gclass_name) {
10865
- if (__gclass__$8) {
10968
+ function create_gclass$9(gclass_name) {
10969
+ if (__gclass__$9) {
10866
10970
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
10867
10971
  return -1;
10868
10972
  }
@@ -10959,7 +11063,7 @@ function create_gclass$8(gclass_name) {
10959
11063
  null
10960
11064
  ]
10961
11065
  ]]];
10962
- __gclass__$8 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
11066
+ __gclass__$9 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
10963
11067
  ["EV_SET_JSON", 0],
10964
11068
  ["EV_SUBTREE_LOADED", 0],
10965
11069
  ["EV_SUBTREE_ERROR", 0],
@@ -10974,15 +11078,15 @@ function create_gclass$8(gclass_name) {
10974
11078
  ["EV_SHOW", 0],
10975
11079
  ["EV_HIDE", 0],
10976
11080
  ["EV_EXPAND_PATH", _yuneta_gobj_js.event_flag_t.EVF_OUTPUT_EVENT | _yuneta_gobj_js.event_flag_t.EVF_NO_WARN_SUBS]
10977
- ], states, gmt$8, 0, attrs_table$8, PRIVATE_DATA$8, 0, 0, 0, 0);
10978
- if (!__gclass__$8) return -1;
11081
+ ], states, gmt$9, 0, attrs_table$9, PRIVATE_DATA$9, 0, 0, 0, 0);
11082
+ if (!__gclass__$9) return -1;
10979
11083
  return 0;
10980
11084
  }
10981
11085
  /***************************************************************
10982
11086
  * Register GClass
10983
11087
  ***************************************************************/
10984
11088
  function register_c_yui_json() {
10985
- return create_gclass$8(GCLASS_NAME$8);
11089
+ return create_gclass$9(GCLASS_NAME$9);
10986
11090
  }
10987
11091
  //#endregion
10988
11092
  //#region src/c_yui_gobj_tree_js.js
@@ -10997,11 +11101,11 @@ function register_c_yui_json() {
10997
11101
  /***************************************************************
10998
11102
  * Constants
10999
11103
  ***************************************************************/
11000
- var GCLASS_NAME$7 = "C_YUI_GOBJ_TREE_JS";
11104
+ var GCLASS_NAME$8 = "C_YUI_GOBJ_TREE_JS";
11001
11105
  /***************************************************************
11002
11106
  * Data
11003
11107
  ***************************************************************/
11004
- var attrs_table$7 = [
11108
+ var attrs_table$8 = [
11005
11109
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
11006
11110
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$container", 0, null, "Container element"),
11007
11111
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "canvas_id", 0, "", "Canvas ID"),
@@ -11010,7 +11114,7 @@ var attrs_table$7 = [
11010
11114
  (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_INTEGER, "collapse_threshold", 0, 10, "Auto-collapse a node whose direct children exceed this number. 0 disables auto-collapse."),
11011
11115
  (0, _yuneta_gobj_js.SDATA_END)()
11012
11116
  ];
11013
- var PRIVATE_DATA$7 = {
11117
+ var PRIVATE_DATA$8 = {
11014
11118
  canvas_id: "",
11015
11119
  graph: null,
11016
11120
  node_counter: 0,
@@ -11025,7 +11129,7 @@ var PRIVATE_DATA$7 = {
11025
11129
  resize_observer: null,
11026
11130
  _resize_raf: 0
11027
11131
  };
11028
- var __gclass__$7 = null;
11132
+ var __gclass__$8 = null;
11029
11133
  var __layout_registered__ = false;
11030
11134
  /***************************************************************
11031
11135
  * Node colors by role
@@ -11204,7 +11308,7 @@ function get_layout_cfg(layout_key) {
11204
11308
  /***************************************************************
11205
11309
  * Framework Method: Create
11206
11310
  ***************************************************************/
11207
- function mt_create$7(gobj) {
11311
+ function mt_create$8(gobj) {
11208
11312
  let priv = gobj.priv;
11209
11313
  priv.canvas_id = "gobj-tree-canvas-" + (0, _yuneta_gobj_js.clean_name)((0, _yuneta_gobj_js.gobj_name)(gobj));
11210
11314
  (0, _yuneta_gobj_js.gobj_write_str_attr)(gobj, "canvas_id", priv.canvas_id);
@@ -11227,18 +11331,18 @@ function mt_create$7(gobj) {
11227
11331
  /***************************************************************
11228
11332
  * Framework Method: Start
11229
11333
  ***************************************************************/
11230
- function mt_start$7(gobj) {
11334
+ function mt_start$8(gobj) {
11231
11335
  build_graph$2(gobj);
11232
11336
  load_tree(gobj);
11233
11337
  }
11234
11338
  /***************************************************************
11235
11339
  * Framework Method: Stop
11236
11340
  ***************************************************************/
11237
- function mt_stop$7(gobj) {}
11341
+ function mt_stop$8(gobj) {}
11238
11342
  /***************************************************************
11239
11343
  * Framework Method: Destroy
11240
11344
  ***************************************************************/
11241
- function mt_destroy$7(gobj) {
11345
+ function mt_destroy$8(gobj) {
11242
11346
  let priv = gobj.priv;
11243
11347
  if (priv.theme_observer) {
11244
11348
  priv.theme_observer.disconnect();
@@ -12457,21 +12561,21 @@ function ac_hide$4(gobj, event, kw, src) {
12457
12561
  /***************************
12458
12562
  * FSM
12459
12563
  ***************************/
12460
- var gmt$7 = {
12461
- mt_create: mt_create$7,
12462
- mt_start: mt_start$7,
12463
- mt_stop: mt_stop$7,
12464
- mt_destroy: mt_destroy$7
12564
+ var gmt$8 = {
12565
+ mt_create: mt_create$8,
12566
+ mt_start: mt_start$8,
12567
+ mt_stop: mt_stop$8,
12568
+ mt_destroy: mt_destroy$8
12465
12569
  };
12466
12570
  /***************************************************************
12467
12571
  * Create the GClass
12468
12572
  ***************************************************************/
12469
- function create_gclass$7(gclass_name) {
12470
- if (__gclass__$7) {
12573
+ function create_gclass$8(gclass_name) {
12574
+ if (__gclass__$8) {
12471
12575
  (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
12472
12576
  return -1;
12473
12577
  }
12474
- __gclass__$7 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
12578
+ __gclass__$8 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [
12475
12579
  ["EV_REFRESH", 0],
12476
12580
  ["EV_THEME", 0],
12477
12581
  ["EV_CHANGE_LAYOUT", 0],
@@ -12557,14 +12661,247 @@ function create_gclass$7(gclass_name) {
12557
12661
  ac_hide$4,
12558
12662
  null
12559
12663
  ]
12560
- ]]], gmt$7, 0, attrs_table$7, PRIVATE_DATA$7, 0, 0, 0, 0);
12561
- if (!__gclass__$7) return -1;
12664
+ ]]], gmt$8, 0, attrs_table$8, PRIVATE_DATA$8, 0, 0, 0, 0);
12665
+ if (!__gclass__$8) return -1;
12562
12666
  return 0;
12563
12667
  }
12564
12668
  /***************************************************************
12565
12669
  * Register GClass
12566
12670
  ***************************************************************/
12567
12671
  function register_c_yui_gobj_tree_js() {
12672
+ return create_gclass$8(GCLASS_NAME$8);
12673
+ }
12674
+ //#endregion
12675
+ //#region src/c_yui_service_view.js
12676
+ /***********************************************************************
12677
+ * c_yui_service_view.js
12678
+ *
12679
+ * Mounting a view that TALKS TO A BACKEND.
12680
+ *
12681
+ * THE PROBLEM
12682
+ * -----------
12683
+ * A view that asks the backend for data does it with
12684
+ * gobj_command(remote, "...", kw, src = itself)
12685
+ * and C_IEVENT_CLI routes the answer back with
12686
+ * gobj_find_service(gobj_name(src))
12687
+ * which only finds REGISTERED SERVICES.
12688
+ *
12689
+ * Neither host creates one: C_YUI_SHELL mounts a route's view with
12690
+ * `gobj_create()` and C_YUI_NODE with `gobj_create_pure_child()`.
12691
+ * So a backend-talking view mounted directly never receives a single
12692
+ * answer — and not quietly: the ievent logs "service not found" once
12693
+ * per answer while the view sits empty forever.
12694
+ *
12695
+ * There is a second half. A route's `target.kw` is STATIC JSON, so
12696
+ * it cannot carry the live transport pointer the view needs. It has
12697
+ * to be resolved at mount time and injected.
12698
+ *
12699
+ * THE PIECE
12700
+ * ---------
12701
+ * Both halves had been written four separate times, in three repos,
12702
+ * each wrapper saying the same thing in its own header. They are
12703
+ * here now, in two shapes, because the four callers are not alike:
12704
+ *
12705
+ * yui_mount_service_view(host, spec) — the helper. For a wrapper
12706
+ * that has its OWN extras on top (bridging url segments to the
12707
+ * hosted view, rebinding it when a connection drops). Those
12708
+ * extras are app or route logic and do NOT belong here; the
12709
+ * wrapper keeps them and drops only the boilerplate.
12710
+ *
12711
+ * C_YUI_SERVICE_VIEW — the gclass, for a route with NO extras:
12712
+ * declare it in the route/node and name the view it hosts. It
12713
+ * is the helper plus a lifecycle, nothing more.
12714
+ *
12715
+ * CONTRACT of the hosted gclass:
12716
+ * - declares the attr the transport is injected under
12717
+ * (`gobj_remote_yuno` by default),
12718
+ * - builds its `$container` in mt_create (re-exposed as the
12719
+ * host's, which is what the shell/node mounts),
12720
+ * - flags EVF_PUBLIC_EVENT on what arrives from the backend
12721
+ * (EV_MT_COMMAND_ANSWER and anything the remote publishes): the
12722
+ * ievent drops events that are not public.
12723
+ *
12724
+ * NAMES: the service name must be UNIQUE per mount. A duplicate is
12725
+ * not fatal and that is the danger — gobj-js logs "service ALREADY
12726
+ * REGISTERED. Will be UPDATED" and REBINDS the name, so the answers
12727
+ * of one view would land in the other. Derive it from the route (or
12728
+ * from whatever else makes the mount unique: a connection id, a
12729
+ * workspace) and never from the gclass alone.
12730
+ *
12731
+ * Copyright (c) 2026, ArtGins.
12732
+ * All Rights Reserved.
12733
+ ***********************************************************************/
12734
+ /***************************************************************
12735
+ * Constants
12736
+ ***************************************************************/
12737
+ var GCLASS_NAME$7 = "C_YUI_SERVICE_VIEW";
12738
+ var DEFAULT_TRANSPORT_SERVICE = "__remote_service__";
12739
+ var DEFAULT_TRANSPORT_ATTR = "gobj_remote_yuno";
12740
+ /***************************************************************
12741
+ * Data
12742
+ ***************************************************************/
12743
+ var attrs_table$7 = [
12744
+ (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
12745
+ (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "view_gclass", 0, "", "GClass of the hosted view (must be registered)"),
12746
+ (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "service_name", 0, "", "Service name of the hosted view — UNIQUE per mount"),
12747
+ (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_JSON, "view_kw", 0, null, "kw passed to the hosted view"),
12748
+ (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "transport_service", 0, DEFAULT_TRANSPORT_SERVICE, "Service name of the live transport"),
12749
+ (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_STRING, "transport_attr", 0, DEFAULT_TRANSPORT_ATTR, "Attr of the hosted view the transport is injected under"),
12750
+ (0, _yuneta_gobj_js.SDATA)(_yuneta_gobj_js.data_type_t.DTP_POINTER, "$container", 0, null, "Root HTMLElement"),
12751
+ (0, _yuneta_gobj_js.SDATA_END)()
12752
+ ];
12753
+ var PRIVATE_DATA$7 = { view: null };
12754
+ var __gclass__$7 = null;
12755
+ /***************************
12756
+ * Public helper
12757
+ ***************************/
12758
+ /************************************************************
12759
+ * Create `spec.gclass` as a NAMED SERVICE under `host`, with the
12760
+ * live transport injected, and return it (null on failure, error
12761
+ * already logged). The caller owns what happens next — starting
12762
+ * it, exposing its DOM, bridging routes into it.
12763
+ *
12764
+ * spec = {
12765
+ * gclass, // string, required — must be registered
12766
+ * name, // string, required — service name, unique per mount
12767
+ * kw, // object, optional — the view's kw
12768
+ * transport, // gobj | service name | omitted:
12769
+ * // a gobj is used as-is (the caller already
12770
+ * // resolved it — e.g. per connection), a string
12771
+ * // is looked up with gobj_find_service(), and
12772
+ * // omitted means "__remote_service__".
12773
+ * // null DISABLES injection: for a hosted view
12774
+ * // that takes its transport some other way.
12775
+ * transport_attr // string, optional — default "gobj_remote_yuno"
12776
+ * }
12777
+ ************************************************************/
12778
+ function yui_mount_service_view(host, spec) {
12779
+ if (!host || !(0, _yuneta_gobj_js.is_gobj)(host) || !spec) {
12780
+ (0, _yuneta_gobj_js.log_error)(`${GCLASS_NAME$7}: yui_mount_service_view without host or spec`);
12781
+ return null;
12782
+ }
12783
+ const gclass = spec.gclass;
12784
+ const name = spec.name;
12785
+ if ((0, _yuneta_gobj_js.empty_string)(gclass) || (0, _yuneta_gobj_js.empty_string)(name)) {
12786
+ (0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(host)}: mounting a service view needs gclass and name`);
12787
+ return null;
12788
+ }
12789
+ if (!(0, _yuneta_gobj_js.gclass_find_by_name)(gclass)) {
12790
+ (0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(host)}: gclass '${gclass}' is not registered`);
12791
+ return null;
12792
+ }
12793
+ let kw = Object.assign({}, spec.kw || {});
12794
+ let transport = Object.prototype.hasOwnProperty.call(spec, "transport") ? spec.transport : DEFAULT_TRANSPORT_SERVICE;
12795
+ if (transport !== null) {
12796
+ if ((0, _yuneta_gobj_js.is_string)(transport)) {
12797
+ const service_name = transport;
12798
+ transport = (0, _yuneta_gobj_js.gobj_find_service)(service_name);
12799
+ if (!transport) {
12800
+ (0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(host)}: transport service '${service_name}' not found`);
12801
+ return null;
12802
+ }
12803
+ }
12804
+ if (!(0, _yuneta_gobj_js.is_gobj)(transport)) {
12805
+ (0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(host)}: transport is not a gobj`);
12806
+ return null;
12807
+ }
12808
+ kw[spec.transport_attr || DEFAULT_TRANSPORT_ATTR] = transport;
12809
+ }
12810
+ const view = (0, _yuneta_gobj_js.gobj_create_service)(name, gclass, kw, host);
12811
+ if (!view) {
12812
+ (0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(host)}: cannot create '${gclass}' as '${name}'`);
12813
+ return null;
12814
+ }
12815
+ return view;
12816
+ }
12817
+ /************************************************************
12818
+ * The hosted view's $container, re-exposed as the host's — the
12819
+ * shell/node mounts the HOST, so without this nothing is drawn.
12820
+ * Never returns without setting one: an empty div beats a blank
12821
+ * screen with the reason only in the console.
12822
+ ************************************************************/
12823
+ function expose_view_container(host, view) {
12824
+ let $c = view ? (0, _yuneta_gobj_js.gobj_read_attr)(view, "$container") : null;
12825
+ if (!$c) {
12826
+ (0, _yuneta_gobj_js.log_error)(`${(0, _yuneta_gobj_js.gobj_short_name)(host)}: hosted view does not expose $container — check its mt_create`);
12827
+ $c = (0, _yuneta_gobj_js.createElement2)([
12828
+ "div",
12829
+ {},
12830
+ ""
12831
+ ]);
12832
+ }
12833
+ (0, _yuneta_gobj_js.gobj_write_attr)(host, "$container", $c);
12834
+ return $c;
12835
+ }
12836
+ /***************************
12837
+ * Framework Methods
12838
+ ***************************/
12839
+ /***************************************************************
12840
+ * Framework Method: Create
12841
+ ***************************************************************/
12842
+ function mt_create$7(gobj) {
12843
+ let priv = gobj.priv;
12844
+ let subscriber = (0, _yuneta_gobj_js.gobj_read_pointer_attr)(gobj, "subscriber");
12845
+ if (!subscriber) subscriber = (0, _yuneta_gobj_js.gobj_parent)(gobj);
12846
+ (0, _yuneta_gobj_js.gobj_subscribe_event)(gobj, null, {}, subscriber);
12847
+ priv.view = yui_mount_service_view(gobj, {
12848
+ gclass: (0, _yuneta_gobj_js.gobj_read_str_attr)(gobj, "view_gclass"),
12849
+ name: (0, _yuneta_gobj_js.gobj_read_str_attr)(gobj, "service_name"),
12850
+ kw: (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "view_kw") || {},
12851
+ transport: (0, _yuneta_gobj_js.gobj_read_str_attr)(gobj, "transport_service"),
12852
+ transport_attr: (0, _yuneta_gobj_js.gobj_read_str_attr)(gobj, "transport_attr")
12853
+ });
12854
+ expose_view_container(gobj, priv.view);
12855
+ }
12856
+ /***************************************************************
12857
+ * Framework Method: Start
12858
+ *
12859
+ * The view starts HERE and not in mt_create, so its first
12860
+ * request goes out when the host shows it.
12861
+ ***************************************************************/
12862
+ function mt_start$7(gobj) {
12863
+ const view = gobj.priv.view;
12864
+ if (view && !(0, _yuneta_gobj_js.gobj_is_running)(view)) (0, _yuneta_gobj_js.gobj_start)(view);
12865
+ }
12866
+ /***************************************************************
12867
+ * Framework Method: Stop
12868
+ ***************************************************************/
12869
+ function mt_stop$7(gobj) {
12870
+ const view = gobj.priv.view;
12871
+ if (view && (0, _yuneta_gobj_js.gobj_is_running)(view)) (0, _yuneta_gobj_js.gobj_stop)(view);
12872
+ }
12873
+ /***************************************************************
12874
+ * Framework Method: Destroy
12875
+ *
12876
+ * The view is a SERVICE created with this gobj as its parent, so
12877
+ * gobj_destroy cascades onto it — and deregisters its name. Do
12878
+ * NOT destroy it again here.
12879
+ ***************************************************************/
12880
+ function mt_destroy$7(gobj) {
12881
+ let priv = gobj.priv;
12882
+ priv.view = null;
12883
+ const $c = (0, _yuneta_gobj_js.gobj_read_attr)(gobj, "$container");
12884
+ if ($c && $c.parentNode) $c.parentNode.removeChild($c);
12885
+ (0, _yuneta_gobj_js.gobj_write_attr)(gobj, "$container", null);
12886
+ }
12887
+ /***************************
12888
+ * FSM
12889
+ ***************************/
12890
+ var gmt$7 = {
12891
+ mt_create: mt_create$7,
12892
+ mt_start: mt_start$7,
12893
+ mt_stop: mt_stop$7,
12894
+ mt_destroy: mt_destroy$7
12895
+ };
12896
+ function create_gclass$7(gclass_name) {
12897
+ if (__gclass__$7) {
12898
+ (0, _yuneta_gobj_js.log_error)(`GClass ALREADY created: ${gclass_name}`);
12899
+ return -1;
12900
+ }
12901
+ __gclass__$7 = (0, _yuneta_gobj_js.gclass_create)(gclass_name, [], [["ST_IDLE", []]], gmt$7, 0, attrs_table$7, PRIVATE_DATA$7, 0, 0, 0, 0);
12902
+ return __gclass__$7 ? 0 : -1;
12903
+ }
12904
+ function register_c_yui_service_view() {
12568
12905
  return create_gclass$7(GCLASS_NAME$7);
12569
12906
  }
12570
12907
  //#endregion
@@ -12683,7 +13020,12 @@ function cards_grid_descriptor(items, show_label) {
12683
13020
  * container; build_ui re-applies them on every rebuild.
12684
13021
  *
12685
13022
  * Each item supports:
12686
- * id, name, icon (CSS class or svg id), route, badge, disabled
13023
+ * id, name, icon (CSS class or svg id), route, disabled
13024
+ * (`badge` was listed here for a long time and NOTHING ever
13025
+ * rendered it — a menu item cannot carry a count today. The
13026
+ * toolbar can: `badge` on a toolbar item plus
13027
+ * yui_shell_set_toolbar_item_badge(). Implement it here the
13028
+ * day a menu entry needs one, rather than re-listing it.)
12687
13029
  * class — extra CSS class(es) on the item (tabs layout), e.g.
12688
13030
  * a per-item state colour like "yui-nav-disconnected"
12689
13031
  * closable — render a trailing ✕ that emits EV_NAV_ITEM_CLOSE
@@ -53297,6 +53639,7 @@ exports.disableElements = disableElements;
53297
53639
  exports.enableElements = enableElements;
53298
53640
  exports.epoch_to_local_input = epoch_to_local_input;
53299
53641
  exports.epoch_to_ms = epoch_to_ms;
53642
+ exports.expose_view_container = expose_view_container;
53300
53643
  exports.fmt_epoch = fmt_epoch;
53301
53644
  exports.getStrokeColor = getStrokeColor;
53302
53645
  exports.infer_period = infer_period;
@@ -53323,6 +53666,7 @@ exports.register_c_yui_map = register_c_yui_map;
53323
53666
  exports.register_c_yui_nav = register_c_yui_nav;
53324
53667
  exports.register_c_yui_pager = register_c_yui_pager;
53325
53668
  exports.register_c_yui_period = register_c_yui_period;
53669
+ exports.register_c_yui_service_view = register_c_yui_service_view;
53326
53670
  exports.register_c_yui_shell = register_c_yui_shell;
53327
53671
  exports.register_c_yui_treedb_graph = register_c_yui_treedb_graph;
53328
53672
  exports.register_c_yui_treedb_schema = register_c_yui_treedb_schema;
@@ -53343,6 +53687,7 @@ exports.setup_dev = setup_dev;
53343
53687
  exports.setup_frontend_view = setup_frontend_view;
53344
53688
  exports.toggleClasses = toggleClasses;
53345
53689
  exports.yui_is_dark = yui_is_dark;
53690
+ exports.yui_mount_service_view = yui_mount_service_view;
53346
53691
  exports.yui_shell_close_drawer = yui_shell_close_drawer;
53347
53692
  exports.yui_shell_close_dropdown = yui_shell_close_dropdown;
53348
53693
  exports.yui_shell_confirm_ok = yui_shell_confirm_ok;
@@ -53359,6 +53704,7 @@ exports.yui_shell_register_overlay = yui_shell_register_overlay;
53359
53704
  exports.yui_shell_set_avatar_provider = yui_shell_set_avatar_provider;
53360
53705
  exports.yui_shell_set_connection_state = yui_shell_set_connection_state;
53361
53706
  exports.yui_shell_set_sub_routes = yui_shell_set_sub_routes;
53707
+ exports.yui_shell_set_toolbar_item_badge = yui_shell_set_toolbar_item_badge;
53362
53708
  exports.yui_shell_set_toolbar_item_icon = yui_shell_set_toolbar_item_icon;
53363
53709
  exports.yui_shell_set_translator = yui_shell_set_translator;
53364
53710
  exports.yui_shell_show_error = yui_shell_show_error;