@yuneta/gobj-ui 5.4.0 → 5.5.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.
@@ -794,7 +794,7 @@ function secondary_nav_renders(item, layout) {
794
794
  /***************************************************************
795
795
  * Constants
796
796
  ***************************************************************/
797
- var GCLASS_NAME$17 = "C_YUI_SHELL";
797
+ var GCLASS_NAME$18 = "C_YUI_SHELL";
798
798
  var __last_shell__ = null;
799
799
  var ZONE_IDS = [
800
800
  "top",
@@ -816,7 +816,7 @@ var LAYER_DEFS = [
816
816
  /***************************************************************
817
817
  * Attrs
818
818
  ***************************************************************/
819
- var attrs_table$17 = [
819
+ var attrs_table$18 = [
820
820
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
821
821
  SDATA(data_type_t.DTP_JSON, "config", 0, null, "Shell declarative config (zones, menu, stages, toolbar)"),
822
822
  SDATA(data_type_t.DTP_STRING, "default_route", 0, "", "Fallback route if hash is empty"),
@@ -827,7 +827,7 @@ var attrs_table$17 = [
827
827
  SDATA(data_type_t.DTP_POINTER, "$container", 0, null, "Root HTMLElement of the shell"),
828
828
  SDATA_END()
829
829
  ];
830
- var PRIVATE_DATA$17 = {
830
+ var PRIVATE_DATA$18 = {
831
831
  zones: {},
832
832
  layers: {},
833
833
  stages: {},
@@ -849,14 +849,14 @@ var PRIVATE_DATA$17 = {
849
849
  conn_nodes: [],
850
850
  active_dropdown: null
851
851
  };
852
- var __gclass__$17 = null;
852
+ var __gclass__$18 = null;
853
853
  /******************************
854
854
  * Framework Methods
855
855
  ******************************/
856
856
  /***************************************************************
857
857
  * Framework Method: Create
858
858
  ***************************************************************/
859
- function mt_create$17(gobj) {
859
+ function mt_create$18(gobj) {
860
860
  const subscriber = gobj_read_pointer_attr(gobj, "subscriber");
861
861
  if (subscriber) gobj_subscribe_event(gobj, null, {}, subscriber);
862
862
  __last_shell__ = gobj;
@@ -865,7 +865,7 @@ function mt_create$17(gobj) {
865
865
  /***************************************************************
866
866
  * Framework Method: Start
867
867
  ***************************************************************/
868
- function mt_start$14(gobj) {
868
+ function mt_start$15(gobj) {
869
869
  let config = gobj_read_attr(gobj, "config") || {};
870
870
  let priv = gobj.priv;
871
871
  if (!validate_config(config)) {
@@ -934,7 +934,7 @@ function mt_start$14(gobj) {
934
934
  /***************************************************************
935
935
  * Framework Method: Stop
936
936
  ***************************************************************/
937
- function mt_stop$14(gobj) {
937
+ function mt_stop$15(gobj) {
938
938
  let priv = gobj.priv;
939
939
  if (!priv) return;
940
940
  close_toolbar_dropdown(gobj);
@@ -975,7 +975,7 @@ function mt_stop$14(gobj) {
975
975
  /***************************************************************
976
976
  * Framework Method: Destroy
977
977
  ***************************************************************/
978
- function mt_destroy$17(gobj) {
978
+ function mt_destroy$18(gobj) {
979
979
  close_toolbar_dropdown(gobj);
980
980
  let $container = gobj_read_attr(gobj, "$container");
981
981
  if ($container && $container.parentNode) $container.parentNode.removeChild($container);
@@ -1585,8 +1585,7 @@ function build_view_gobj(gobj, entry, route, stage) {
1585
1585
  }
1586
1586
  stage.el.appendChild($view);
1587
1587
  gobj_start(view);
1588
- let priv = gobj.priv;
1589
- if (priv && typeof priv.translator === "function" && target.gclass === "C_YUI_NAV") refresh_language($view, priv.translator);
1588
+ if (target.gclass === "C_YUI_NAV") yui_shell_translate(gobj, $view);
1590
1589
  return view;
1591
1590
  }
1592
1591
  function safe_id(s) {
@@ -1957,7 +1956,7 @@ function open_toolbar_dropdown(gobj, item, action, $trigger) {
1957
1956
  } else style_parts.push(`left:${Math.max(0, Math.round(rect.left))}px`);
1958
1957
  $panel.setAttribute("style", style_parts.join(";"));
1959
1958
  priv.layers.popup.appendChild($panel);
1960
- if (typeof priv.translator === "function") refresh_language($panel, priv.translator);
1959
+ yui_shell_translate(gobj, $panel);
1961
1960
  let backdrop = (ev) => {
1962
1961
  if ($panel.contains(ev.target)) return;
1963
1962
  if ($trigger && $trigger.contains(ev.target)) return;
@@ -2370,14 +2369,14 @@ function ac_nav_item_close(gobj, event, kw, src) {
2370
2369
  /***************************************************************
2371
2370
  * FSM
2372
2371
  ***************************************************************/
2373
- var gmt$17 = {
2374
- mt_create: mt_create$17,
2375
- mt_start: mt_start$14,
2376
- mt_stop: mt_stop$14,
2377
- mt_destroy: mt_destroy$17
2372
+ var gmt$18 = {
2373
+ mt_create: mt_create$18,
2374
+ mt_start: mt_start$15,
2375
+ mt_stop: mt_stop$15,
2376
+ mt_destroy: mt_destroy$18
2378
2377
  };
2379
- function create_gclass$17(gclass_name) {
2380
- if (__gclass__$17) {
2378
+ function create_gclass$18(gclass_name) {
2379
+ if (__gclass__$18) {
2381
2380
  log_error(`GClass ALREADY created: ${gclass_name}`);
2382
2381
  return -1;
2383
2382
  }
@@ -2398,19 +2397,19 @@ function create_gclass$17(gclass_name) {
2398
2397
  null
2399
2398
  ]
2400
2399
  ]]];
2401
- __gclass__$17 = gclass_create(gclass_name, [
2400
+ __gclass__$18 = gclass_create(gclass_name, [
2402
2401
  ["EV_NAV_CLICKED", 0],
2403
2402
  ["EV_DRAWER_CLOSE_REQUESTED", 0],
2404
2403
  ["EV_NAV_ITEM_CLOSE", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_PUBLIC_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
2405
2404
  ["EV_ROUTE_REQUESTED", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_PUBLIC_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
2406
2405
  ["EV_ROUTE_CHANGED", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_PUBLIC_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
2407
2406
  ["EV_LANGUAGE_CHANGED", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_PUBLIC_EVENT | event_flag_t.EVF_NO_WARN_SUBS]
2408
- ], states, gmt$17, 0, attrs_table$17, PRIVATE_DATA$17, 0, 0, 0, gclass_flag_t.gcflag_no_check_output_events);
2409
- if (!__gclass__$17) return -1;
2407
+ ], states, gmt$18, 0, attrs_table$18, PRIVATE_DATA$18, 0, 0, 0, gclass_flag_t.gcflag_no_check_output_events);
2408
+ if (!__gclass__$18) return -1;
2410
2409
  return 0;
2411
2410
  }
2412
2411
  function register_c_yui_shell() {
2413
- return create_gclass$17(GCLASS_NAME$17);
2412
+ return create_gclass$18(GCLASS_NAME$18);
2414
2413
  }
2415
2414
  /***************************************************************
2416
2415
  * Public helpers — exported alongside register_c_yui_shell().
@@ -2469,7 +2468,7 @@ function remembered_position(gobj, route) {
2469
2468
  function yui_shell_of(gobj) {
2470
2469
  let g = gobj;
2471
2470
  while (g) {
2472
- if (gobj_gclass_name(g) === GCLASS_NAME$17) return g;
2471
+ if (gobj_gclass_name(g) === GCLASS_NAME$18) return g;
2473
2472
  g = gobj_parent(g);
2474
2473
  }
2475
2474
  return __last_shell__;
@@ -2606,9 +2605,10 @@ function yui_shell_refresh_avatars(shell_gobj) {
2606
2605
  * Register the host's i18n translator (a t-function:
2607
2606
  * key => translated string). The host still translates the
2608
2607
  * static shell tree itself via refresh_language($container, t);
2609
- * this is only so the shell can translate DOM it builds LAZILY
2610
- * and OUTSIDE $containertoday the toolbar dropdown panel.
2611
- * Optional: with no translator the panel renders raw keys
2608
+ * this is only so the shell and the library components that
2609
+ * build DOM under it can translate DOM built LAZILY, after
2610
+ * that one-shot pass and often outside $container.
2611
+ * Optional: with no translator such DOM renders raw keys
2612
2612
  * (the previous behaviour).
2613
2613
  ************************************************************/
2614
2614
  function yui_shell_set_translator(shell_gobj, t) {
@@ -2617,6 +2617,33 @@ function yui_shell_set_translator(shell_gobj, t) {
2617
2617
  priv.translator = typeof t === "function" ? t : null;
2618
2618
  }
2619
2619
  /************************************************************
2620
+ * Apply the registered translator to a FRESHLY BUILT subtree.
2621
+ *
2622
+ * Carrying the `i18n` key on a node is not enough for it to
2623
+ * render translated: the node is born holding the raw English
2624
+ * key, and the host's refresh_language() passes walk what
2625
+ * ALREADY exists — the shell tree at start up, document.body on
2626
+ * a language switch. Anything built after that (a dropdown
2627
+ * panel, a nav a node renders when you walk into it) is reached
2628
+ * by neither, so it renders the key: lower-case English that
2629
+ * never changes language, i.e. exactly what a MISSING key looks
2630
+ * like.
2631
+ *
2632
+ * The division of labour, unchanged: LIBRARY-built DOM is
2633
+ * translated through here; APP view gclasses translate their own
2634
+ * DOM (they own a `t` — see mount_view).
2635
+ *
2636
+ * Silent no-op with no shell or no translator: an app that never
2637
+ * registered one keeps the previous behaviour instead of losing
2638
+ * its chrome.
2639
+ ************************************************************/
2640
+ function yui_shell_translate(shell_gobj, $el) {
2641
+ if (!$el || !shell_gobj || !is_gobj(shell_gobj)) return;
2642
+ let priv = shell_gobj.priv;
2643
+ if (!priv || typeof priv.translator !== "function") return;
2644
+ refresh_language($el, priv.translator);
2645
+ }
2646
+ /************************************************************
2620
2647
  * Set the backend-connection state painted by every
2621
2648
  * type:"connection" toolbar item. Host/event-driven: the
2622
2649
  * app calls this from its transport handlers (EV_ON_OPEN →
@@ -3126,7 +3153,7 @@ function yui_shell_confirm_yesnocancel(shell, message, opts) {
3126
3153
  /***************************************************************
3127
3154
  * Constants
3128
3155
  ***************************************************************/
3129
- var GCLASS_NAME$16 = "C_YUI_WINDOW";
3156
+ var GCLASS_NAME$17 = "C_YUI_WINDOW";
3130
3157
  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>";
3131
3158
  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>";
3132
3159
  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>";
@@ -3135,7 +3162,7 @@ var MOBILE_MAX = 768;
3135
3162
  /***************************************************************
3136
3163
  * Data
3137
3164
  ***************************************************************/
3138
- var attrs_table$16 = [
3165
+ var attrs_table$17 = [
3139
3166
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
3140
3167
  SDATA(data_type_t.DTP_POINTER, "$parent", 0, null, "$container will be appended to $parent if not null, else to document.body"),
3141
3168
  SDATA(data_type_t.DTP_INTEGER, "x", 0, "300", "X position"),
@@ -3173,15 +3200,15 @@ var attrs_table$16 = [
3173
3200
  SDATA(data_type_t.DTP_POINTER, "win_resize_handler", 0, null, "Internal: native window 'resize' listener"),
3174
3201
  SDATA_END()
3175
3202
  ];
3176
- var PRIVATE_DATA$16 = { prevSize: 0 };
3177
- var __gclass__$16 = null;
3203
+ var PRIVATE_DATA$17 = { prevSize: 0 };
3204
+ var __gclass__$17 = null;
3178
3205
  /******************************
3179
3206
  * Framework Methods
3180
3207
  ******************************/
3181
3208
  /***************************************************************
3182
3209
  * Framework Method: Create
3183
3210
  ***************************************************************/
3184
- function mt_create$16(gobj) {
3211
+ function mt_create$17(gobj) {
3185
3212
  const subscriber = gobj_read_pointer_attr(gobj, "subscriber");
3186
3213
  if (subscriber) gobj_subscribe_event(gobj, null, {}, subscriber);
3187
3214
  gobj_write_attr(gobj, "window_id", "window-" + clean_name(gobj_short_name(gobj)));
@@ -3217,7 +3244,7 @@ function mt_create$16(gobj) {
3217
3244
  /***************************************************************
3218
3245
  * Framework Method: Destroy
3219
3246
  ***************************************************************/
3220
- function mt_destroy$16(gobj) {
3247
+ function mt_destroy$17(gobj) {
3221
3248
  let manager = gobj_read_pointer_attr(gobj, "manager");
3222
3249
  if (manager) gobj_send_event(manager, "EV_UNREGISTER_WINDOW", { window: gobj }, gobj);
3223
3250
  let back_overlay = gobj_read_attr(gobj, "back_overlay");
@@ -3946,15 +3973,15 @@ function ac_close(gobj, event, kw, src) {
3946
3973
  /***************************
3947
3974
  * FSM
3948
3975
  ***************************/
3949
- var gmt$16 = {
3950
- mt_create: mt_create$16,
3951
- mt_destroy: mt_destroy$16
3976
+ var gmt$17 = {
3977
+ mt_create: mt_create$17,
3978
+ mt_destroy: mt_destroy$17
3952
3979
  };
3953
3980
  /***************************************************************
3954
3981
  * Create the GClass
3955
3982
  ***************************************************************/
3956
- function create_gclass$16(gclass_name) {
3957
- if (__gclass__$16) {
3983
+ function create_gclass$17(gclass_name) {
3984
+ if (__gclass__$17) {
3958
3985
  log_error(`GClass ALREADY created: ${gclass_name}`);
3959
3986
  return -1;
3960
3987
  }
@@ -3980,7 +4007,7 @@ function create_gclass$16(gclass_name) {
3980
4007
  null
3981
4008
  ]
3982
4009
  ]]];
3983
- __gclass__$16 = gclass_create(gclass_name, [
4010
+ __gclass__$17 = gclass_create(gclass_name, [
3984
4011
  ["EV_WINDOW_TO_CLOSE", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
3985
4012
  ["EV_WINDOW_MOVED", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
3986
4013
  ["EV_WINDOW_RESIZED", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
@@ -3988,15 +4015,15 @@ function create_gclass$16(gclass_name) {
3988
4015
  ["EV_SHOW", 0],
3989
4016
  ["EV_HIDE", 0],
3990
4017
  ["EV_CLOSE_WINDOW", 0]
3991
- ], states, gmt$16, 0, attrs_table$16, PRIVATE_DATA$16, 0, 0, 0, 0);
3992
- if (!__gclass__$16) return -1;
4018
+ ], states, gmt$17, 0, attrs_table$17, PRIVATE_DATA$17, 0, 0, 0, 0);
4019
+ if (!__gclass__$17) return -1;
3993
4020
  return 0;
3994
4021
  }
3995
4022
  /***************************************************************
3996
4023
  * Register GClass
3997
4024
  ***************************************************************/
3998
4025
  function register_c_yui_window() {
3999
- return create_gclass$16(GCLASS_NAME$16);
4026
+ return create_gclass$17(GCLASS_NAME$17);
4000
4027
  }
4001
4028
  //#endregion
4002
4029
  //#region src/c_yui_window_manager.js
@@ -4034,13 +4061,13 @@ function register_c_yui_window() {
4034
4061
  /***************************************************************
4035
4062
  * Constants
4036
4063
  ***************************************************************/
4037
- var GCLASS_NAME$15 = "C_YUI_WINDOW_MANAGER";
4064
+ var GCLASS_NAME$16 = "C_YUI_WINDOW_MANAGER";
4038
4065
  var DOCK_Z = 1e6;
4039
4066
  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>";
4040
4067
  /***************************************************************
4041
4068
  * Data
4042
4069
  ***************************************************************/
4043
- var attrs_table$15 = [
4070
+ var attrs_table$16 = [
4044
4071
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
4045
4072
  SDATA(data_type_t.DTP_STRING, "dock_mode", 0, "floating", "floating | inline | responsive (floating on wide screens, inline on narrow)"),
4046
4073
  SDATA(data_type_t.DTP_STRING, "dock_corner", 0, "bottom-left", "Floating placement: top-left | top-right | bottom-left | bottom-right"),
@@ -4050,20 +4077,20 @@ var attrs_table$15 = [
4050
4077
  SDATA(data_type_t.DTP_POINTER, "$container", 0, null, "Internal: the dock element"),
4051
4078
  SDATA_END()
4052
4079
  ];
4053
- var PRIVATE_DATA$15 = {
4080
+ var PRIVATE_DATA$16 = {
4054
4081
  windows: null,
4055
4082
  z: 0,
4056
4083
  mql: null,
4057
4084
  mql_handler: null
4058
4085
  };
4059
- var __gclass__$15 = null;
4086
+ var __gclass__$16 = null;
4060
4087
  /******************************
4061
4088
  * Framework Methods
4062
4089
  ******************************/
4063
4090
  /***************************************************************
4064
4091
  * Framework Method: Create
4065
4092
  ***************************************************************/
4066
- function mt_create$15(gobj) {
4093
+ function mt_create$16(gobj) {
4067
4094
  let priv = gobj.priv;
4068
4095
  priv.windows = [];
4069
4096
  priv.z = 10;
@@ -4082,7 +4109,7 @@ function mt_create$15(gobj) {
4082
4109
  /***************************************************************
4083
4110
  * Framework Method: Destroy
4084
4111
  ***************************************************************/
4085
- function mt_destroy$15(gobj) {
4112
+ function mt_destroy$16(gobj) {
4086
4113
  let priv = gobj.priv;
4087
4114
  if (priv.mql && priv.mql_handler) {
4088
4115
  priv.mql.removeEventListener("change", priv.mql_handler);
@@ -4441,19 +4468,19 @@ function ac_focus_window(gobj, event, kw, src) {
4441
4468
  /***************************
4442
4469
  * FSM
4443
4470
  ***************************/
4444
- var gmt$15 = {
4445
- mt_create: mt_create$15,
4446
- mt_destroy: mt_destroy$15
4471
+ var gmt$16 = {
4472
+ mt_create: mt_create$16,
4473
+ mt_destroy: mt_destroy$16
4447
4474
  };
4448
4475
  /***************************************************************
4449
4476
  * Create the GClass
4450
4477
  ***************************************************************/
4451
- function create_gclass$15(gclass_name) {
4452
- if (__gclass__$15) {
4478
+ function create_gclass$16(gclass_name) {
4479
+ if (__gclass__$16) {
4453
4480
  log_error(`GClass ALREADY created: ${gclass_name}`);
4454
4481
  return -1;
4455
4482
  }
4456
- __gclass__$15 = gclass_create(gclass_name, [
4483
+ __gclass__$16 = gclass_create(gclass_name, [
4457
4484
  ["EV_REGISTER_WINDOW", 0],
4458
4485
  ["EV_UNREGISTER_WINDOW", 0],
4459
4486
  ["EV_MINIMIZE_WINDOW", 0],
@@ -4479,15 +4506,15 @@ function create_gclass$15(gclass_name) {
4479
4506
  ac_focus_window,
4480
4507
  null
4481
4508
  ]
4482
- ]]], gmt$15, 0, attrs_table$15, PRIVATE_DATA$15, 0, 0, 0, 0);
4483
- if (!__gclass__$15) return -1;
4509
+ ]]], gmt$16, 0, attrs_table$16, PRIVATE_DATA$16, 0, 0, 0, 0);
4510
+ if (!__gclass__$16) return -1;
4484
4511
  return 0;
4485
4512
  }
4486
4513
  /***************************************************************
4487
4514
  * Register GClass
4488
4515
  ***************************************************************/
4489
4516
  function register_c_yui_window_manager() {
4490
- return create_gclass$15(GCLASS_NAME$15);
4517
+ return create_gclass$16(GCLASS_NAME$16);
4491
4518
  }
4492
4519
  //#endregion
4493
4520
  //#region src/pager_helpers.js
@@ -4573,11 +4600,11 @@ function pager_back_action(stack, back_on_root) {
4573
4600
  /***************************************************************
4574
4601
  * Constants
4575
4602
  ***************************************************************/
4576
- var GCLASS_NAME$14 = "C_YUI_PAGER";
4603
+ var GCLASS_NAME$15 = "C_YUI_PAGER";
4577
4604
  /***************************************************************
4578
4605
  * Data
4579
4606
  ***************************************************************/
4580
- var attrs_table$14 = [
4607
+ var attrs_table$15 = [
4581
4608
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
4582
4609
  SDATA(data_type_t.DTP_STRING, "root_title", 0, "", "Title shown on the root page"),
4583
4610
  SDATA(data_type_t.DTP_BOOLEAN, "back_on_root", 0, true, "On the root page the back affordance emits EV_PAGER_EXIT"),
@@ -4585,15 +4612,15 @@ var attrs_table$14 = [
4585
4612
  SDATA(data_type_t.DTP_POINTER, "$container", 0, null, "HTMLElement root, mounted by the parent"),
4586
4613
  SDATA_END()
4587
4614
  ];
4588
- var PRIVATE_DATA$14 = { stack: null };
4589
- var __gclass__$14 = null;
4615
+ var PRIVATE_DATA$15 = { stack: null };
4616
+ var __gclass__$15 = null;
4590
4617
  /******************************
4591
4618
  * Framework Methods
4592
4619
  ******************************/
4593
4620
  /***************************************************************
4594
4621
  * Framework Method: Create
4595
4622
  ***************************************************************/
4596
- function mt_create$14(gobj) {
4623
+ function mt_create$15(gobj) {
4597
4624
  let priv = gobj.priv;
4598
4625
  priv.stack = [];
4599
4626
  build_ui$13(gobj);
@@ -4604,17 +4631,17 @@ function mt_create$14(gobj) {
4604
4631
  /***************************************************************
4605
4632
  * Framework Method: Start
4606
4633
  ***************************************************************/
4607
- function mt_start$13(gobj) {}
4634
+ function mt_start$14(gobj) {}
4608
4635
  /***************************************************************
4609
4636
  * Framework Method: Stop
4610
4637
  ***************************************************************/
4611
- function mt_stop$13(gobj) {
4638
+ function mt_stop$14(gobj) {
4612
4639
  gobj_stop_children(gobj);
4613
4640
  }
4614
4641
  /***************************************************************
4615
4642
  * Framework Method: Destroy
4616
4643
  ***************************************************************/
4617
- function mt_destroy$14(gobj) {
4644
+ function mt_destroy$15(gobj) {
4618
4645
  destroy_ui$9(gobj);
4619
4646
  }
4620
4647
  /***************************
@@ -4772,7 +4799,7 @@ function ac_push_page(gobj, event, kw, src) {
4772
4799
  let priv = gobj.priv;
4773
4800
  let resolved = resolve_panel$1(kw.content);
4774
4801
  if (!resolved.$el) {
4775
- log_error(`${GCLASS_NAME$14}: EV_PUSH_PAGE without content`);
4802
+ log_error(`${GCLASS_NAME$15}: EV_PUSH_PAGE without content`);
4776
4803
  return -1;
4777
4804
  }
4778
4805
  let $body = gobj_read_attr(gobj, "$container").querySelector(".yui-pager-body");
@@ -4825,7 +4852,7 @@ function ac_replace_page(gobj, event, kw, src) {
4825
4852
  let priv = gobj.priv;
4826
4853
  let resolved = resolve_panel$1(kw.content);
4827
4854
  if (!resolved.$el) {
4828
- log_error(`${GCLASS_NAME$14}: EV_REPLACE_PAGE without content`);
4855
+ log_error(`${GCLASS_NAME$15}: EV_REPLACE_PAGE without content`);
4829
4856
  return -1;
4830
4857
  }
4831
4858
  let $body = gobj_read_attr(gobj, "$container").querySelector(".yui-pager-body");
@@ -4892,17 +4919,17 @@ function ac_resize$4(gobj, event, kw, src) {
4892
4919
  /***************************
4893
4920
  * FSM
4894
4921
  ***************************/
4895
- var gmt$14 = {
4896
- mt_create: mt_create$14,
4897
- mt_start: mt_start$13,
4898
- mt_stop: mt_stop$13,
4899
- mt_destroy: mt_destroy$14
4922
+ var gmt$15 = {
4923
+ mt_create: mt_create$15,
4924
+ mt_start: mt_start$14,
4925
+ mt_stop: mt_stop$14,
4926
+ mt_destroy: mt_destroy$15
4900
4927
  };
4901
4928
  /***************************************************************
4902
4929
  * Create the GClass
4903
4930
  ***************************************************************/
4904
- function create_gclass$14(gclass_name) {
4905
- if (__gclass__$14) {
4931
+ function create_gclass$15(gclass_name) {
4932
+ if (__gclass__$15) {
4906
4933
  log_error(`GClass ALREADY created: ${gclass_name}`);
4907
4934
  return -1;
4908
4935
  }
@@ -4953,7 +4980,7 @@ function create_gclass$14(gclass_name) {
4953
4980
  null
4954
4981
  ]
4955
4982
  ]]];
4956
- __gclass__$14 = gclass_create(gclass_name, [
4983
+ __gclass__$15 = gclass_create(gclass_name, [
4957
4984
  ["EV_PUSH_PAGE", 0],
4958
4985
  ["EV_POP_PAGE", 0],
4959
4986
  ["EV_BACK", 0],
@@ -4966,15 +4993,15 @@ function create_gclass$14(gclass_name) {
4966
4993
  ["EV_PAGE_SHOWN", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
4967
4994
  ["EV_PAGE_DISCARD", event_flag_t.EVF_OUTPUT_EVENT],
4968
4995
  ["EV_PAGER_EXIT", event_flag_t.EVF_OUTPUT_EVENT]
4969
- ], states, gmt$14, 0, attrs_table$14, PRIVATE_DATA$14, 0, 0, 0, 0);
4970
- if (!__gclass__$14) return -1;
4996
+ ], states, gmt$15, 0, attrs_table$15, PRIVATE_DATA$15, 0, 0, 0, 0);
4997
+ if (!__gclass__$15) return -1;
4971
4998
  return 0;
4972
4999
  }
4973
5000
  /***************************************************************
4974
5001
  * Register GClass
4975
5002
  ***************************************************************/
4976
5003
  function register_c_yui_pager() {
4977
- return create_gclass$14(GCLASS_NAME$14);
5004
+ return create_gclass$15(GCLASS_NAME$15);
4978
5005
  }
4979
5006
  //#endregion
4980
5007
  //#region src/wizard_helpers.js
@@ -5095,11 +5122,11 @@ function wizard_should_validate(linear, has_gobj) {
5095
5122
  /***************************************************************
5096
5123
  * Constants
5097
5124
  ***************************************************************/
5098
- var GCLASS_NAME$13 = "C_YUI_WIZARD";
5125
+ var GCLASS_NAME$14 = "C_YUI_WIZARD";
5099
5126
  /***************************************************************
5100
5127
  * Data
5101
5128
  ***************************************************************/
5102
- var attrs_table$13 = [
5129
+ var attrs_table$14 = [
5103
5130
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
5104
5131
  SDATA(data_type_t.DTP_STRING, "confirm_label", 0, "confirm", "i18n key of the last-step primary button"),
5105
5132
  SDATA(data_type_t.DTP_STRING, "next_label", 0, "next", "i18n key of the primary button (not last step)"),
@@ -5109,20 +5136,20 @@ var attrs_table$13 = [
5109
5136
  SDATA(data_type_t.DTP_POINTER, "$container", 0, null, "HTMLElement root, mounted by the parent"),
5110
5137
  SDATA_END()
5111
5138
  ];
5112
- var PRIVATE_DATA$13 = {
5139
+ var PRIVATE_DATA$14 = {
5113
5140
  steps: null,
5114
5141
  idx: 0,
5115
5142
  acc: null,
5116
5143
  awaiting: false
5117
5144
  };
5118
- var __gclass__$13 = null;
5145
+ var __gclass__$14 = null;
5119
5146
  /******************************
5120
5147
  * Framework Methods
5121
5148
  ******************************/
5122
5149
  /***************************************************************
5123
5150
  * Framework Method: Create
5124
5151
  ***************************************************************/
5125
- function mt_create$13(gobj) {
5152
+ function mt_create$14(gobj) {
5126
5153
  let priv = gobj.priv;
5127
5154
  priv.steps = [];
5128
5155
  priv.idx = 0;
@@ -5136,17 +5163,17 @@ function mt_create$13(gobj) {
5136
5163
  /***************************************************************
5137
5164
  * Framework Method: Start
5138
5165
  ***************************************************************/
5139
- function mt_start$12(gobj) {}
5166
+ function mt_start$13(gobj) {}
5140
5167
  /***************************************************************
5141
5168
  * Framework Method: Stop
5142
5169
  ***************************************************************/
5143
- function mt_stop$12(gobj) {
5170
+ function mt_stop$13(gobj) {
5144
5171
  gobj_stop_children(gobj);
5145
5172
  }
5146
5173
  /***************************************************************
5147
5174
  * Framework Method: Destroy
5148
5175
  ***************************************************************/
5149
- function mt_destroy$13(gobj) {
5176
+ function mt_destroy$14(gobj) {
5150
5177
  destroy_ui$8(gobj);
5151
5178
  }
5152
5179
  /***************************
@@ -5353,7 +5380,7 @@ function ac_set_steps(gobj, event, kw, src) {
5353
5380
  let priv = gobj.priv;
5354
5381
  let steps_in = kw && kw.steps || [];
5355
5382
  if (steps_in.length === 0) {
5356
- log_error(`${GCLASS_NAME$13}: EV_SET_STEPS with no steps`);
5383
+ log_error(`${GCLASS_NAME$14}: EV_SET_STEPS with no steps`);
5357
5384
  return -1;
5358
5385
  }
5359
5386
  let $body = gobj_read_attr(gobj, "$container").querySelector(".yui-wizard-body");
@@ -5363,7 +5390,7 @@ function ac_set_steps(gobj, event, kw, src) {
5363
5390
  let st = steps_in[i];
5364
5391
  let resolved = resolve_panel(st.content);
5365
5392
  if (!resolved.$el) {
5366
- log_error(`${GCLASS_NAME$13}: step '${st.id}' has no content`);
5393
+ log_error(`${GCLASS_NAME$14}: step '${st.id}' has no content`);
5367
5394
  return -1;
5368
5395
  }
5369
5396
  resolved.$el.classList.add("is-hidden");
@@ -5497,17 +5524,17 @@ function ac_resize$3(gobj, event, kw, src) {
5497
5524
  /***************************
5498
5525
  * FSM
5499
5526
  ***************************/
5500
- var gmt$13 = {
5501
- mt_create: mt_create$13,
5502
- mt_start: mt_start$12,
5503
- mt_stop: mt_stop$12,
5504
- mt_destroy: mt_destroy$13
5527
+ var gmt$14 = {
5528
+ mt_create: mt_create$14,
5529
+ mt_start: mt_start$13,
5530
+ mt_stop: mt_stop$13,
5531
+ mt_destroy: mt_destroy$14
5505
5532
  };
5506
5533
  /***************************************************************
5507
5534
  * Create the GClass
5508
5535
  ***************************************************************/
5509
- function create_gclass$13(gclass_name) {
5510
- if (__gclass__$13) {
5536
+ function create_gclass$14(gclass_name) {
5537
+ if (__gclass__$14) {
5511
5538
  log_error(`GClass ALREADY created: ${gclass_name}`);
5512
5539
  return -1;
5513
5540
  }
@@ -5568,7 +5595,7 @@ function create_gclass$13(gclass_name) {
5568
5595
  null
5569
5596
  ]
5570
5597
  ]]];
5571
- __gclass__$13 = gclass_create(gclass_name, [
5598
+ __gclass__$14 = gclass_create(gclass_name, [
5572
5599
  ["EV_SET_STEPS", 0],
5573
5600
  ["EV_NEXT", 0],
5574
5601
  ["EV_PREV", 0],
@@ -5584,15 +5611,15 @@ function create_gclass$13(gclass_name) {
5584
5611
  ["EV_WIZARD_DONE", event_flag_t.EVF_OUTPUT_EVENT],
5585
5612
  ["EV_WIZARD_CANCEL", event_flag_t.EVF_OUTPUT_EVENT],
5586
5613
  ["EV_STEP_VALIDATE", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_NO_WARN_SUBS]
5587
- ], states, gmt$13, 0, attrs_table$13, PRIVATE_DATA$13, 0, 0, 0, 0);
5588
- if (!__gclass__$13) return -1;
5614
+ ], states, gmt$14, 0, attrs_table$14, PRIVATE_DATA$14, 0, 0, 0, 0);
5615
+ if (!__gclass__$14) return -1;
5589
5616
  return 0;
5590
5617
  }
5591
5618
  /***************************************************************
5592
5619
  * Register GClass
5593
5620
  ***************************************************************/
5594
5621
  function register_c_yui_wizard() {
5595
- return create_gclass$13(GCLASS_NAME$13);
5622
+ return create_gclass$14(GCLASS_NAME$14);
5596
5623
  }
5597
5624
  //#endregion
5598
5625
  //#region src/yui_inputs.js
@@ -5762,11 +5789,11 @@ function yui_watch_theme(gobj, event = "EV_THEME") {
5762
5789
  /***************************************************************
5763
5790
  * Constants
5764
5791
  ***************************************************************/
5765
- var GCLASS_NAME$12 = "C_YUI_FORM";
5792
+ var GCLASS_NAME$13 = "C_YUI_FORM";
5766
5793
  /***************************************************************
5767
5794
  * Data
5768
5795
  ***************************************************************/
5769
- var attrs_table$12 = [
5796
+ var attrs_table$13 = [
5770
5797
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of publishing messages"),
5771
5798
  SDATA(data_type_t.DTP_POINTER, "$parent", 0, null, "$container will be appended to $parent if not null, else do it manually"),
5772
5799
  SDATA(data_type_t.DTP_POINTER, "template", 0, "<div>You must supply a template for form</div>", "Template for form, object -> TEMPLATE, array -> DESC"),
@@ -5794,15 +5821,15 @@ var attrs_table$12 = [
5794
5821
  SDATA(data_type_t.DTP_BOOLEAN, "changes", 0, false, "Indicates if changes have been made"),
5795
5822
  SDATA_END()
5796
5823
  ];
5797
- var PRIVATE_DATA$12 = {};
5798
- var __gclass__$12 = null;
5824
+ var PRIVATE_DATA$13 = {};
5825
+ var __gclass__$13 = null;
5799
5826
  /***************************
5800
5827
  * Framework Methods
5801
5828
  ***************************/
5802
5829
  /************************************************************
5803
5830
  * Framework Method create
5804
5831
  ************************************************************/
5805
- function mt_create$12(gobj) {
5832
+ function mt_create$13(gobj) {
5806
5833
  let subscriber = gobj_read_pointer_attr(gobj, "subscriber");
5807
5834
  if (!subscriber) subscriber = gobj_parent(gobj);
5808
5835
  gobj_subscribe_event(gobj, null, {}, subscriber);
@@ -5814,20 +5841,20 @@ function mt_create$12(gobj) {
5814
5841
  * In this point, all children
5815
5842
  * and subscriptions are already deleted.
5816
5843
  ************************************************************/
5817
- function mt_destroy$12(gobj) {
5844
+ function mt_destroy$13(gobj) {
5818
5845
  destroy_ui$7(gobj);
5819
5846
  }
5820
5847
  /************************************************************
5821
5848
  * Framework Method start
5822
5849
  ************************************************************/
5823
- function mt_start$11(gobj) {
5850
+ function mt_start$12(gobj) {
5824
5851
  let record = gobj_read_attr(gobj, "record");
5825
5852
  if (record) gobj_send_event(gobj, "EV_LOAD_RECORD", record, gobj);
5826
5853
  }
5827
5854
  /************************************************************
5828
5855
  * Framework Method stop
5829
5856
  ************************************************************/
5830
- function mt_stop$11(gobj) {}
5857
+ function mt_stop$12(gobj) {}
5831
5858
  /***************************
5832
5859
  * Local Methods
5833
5860
  ***************************/
@@ -7838,17 +7865,17 @@ function ac_timeout(gobj, event, kw, src) {
7838
7865
  /***************************
7839
7866
  * FSM
7840
7867
  ***************************/
7841
- var gmt$12 = {
7842
- mt_create: mt_create$12,
7843
- mt_start: mt_start$11,
7844
- mt_stop: mt_stop$11,
7845
- mt_destroy: mt_destroy$12
7868
+ var gmt$13 = {
7869
+ mt_create: mt_create$13,
7870
+ mt_start: mt_start$12,
7871
+ mt_stop: mt_stop$12,
7872
+ mt_destroy: mt_destroy$13
7846
7873
  };
7847
7874
  /***************************************************************
7848
7875
  * Create the GClass
7849
7876
  ***************************************************************/
7850
- function create_gclass$12(gclass_name) {
7851
- if (__gclass__$12) {
7877
+ function create_gclass$13(gclass_name) {
7878
+ if (__gclass__$13) {
7852
7879
  log_error(`GClass ALREADY created: ${gclass_name}`);
7853
7880
  return -1;
7854
7881
  }
@@ -7929,7 +7956,7 @@ function create_gclass$12(gclass_name) {
7929
7956
  null
7930
7957
  ]
7931
7958
  ]]];
7932
- __gclass__$12 = gclass_create(gclass_name, [
7959
+ __gclass__$13 = gclass_create(gclass_name, [
7933
7960
  ["EV_LOAD_RECORD", 0],
7934
7961
  ["EV_SAVE_RECORD", event_flag_t.EVF_OUTPUT_EVENT],
7935
7962
  ["EV_UNDO_RECORD", 0],
@@ -7945,16 +7972,16 @@ function create_gclass$12(gclass_name) {
7945
7972
  ["EV_SHOW", 0],
7946
7973
  ["EV_HIDE", 0],
7947
7974
  ["EV_TIMEOUT", 0]
7948
- ], states, gmt$12, 0, attrs_table$12, PRIVATE_DATA$12, 0, 0, 0, 0);
7949
- if (!__gclass__$12) return -1;
7975
+ ], states, gmt$13, 0, attrs_table$13, PRIVATE_DATA$13, 0, 0, 0, 0);
7976
+ if (!__gclass__$13) return -1;
7950
7977
  return 0;
7951
7978
  }
7952
7979
  /***************************************************************
7953
7980
  * Register GClass
7954
7981
  ***************************************************************/
7955
7982
  function register_c_yui_form() {
7956
- if (gclass_find_by_name(GCLASS_NAME$12, false)) return 0;
7957
- return create_gclass$12(GCLASS_NAME$12);
7983
+ if (gclass_find_by_name(GCLASS_NAME$13, false)) return 0;
7984
+ return create_gclass$13(GCLASS_NAME$13);
7958
7985
  }
7959
7986
  //#endregion
7960
7987
  //#region src/lib_maplibre.js
@@ -8114,11 +8141,11 @@ var MarkerControl = class {
8114
8141
  /***************************************************************
8115
8142
  * Constants
8116
8143
  ***************************************************************/
8117
- var GCLASS_NAME$11 = "C_YUI_MAP";
8144
+ var GCLASS_NAME$12 = "C_YUI_MAP";
8118
8145
  /***************************************************************
8119
8146
  * Data
8120
8147
  ***************************************************************/
8121
- var attrs_table$11 = [
8148
+ var attrs_table$12 = [
8122
8149
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
8123
8150
  SDATA(data_type_t.DTP_JSON, "devices", "[]", null, "List of devices"),
8124
8151
  SDATA(data_type_t.DTP_JSON, "map_settings", 0, {
@@ -8139,7 +8166,7 @@ var attrs_table$11 = [
8139
8166
  SDATA(data_type_t.DTP_INTEGER, "timeout_idle", 0, 5, "Idle timeout in seconds"),
8140
8167
  SDATA_END()
8141
8168
  ];
8142
- var PRIVATE_DATA$11 = {
8169
+ var PRIVATE_DATA$12 = {
8143
8170
  xmap: null,
8144
8171
  geojson: null,
8145
8172
  resizeObserver: null,
@@ -8148,21 +8175,21 @@ var PRIVATE_DATA$11 = {
8148
8175
  markers: {},
8149
8176
  draggedFeature: null
8150
8177
  };
8151
- var __gclass__$11 = null;
8178
+ var __gclass__$12 = null;
8152
8179
  /******************************
8153
8180
  * Framework Methods
8154
8181
  ******************************/
8155
8182
  /***************************************************************
8156
8183
  * Framework Method: Create
8157
8184
  ***************************************************************/
8158
- function mt_create$11(gobj) {
8185
+ function mt_create$12(gobj) {
8159
8186
  let priv = gobj.priv;
8160
8187
  let subscriber = gobj_read_pointer_attr(gobj, "subscriber");
8161
8188
  if (!subscriber) subscriber = gobj_parent(gobj);
8162
8189
  gobj_subscribe_event(gobj, null, {}, subscriber);
8163
8190
  let map_settings = json_deep_copy(gobj_read_attr(gobj, "map_settings"));
8164
8191
  let $map = gobj_read_attr(gobj, "$map");
8165
- if ($map) $map.classList.add(GCLASS_NAME$11);
8192
+ if ($map) $map.classList.add(GCLASS_NAME$12);
8166
8193
  Object.assign(map_settings, { container: $map });
8167
8194
  priv.onClick = (ev) => {
8168
8195
  onClick(gobj, ev);
@@ -8211,7 +8238,7 @@ function mt_create$11(gobj) {
8211
8238
  /***************************************************************
8212
8239
  * Framework Method: Destroy
8213
8240
  ***************************************************************/
8214
- function mt_destroy$11(gobj) {
8241
+ function mt_destroy$12(gobj) {
8215
8242
  let priv = gobj.priv;
8216
8243
  if (priv.resizeObserver) {
8217
8244
  priv.resizeObserver.disconnect();
@@ -8627,19 +8654,19 @@ function ac_hide$7(gobj, event, kw, src) {
8627
8654
  /***************************
8628
8655
  * FSM
8629
8656
  ***************************/
8630
- var gmt$11 = {
8631
- mt_create: mt_create$11,
8632
- mt_destroy: mt_destroy$11
8657
+ var gmt$12 = {
8658
+ mt_create: mt_create$12,
8659
+ mt_destroy: mt_destroy$12
8633
8660
  };
8634
8661
  /***************************************************************
8635
8662
  * Create the GClass
8636
8663
  ***************************************************************/
8637
- function create_gclass$11(gclass_name) {
8638
- if (__gclass__$11) {
8664
+ function create_gclass$12(gclass_name) {
8665
+ if (__gclass__$12) {
8639
8666
  log_error(`GClass ALREADY created: ${gclass_name}`);
8640
8667
  return -1;
8641
8668
  }
8642
- __gclass__$11 = gclass_create(gclass_name, [
8669
+ __gclass__$12 = gclass_create(gclass_name, [
8643
8670
  ["EV_EDIT_MAP", 0],
8644
8671
  ["EV_CONTROL_MAP", 0],
8645
8672
  ["EV_MAP_ON_LOAD", 0],
@@ -8683,15 +8710,15 @@ function create_gclass$11(gclass_name) {
8683
8710
  ac_hide$7,
8684
8711
  null
8685
8712
  ]
8686
- ]]], gmt$11, 0, attrs_table$11, PRIVATE_DATA$11, 0, 0, 0, 0);
8687
- if (!__gclass__$11) return -1;
8713
+ ]]], gmt$12, 0, attrs_table$12, PRIVATE_DATA$12, 0, 0, 0, 0);
8714
+ if (!__gclass__$12) return -1;
8688
8715
  return 0;
8689
8716
  }
8690
8717
  /***************************************************************
8691
8718
  * Register GClass
8692
8719
  ***************************************************************/
8693
8720
  function register_c_yui_map() {
8694
- return create_gclass$11(GCLASS_NAME$11);
8721
+ return create_gclass$12(GCLASS_NAME$12);
8695
8722
  }
8696
8723
  //#endregion
8697
8724
  //#region src/c_yui_uplot.js
@@ -8706,11 +8733,11 @@ function register_c_yui_map() {
8706
8733
  /***************************************************************
8707
8734
  * Constants
8708
8735
  ***************************************************************/
8709
- var GCLASS_NAME$10 = "C_YUI_UPLOT";
8736
+ var GCLASS_NAME$11 = "C_YUI_UPLOT";
8710
8737
  /***************************************************************
8711
8738
  * Data
8712
8739
  ***************************************************************/
8713
- var attrs_table$10 = [
8740
+ var attrs_table$11 = [
8714
8741
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
8715
8742
  SDATA(data_type_t.DTP_STRING, "title", 0, "", "Chart title"),
8716
8743
  SDATA(data_type_t.DTP_INTEGER, "width", 0, 800, "Chart width"),
@@ -8745,15 +8772,15 @@ var attrs_table$10 = [
8745
8772
  SDATA(data_type_t.DTP_INTEGER, "timeout_idle", 0, 5, "Idle timeout (seconds)"),
8746
8773
  SDATA_END()
8747
8774
  ];
8748
- var PRIVATE_DATA$10 = {};
8749
- var __gclass__$10 = null;
8775
+ var PRIVATE_DATA$11 = {};
8776
+ var __gclass__$11 = null;
8750
8777
  /******************************
8751
8778
  * Framework Methods
8752
8779
  ******************************/
8753
8780
  /***************************************************************
8754
8781
  * Framework Method: Create
8755
8782
  ***************************************************************/
8756
- function mt_create$10(gobj) {
8783
+ function mt_create$11(gobj) {
8757
8784
  build_ui$10(gobj);
8758
8785
  let subscriber = gobj_read_pointer_attr(gobj, "subscriber");
8759
8786
  if (!subscriber) subscriber = gobj_parent(gobj);
@@ -8762,15 +8789,15 @@ function mt_create$10(gobj) {
8762
8789
  /***************************************************************
8763
8790
  * Framework Method: Start
8764
8791
  ***************************************************************/
8765
- function mt_start$10(gobj) {}
8792
+ function mt_start$11(gobj) {}
8766
8793
  /***************************************************************
8767
8794
  * Framework Method: Stop
8768
8795
  ***************************************************************/
8769
- function mt_stop$10(gobj) {}
8796
+ function mt_stop$11(gobj) {}
8770
8797
  /***************************************************************
8771
8798
  * Framework Method: Destroy
8772
8799
  ***************************************************************/
8773
- function mt_destroy$10(gobj) {
8800
+ function mt_destroy$11(gobj) {
8774
8801
  let uplot = gobj_read_attr(gobj, "uplot");
8775
8802
  if (uplot) {
8776
8803
  uplot.destroy();
@@ -8936,21 +8963,21 @@ function ac_clear(gobj, event, kw, src) {
8936
8963
  /***************************
8937
8964
  * FSM
8938
8965
  ***************************/
8939
- var gmt$10 = {
8940
- mt_create: mt_create$10,
8941
- mt_start: mt_start$10,
8942
- mt_stop: mt_stop$10,
8943
- mt_destroy: mt_destroy$10
8966
+ var gmt$11 = {
8967
+ mt_create: mt_create$11,
8968
+ mt_start: mt_start$11,
8969
+ mt_stop: mt_stop$11,
8970
+ mt_destroy: mt_destroy$11
8944
8971
  };
8945
8972
  /***************************************************************
8946
8973
  * Create the GClass
8947
8974
  ***************************************************************/
8948
- function create_gclass$10(gclass_name) {
8949
- if (__gclass__$10) {
8975
+ function create_gclass$11(gclass_name) {
8976
+ if (__gclass__$11) {
8950
8977
  log_error(`GClass ALREADY created: ${gclass_name}`);
8951
8978
  return -1;
8952
8979
  }
8953
- __gclass__$10 = gclass_create(gclass_name, [
8980
+ __gclass__$11 = gclass_create(gclass_name, [
8954
8981
  ["EV_LOAD_DATA", 0],
8955
8982
  ["EV_ADD_SERIE", 0],
8956
8983
  ["EV_DEL_SERIE", 0],
@@ -8976,15 +9003,15 @@ function create_gclass$10(gclass_name) {
8976
9003
  ac_clear,
8977
9004
  null
8978
9005
  ]
8979
- ]]], gmt$10, 0, attrs_table$10, PRIVATE_DATA$10, 0, 0, 0, 0);
8980
- if (!__gclass__$10) return -1;
9006
+ ]]], gmt$11, 0, attrs_table$11, PRIVATE_DATA$11, 0, 0, 0, 0);
9007
+ if (!__gclass__$11) return -1;
8981
9008
  return 0;
8982
9009
  }
8983
9010
  /***************************************************************
8984
9011
  * Register GClass
8985
9012
  ***************************************************************/
8986
9013
  function register_c_yui_uplot() {
8987
- return create_gclass$10(GCLASS_NAME$10);
9014
+ return create_gclass$11(GCLASS_NAME$11);
8988
9015
  }
8989
9016
  //#endregion
8990
9017
  //#region src/yui_toolbar.js
@@ -9191,11 +9218,11 @@ function ensure_drag_canvas_patch() {
9191
9218
  /***************************************************************
9192
9219
  * Constants
9193
9220
  ***************************************************************/
9194
- var GCLASS_NAME$9 = "C_YUI_JSON_GRAPH";
9221
+ var GCLASS_NAME$10 = "C_YUI_JSON_GRAPH";
9195
9222
  /***************************************************************
9196
9223
  * Data
9197
9224
  ***************************************************************/
9198
- var attrs_table$9 = [
9225
+ var attrs_table$10 = [
9199
9226
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
9200
9227
  SDATA(data_type_t.DTP_STRING, "path", 0, "", "Root path label"),
9201
9228
  SDATA(data_type_t.DTP_JSON, "json_data", 0, null, "JSON data to visualize"),
@@ -9204,7 +9231,7 @@ var attrs_table$9 = [
9204
9231
  SDATA(data_type_t.DTP_STRING, "wide", 0, "36px", "Height of header"),
9205
9232
  SDATA_END()
9206
9233
  ];
9207
- var PRIVATE_DATA$9 = {
9234
+ var PRIVATE_DATA$10 = {
9208
9235
  canvas_id: "",
9209
9236
  graph: null,
9210
9237
  node_counter: 0,
@@ -9213,7 +9240,7 @@ var PRIVATE_DATA$9 = {
9213
9240
  resize_observer: null,
9214
9241
  _resize_raf: 0
9215
9242
  };
9216
- var __gclass__$9 = null;
9243
+ var __gclass__$10 = null;
9217
9244
  var __layout_registered__$1 = false;
9218
9245
  /***************************************************************
9219
9246
  * Type colors matching the original mx_json_viewer
@@ -9278,7 +9305,7 @@ function type_color(type, dark) {
9278
9305
  /***************************************************************
9279
9306
  * Framework Method: Create
9280
9307
  ***************************************************************/
9281
- function mt_create$9(gobj) {
9308
+ function mt_create$10(gobj) {
9282
9309
  let priv = gobj.priv;
9283
9310
  priv.canvas_id = "json-canvas-" + clean_name(gobj_name(gobj));
9284
9311
  gobj_write_str_attr(gobj, "canvas_id", priv.canvas_id);
@@ -9297,18 +9324,18 @@ function mt_create$9(gobj) {
9297
9324
  /***************************************************************
9298
9325
  * Framework Method: Start
9299
9326
  ***************************************************************/
9300
- function mt_start$9(gobj) {
9327
+ function mt_start$10(gobj) {
9301
9328
  build_graph$3(gobj);
9302
9329
  load_json(gobj);
9303
9330
  }
9304
9331
  /***************************************************************
9305
9332
  * Framework Method: Stop
9306
9333
  ***************************************************************/
9307
- function mt_stop$9(gobj) {}
9334
+ function mt_stop$10(gobj) {}
9308
9335
  /***************************************************************
9309
9336
  * Framework Method: Destroy
9310
9337
  ***************************************************************/
9311
- function mt_destroy$9(gobj) {
9338
+ function mt_destroy$10(gobj) {
9312
9339
  let priv = gobj.priv;
9313
9340
  if (priv.theme_observer) {
9314
9341
  priv.theme_observer.disconnect();
@@ -9904,17 +9931,17 @@ function ac_hide$6(gobj, event, kw, src) {
9904
9931
  /***************************
9905
9932
  * FSM
9906
9933
  ***************************/
9907
- var gmt$9 = {
9908
- mt_create: mt_create$9,
9909
- mt_start: mt_start$9,
9910
- mt_stop: mt_stop$9,
9911
- mt_destroy: mt_destroy$9
9934
+ var gmt$10 = {
9935
+ mt_create: mt_create$10,
9936
+ mt_start: mt_start$10,
9937
+ mt_stop: mt_stop$10,
9938
+ mt_destroy: mt_destroy$10
9912
9939
  };
9913
9940
  /***************************************************************
9914
9941
  * Create the GClass
9915
9942
  ***************************************************************/
9916
- function create_gclass$9(gclass_name) {
9917
- if (__gclass__$9) {
9943
+ function create_gclass$10(gclass_name) {
9944
+ if (__gclass__$10) {
9918
9945
  log_error(`GClass ALREADY created: ${gclass_name}`);
9919
9946
  return -1;
9920
9947
  }
@@ -9975,7 +10002,7 @@ function create_gclass$9(gclass_name) {
9975
10002
  null
9976
10003
  ]
9977
10004
  ]]];
9978
- __gclass__$9 = gclass_create(gclass_name, [
10005
+ __gclass__$10 = gclass_create(gclass_name, [
9979
10006
  ["EV_LOAD_DATA", 0],
9980
10007
  ["EV_REFRESH", 0],
9981
10008
  ["EV_THEME", 0],
@@ -9988,15 +10015,15 @@ function create_gclass$9(gclass_name) {
9988
10015
  ["EV_SHOW", 0],
9989
10016
  ["EV_HIDE", 0],
9990
10017
  ["EV_JSON_ITEM_CLICKED", event_flag_t.EVF_OUTPUT_EVENT]
9991
- ], states, gmt$9, 0, attrs_table$9, PRIVATE_DATA$9, 0, 0, 0, 0);
9992
- if (!__gclass__$9) return -1;
10018
+ ], states, gmt$10, 0, attrs_table$10, PRIVATE_DATA$10, 0, 0, 0, 0);
10019
+ if (!__gclass__$10) return -1;
9993
10020
  return 0;
9994
10021
  }
9995
10022
  /***************************************************************
9996
10023
  * Register GClass
9997
10024
  ***************************************************************/
9998
10025
  function register_c_yui_json_graph() {
9999
- return create_gclass$9(GCLASS_NAME$9);
10026
+ return create_gclass$10(GCLASS_NAME$10);
10000
10027
  }
10001
10028
  /************************************************************
10002
10029
  * JSON type discriminator (viewer vocabulary)
@@ -10173,19 +10200,19 @@ function format_epoch(value) {
10173
10200
  /***************************************************************
10174
10201
  * Constants
10175
10202
  ***************************************************************/
10176
- var GCLASS_NAME$8 = "C_YUI_JSON";
10203
+ var GCLASS_NAME$9 = "C_YUI_JSON";
10177
10204
  var MAX_RENDER_ROWS = 5e3;
10178
10205
  /***************************************************************
10179
10206
  * Data
10180
10207
  ***************************************************************/
10181
- var attrs_table$8 = [
10208
+ var attrs_table$9 = [
10182
10209
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
10183
10210
  SDATA(data_type_t.DTP_STRING, "title", 0, "", "Optional header title (i18n key)"),
10184
10211
  SDATA(data_type_t.DTP_JSON, "json_data", 0, null, "Initial JSON to render (usually already collapsed)"),
10185
10212
  SDATA(data_type_t.DTP_POINTER, "$container", 0, null, "HTMLElement root, mounted by the parent"),
10186
10213
  SDATA_END()
10187
10214
  ];
10188
- var PRIVATE_DATA$8 = {
10215
+ var PRIVATE_DATA$9 = {
10189
10216
  root: null,
10190
10217
  expanded: null,
10191
10218
  pending: null,
@@ -10194,14 +10221,14 @@ var PRIVATE_DATA$8 = {
10194
10221
  $tree: null,
10195
10222
  $search: null
10196
10223
  };
10197
- var __gclass__$8 = null;
10224
+ var __gclass__$9 = null;
10198
10225
  /******************************
10199
10226
  * Framework Methods
10200
10227
  ******************************/
10201
10228
  /***************************************************************
10202
10229
  * Framework Method: Create
10203
10230
  ***************************************************************/
10204
- function mt_create$8(gobj) {
10231
+ function mt_create$9(gobj) {
10205
10232
  let priv = gobj.priv;
10206
10233
  priv.expanded = /* @__PURE__ */ new Set();
10207
10234
  priv.pending = /* @__PURE__ */ new Set();
@@ -10217,17 +10244,17 @@ function mt_create$8(gobj) {
10217
10244
  /***************************************************************
10218
10245
  * Framework Method: Start
10219
10246
  ***************************************************************/
10220
- function mt_start$8(gobj) {
10247
+ function mt_start$9(gobj) {
10221
10248
  render_tree(gobj);
10222
10249
  }
10223
10250
  /***************************************************************
10224
10251
  * Framework Method: Stop
10225
10252
  ***************************************************************/
10226
- function mt_stop$8(gobj) {}
10253
+ function mt_stop$9(gobj) {}
10227
10254
  /***************************************************************
10228
10255
  * Framework Method: Destroy
10229
10256
  ***************************************************************/
10230
- function mt_destroy$8(gobj) {
10257
+ function mt_destroy$9(gobj) {
10231
10258
  destroy_ui$4(gobj);
10232
10259
  }
10233
10260
  /***************************
@@ -10731,7 +10758,7 @@ function ac_subtree_error(gobj, event, kw, src) {
10731
10758
  let path = kw.path || "";
10732
10759
  priv.pending.delete(path);
10733
10760
  priv.errors.set(path, kw.error || "error");
10734
- log_error(`${GCLASS_NAME$8}: subtree load failed at '${path}': ${kw.error || ""}`);
10761
+ log_error(`${GCLASS_NAME$9}: subtree load failed at '${path}': ${kw.error || ""}`);
10735
10762
  render_tree(gobj);
10736
10763
  return 0;
10737
10764
  }
@@ -10806,9 +10833,9 @@ function ac_copy_all(gobj, event, kw, src) {
10806
10833
  if (priv.root === null || priv.root === void 0) return 0;
10807
10834
  let text = JSON.stringify(priv.root, null, 4);
10808
10835
  if (navigator.clipboard && navigator.clipboard.writeText) navigator.clipboard.writeText(text).catch(function(e) {
10809
- log_error(`${GCLASS_NAME$8}: clipboard write failed: ${e}`);
10836
+ log_error(`${GCLASS_NAME$9}: clipboard write failed: ${e}`);
10810
10837
  });
10811
- else log_error(`${GCLASS_NAME$8}: clipboard API unavailable`);
10838
+ else log_error(`${GCLASS_NAME$9}: clipboard API unavailable`);
10812
10839
  return 0;
10813
10840
  }
10814
10841
  /************************************************************
@@ -10847,17 +10874,17 @@ function ac_refresh$3(gobj, event, kw, src) {
10847
10874
  /***************************
10848
10875
  * FSM
10849
10876
  ***************************/
10850
- var gmt$8 = {
10851
- mt_create: mt_create$8,
10852
- mt_start: mt_start$8,
10853
- mt_stop: mt_stop$8,
10854
- mt_destroy: mt_destroy$8
10877
+ var gmt$9 = {
10878
+ mt_create: mt_create$9,
10879
+ mt_start: mt_start$9,
10880
+ mt_stop: mt_stop$9,
10881
+ mt_destroy: mt_destroy$9
10855
10882
  };
10856
10883
  /***************************************************************
10857
10884
  * Create the GClass
10858
10885
  ***************************************************************/
10859
- function create_gclass$8(gclass_name) {
10860
- if (__gclass__$8) {
10886
+ function create_gclass$9(gclass_name) {
10887
+ if (__gclass__$9) {
10861
10888
  log_error(`GClass ALREADY created: ${gclass_name}`);
10862
10889
  return -1;
10863
10890
  }
@@ -10954,7 +10981,7 @@ function create_gclass$8(gclass_name) {
10954
10981
  null
10955
10982
  ]
10956
10983
  ]]];
10957
- __gclass__$8 = gclass_create(gclass_name, [
10984
+ __gclass__$9 = gclass_create(gclass_name, [
10958
10985
  ["EV_SET_JSON", 0],
10959
10986
  ["EV_SUBTREE_LOADED", 0],
10960
10987
  ["EV_SUBTREE_ERROR", 0],
@@ -10969,15 +10996,15 @@ function create_gclass$8(gclass_name) {
10969
10996
  ["EV_SHOW", 0],
10970
10997
  ["EV_HIDE", 0],
10971
10998
  ["EV_EXPAND_PATH", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_NO_WARN_SUBS]
10972
- ], states, gmt$8, 0, attrs_table$8, PRIVATE_DATA$8, 0, 0, 0, 0);
10973
- if (!__gclass__$8) return -1;
10999
+ ], states, gmt$9, 0, attrs_table$9, PRIVATE_DATA$9, 0, 0, 0, 0);
11000
+ if (!__gclass__$9) return -1;
10974
11001
  return 0;
10975
11002
  }
10976
11003
  /***************************************************************
10977
11004
  * Register GClass
10978
11005
  ***************************************************************/
10979
11006
  function register_c_yui_json() {
10980
- return create_gclass$8(GCLASS_NAME$8);
11007
+ return create_gclass$9(GCLASS_NAME$9);
10981
11008
  }
10982
11009
  //#endregion
10983
11010
  //#region src/c_yui_gobj_tree_js.js
@@ -10992,11 +11019,11 @@ function register_c_yui_json() {
10992
11019
  /***************************************************************
10993
11020
  * Constants
10994
11021
  ***************************************************************/
10995
- var GCLASS_NAME$7 = "C_YUI_GOBJ_TREE_JS";
11022
+ var GCLASS_NAME$8 = "C_YUI_GOBJ_TREE_JS";
10996
11023
  /***************************************************************
10997
11024
  * Data
10998
11025
  ***************************************************************/
10999
- var attrs_table$7 = [
11026
+ var attrs_table$8 = [
11000
11027
  SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
11001
11028
  SDATA(data_type_t.DTP_POINTER, "$container", 0, null, "Container element"),
11002
11029
  SDATA(data_type_t.DTP_STRING, "canvas_id", 0, "", "Canvas ID"),
@@ -11005,7 +11032,7 @@ var attrs_table$7 = [
11005
11032
  SDATA(data_type_t.DTP_INTEGER, "collapse_threshold", 0, 10, "Auto-collapse a node whose direct children exceed this number. 0 disables auto-collapse."),
11006
11033
  SDATA_END()
11007
11034
  ];
11008
- var PRIVATE_DATA$7 = {
11035
+ var PRIVATE_DATA$8 = {
11009
11036
  canvas_id: "",
11010
11037
  graph: null,
11011
11038
  node_counter: 0,
@@ -11020,7 +11047,7 @@ var PRIVATE_DATA$7 = {
11020
11047
  resize_observer: null,
11021
11048
  _resize_raf: 0
11022
11049
  };
11023
- var __gclass__$7 = null;
11050
+ var __gclass__$8 = null;
11024
11051
  var __layout_registered__ = false;
11025
11052
  /***************************************************************
11026
11053
  * Node colors by role
@@ -11199,7 +11226,7 @@ function get_layout_cfg(layout_key) {
11199
11226
  /***************************************************************
11200
11227
  * Framework Method: Create
11201
11228
  ***************************************************************/
11202
- function mt_create$7(gobj) {
11229
+ function mt_create$8(gobj) {
11203
11230
  let priv = gobj.priv;
11204
11231
  priv.canvas_id = "gobj-tree-canvas-" + clean_name(gobj_name(gobj));
11205
11232
  gobj_write_str_attr(gobj, "canvas_id", priv.canvas_id);
@@ -11222,18 +11249,18 @@ function mt_create$7(gobj) {
11222
11249
  /***************************************************************
11223
11250
  * Framework Method: Start
11224
11251
  ***************************************************************/
11225
- function mt_start$7(gobj) {
11252
+ function mt_start$8(gobj) {
11226
11253
  build_graph$2(gobj);
11227
11254
  load_tree(gobj);
11228
11255
  }
11229
11256
  /***************************************************************
11230
11257
  * Framework Method: Stop
11231
11258
  ***************************************************************/
11232
- function mt_stop$7(gobj) {}
11259
+ function mt_stop$8(gobj) {}
11233
11260
  /***************************************************************
11234
11261
  * Framework Method: Destroy
11235
11262
  ***************************************************************/
11236
- function mt_destroy$7(gobj) {
11263
+ function mt_destroy$8(gobj) {
11237
11264
  let priv = gobj.priv;
11238
11265
  if (priv.theme_observer) {
11239
11266
  priv.theme_observer.disconnect();
@@ -12452,21 +12479,21 @@ function ac_hide$4(gobj, event, kw, src) {
12452
12479
  /***************************
12453
12480
  * FSM
12454
12481
  ***************************/
12455
- var gmt$7 = {
12456
- mt_create: mt_create$7,
12457
- mt_start: mt_start$7,
12458
- mt_stop: mt_stop$7,
12459
- mt_destroy: mt_destroy$7
12482
+ var gmt$8 = {
12483
+ mt_create: mt_create$8,
12484
+ mt_start: mt_start$8,
12485
+ mt_stop: mt_stop$8,
12486
+ mt_destroy: mt_destroy$8
12460
12487
  };
12461
12488
  /***************************************************************
12462
12489
  * Create the GClass
12463
12490
  ***************************************************************/
12464
- function create_gclass$7(gclass_name) {
12465
- if (__gclass__$7) {
12491
+ function create_gclass$8(gclass_name) {
12492
+ if (__gclass__$8) {
12466
12493
  log_error(`GClass ALREADY created: ${gclass_name}`);
12467
12494
  return -1;
12468
12495
  }
12469
- __gclass__$7 = gclass_create(gclass_name, [
12496
+ __gclass__$8 = gclass_create(gclass_name, [
12470
12497
  ["EV_REFRESH", 0],
12471
12498
  ["EV_THEME", 0],
12472
12499
  ["EV_CHANGE_LAYOUT", 0],
@@ -12552,14 +12579,247 @@ function create_gclass$7(gclass_name) {
12552
12579
  ac_hide$4,
12553
12580
  null
12554
12581
  ]
12555
- ]]], gmt$7, 0, attrs_table$7, PRIVATE_DATA$7, 0, 0, 0, 0);
12556
- if (!__gclass__$7) return -1;
12582
+ ]]], gmt$8, 0, attrs_table$8, PRIVATE_DATA$8, 0, 0, 0, 0);
12583
+ if (!__gclass__$8) return -1;
12557
12584
  return 0;
12558
12585
  }
12559
12586
  /***************************************************************
12560
12587
  * Register GClass
12561
12588
  ***************************************************************/
12562
12589
  function register_c_yui_gobj_tree_js() {
12590
+ return create_gclass$8(GCLASS_NAME$8);
12591
+ }
12592
+ //#endregion
12593
+ //#region src/c_yui_service_view.js
12594
+ /***********************************************************************
12595
+ * c_yui_service_view.js
12596
+ *
12597
+ * Mounting a view that TALKS TO A BACKEND.
12598
+ *
12599
+ * THE PROBLEM
12600
+ * -----------
12601
+ * A view that asks the backend for data does it with
12602
+ * gobj_command(remote, "...", kw, src = itself)
12603
+ * and C_IEVENT_CLI routes the answer back with
12604
+ * gobj_find_service(gobj_name(src))
12605
+ * which only finds REGISTERED SERVICES.
12606
+ *
12607
+ * Neither host creates one: C_YUI_SHELL mounts a route's view with
12608
+ * `gobj_create()` and C_YUI_NODE with `gobj_create_pure_child()`.
12609
+ * So a backend-talking view mounted directly never receives a single
12610
+ * answer — and not quietly: the ievent logs "service not found" once
12611
+ * per answer while the view sits empty forever.
12612
+ *
12613
+ * There is a second half. A route's `target.kw` is STATIC JSON, so
12614
+ * it cannot carry the live transport pointer the view needs. It has
12615
+ * to be resolved at mount time and injected.
12616
+ *
12617
+ * THE PIECE
12618
+ * ---------
12619
+ * Both halves had been written four separate times, in three repos,
12620
+ * each wrapper saying the same thing in its own header. They are
12621
+ * here now, in two shapes, because the four callers are not alike:
12622
+ *
12623
+ * yui_mount_service_view(host, spec) — the helper. For a wrapper
12624
+ * that has its OWN extras on top (bridging url segments to the
12625
+ * hosted view, rebinding it when a connection drops). Those
12626
+ * extras are app or route logic and do NOT belong here; the
12627
+ * wrapper keeps them and drops only the boilerplate.
12628
+ *
12629
+ * C_YUI_SERVICE_VIEW — the gclass, for a route with NO extras:
12630
+ * declare it in the route/node and name the view it hosts. It
12631
+ * is the helper plus a lifecycle, nothing more.
12632
+ *
12633
+ * CONTRACT of the hosted gclass:
12634
+ * - declares the attr the transport is injected under
12635
+ * (`gobj_remote_yuno` by default),
12636
+ * - builds its `$container` in mt_create (re-exposed as the
12637
+ * host's, which is what the shell/node mounts),
12638
+ * - flags EVF_PUBLIC_EVENT on what arrives from the backend
12639
+ * (EV_MT_COMMAND_ANSWER and anything the remote publishes): the
12640
+ * ievent drops events that are not public.
12641
+ *
12642
+ * NAMES: the service name must be UNIQUE per mount. A duplicate is
12643
+ * not fatal and that is the danger — gobj-js logs "service ALREADY
12644
+ * REGISTERED. Will be UPDATED" and REBINDS the name, so the answers
12645
+ * of one view would land in the other. Derive it from the route (or
12646
+ * from whatever else makes the mount unique: a connection id, a
12647
+ * workspace) and never from the gclass alone.
12648
+ *
12649
+ * Copyright (c) 2026, ArtGins.
12650
+ * All Rights Reserved.
12651
+ ***********************************************************************/
12652
+ /***************************************************************
12653
+ * Constants
12654
+ ***************************************************************/
12655
+ var GCLASS_NAME$7 = "C_YUI_SERVICE_VIEW";
12656
+ var DEFAULT_TRANSPORT_SERVICE = "__remote_service__";
12657
+ var DEFAULT_TRANSPORT_ATTR = "gobj_remote_yuno";
12658
+ /***************************************************************
12659
+ * Data
12660
+ ***************************************************************/
12661
+ var attrs_table$7 = [
12662
+ SDATA(data_type_t.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
12663
+ SDATA(data_type_t.DTP_STRING, "view_gclass", 0, "", "GClass of the hosted view (must be registered)"),
12664
+ SDATA(data_type_t.DTP_STRING, "service_name", 0, "", "Service name of the hosted view — UNIQUE per mount"),
12665
+ SDATA(data_type_t.DTP_JSON, "view_kw", 0, null, "kw passed to the hosted view"),
12666
+ SDATA(data_type_t.DTP_STRING, "transport_service", 0, DEFAULT_TRANSPORT_SERVICE, "Service name of the live transport"),
12667
+ SDATA(data_type_t.DTP_STRING, "transport_attr", 0, DEFAULT_TRANSPORT_ATTR, "Attr of the hosted view the transport is injected under"),
12668
+ SDATA(data_type_t.DTP_POINTER, "$container", 0, null, "Root HTMLElement"),
12669
+ SDATA_END()
12670
+ ];
12671
+ var PRIVATE_DATA$7 = { view: null };
12672
+ var __gclass__$7 = null;
12673
+ /***************************
12674
+ * Public helper
12675
+ ***************************/
12676
+ /************************************************************
12677
+ * Create `spec.gclass` as a NAMED SERVICE under `host`, with the
12678
+ * live transport injected, and return it (null on failure, error
12679
+ * already logged). The caller owns what happens next — starting
12680
+ * it, exposing its DOM, bridging routes into it.
12681
+ *
12682
+ * spec = {
12683
+ * gclass, // string, required — must be registered
12684
+ * name, // string, required — service name, unique per mount
12685
+ * kw, // object, optional — the view's kw
12686
+ * transport, // gobj | service name | omitted:
12687
+ * // a gobj is used as-is (the caller already
12688
+ * // resolved it — e.g. per connection), a string
12689
+ * // is looked up with gobj_find_service(), and
12690
+ * // omitted means "__remote_service__".
12691
+ * // null DISABLES injection: for a hosted view
12692
+ * // that takes its transport some other way.
12693
+ * transport_attr // string, optional — default "gobj_remote_yuno"
12694
+ * }
12695
+ ************************************************************/
12696
+ function yui_mount_service_view(host, spec) {
12697
+ if (!host || !is_gobj(host) || !spec) {
12698
+ log_error(`${GCLASS_NAME$7}: yui_mount_service_view without host or spec`);
12699
+ return null;
12700
+ }
12701
+ const gclass = spec.gclass;
12702
+ const name = spec.name;
12703
+ if (empty_string(gclass) || empty_string(name)) {
12704
+ log_error(`${gobj_short_name(host)}: mounting a service view needs gclass and name`);
12705
+ return null;
12706
+ }
12707
+ if (!gclass_find_by_name(gclass)) {
12708
+ log_error(`${gobj_short_name(host)}: gclass '${gclass}' is not registered`);
12709
+ return null;
12710
+ }
12711
+ let kw = Object.assign({}, spec.kw || {});
12712
+ let transport = Object.prototype.hasOwnProperty.call(spec, "transport") ? spec.transport : DEFAULT_TRANSPORT_SERVICE;
12713
+ if (transport !== null) {
12714
+ if (is_string(transport)) {
12715
+ const service_name = transport;
12716
+ transport = gobj_find_service(service_name);
12717
+ if (!transport) {
12718
+ log_error(`${gobj_short_name(host)}: transport service '${service_name}' not found`);
12719
+ return null;
12720
+ }
12721
+ }
12722
+ if (!is_gobj(transport)) {
12723
+ log_error(`${gobj_short_name(host)}: transport is not a gobj`);
12724
+ return null;
12725
+ }
12726
+ kw[spec.transport_attr || DEFAULT_TRANSPORT_ATTR] = transport;
12727
+ }
12728
+ const view = gobj_create_service(name, gclass, kw, host);
12729
+ if (!view) {
12730
+ log_error(`${gobj_short_name(host)}: cannot create '${gclass}' as '${name}'`);
12731
+ return null;
12732
+ }
12733
+ return view;
12734
+ }
12735
+ /************************************************************
12736
+ * The hosted view's $container, re-exposed as the host's — the
12737
+ * shell/node mounts the HOST, so without this nothing is drawn.
12738
+ * Never returns without setting one: an empty div beats a blank
12739
+ * screen with the reason only in the console.
12740
+ ************************************************************/
12741
+ function expose_view_container(host, view) {
12742
+ let $c = view ? gobj_read_attr(view, "$container") : null;
12743
+ if (!$c) {
12744
+ log_error(`${gobj_short_name(host)}: hosted view does not expose $container — check its mt_create`);
12745
+ $c = createElement2([
12746
+ "div",
12747
+ {},
12748
+ ""
12749
+ ]);
12750
+ }
12751
+ gobj_write_attr(host, "$container", $c);
12752
+ return $c;
12753
+ }
12754
+ /***************************
12755
+ * Framework Methods
12756
+ ***************************/
12757
+ /***************************************************************
12758
+ * Framework Method: Create
12759
+ ***************************************************************/
12760
+ function mt_create$7(gobj) {
12761
+ let priv = gobj.priv;
12762
+ let subscriber = gobj_read_pointer_attr(gobj, "subscriber");
12763
+ if (!subscriber) subscriber = gobj_parent(gobj);
12764
+ gobj_subscribe_event(gobj, null, {}, subscriber);
12765
+ priv.view = yui_mount_service_view(gobj, {
12766
+ gclass: gobj_read_str_attr(gobj, "view_gclass"),
12767
+ name: gobj_read_str_attr(gobj, "service_name"),
12768
+ kw: gobj_read_attr(gobj, "view_kw") || {},
12769
+ transport: gobj_read_str_attr(gobj, "transport_service"),
12770
+ transport_attr: gobj_read_str_attr(gobj, "transport_attr")
12771
+ });
12772
+ expose_view_container(gobj, priv.view);
12773
+ }
12774
+ /***************************************************************
12775
+ * Framework Method: Start
12776
+ *
12777
+ * The view starts HERE and not in mt_create, so its first
12778
+ * request goes out when the host shows it.
12779
+ ***************************************************************/
12780
+ function mt_start$7(gobj) {
12781
+ const view = gobj.priv.view;
12782
+ if (view && !gobj_is_running(view)) gobj_start(view);
12783
+ }
12784
+ /***************************************************************
12785
+ * Framework Method: Stop
12786
+ ***************************************************************/
12787
+ function mt_stop$7(gobj) {
12788
+ const view = gobj.priv.view;
12789
+ if (view && gobj_is_running(view)) gobj_stop(view);
12790
+ }
12791
+ /***************************************************************
12792
+ * Framework Method: Destroy
12793
+ *
12794
+ * The view is a SERVICE created with this gobj as its parent, so
12795
+ * gobj_destroy cascades onto it — and deregisters its name. Do
12796
+ * NOT destroy it again here.
12797
+ ***************************************************************/
12798
+ function mt_destroy$7(gobj) {
12799
+ let priv = gobj.priv;
12800
+ priv.view = null;
12801
+ const $c = gobj_read_attr(gobj, "$container");
12802
+ if ($c && $c.parentNode) $c.parentNode.removeChild($c);
12803
+ gobj_write_attr(gobj, "$container", null);
12804
+ }
12805
+ /***************************
12806
+ * FSM
12807
+ ***************************/
12808
+ var gmt$7 = {
12809
+ mt_create: mt_create$7,
12810
+ mt_start: mt_start$7,
12811
+ mt_stop: mt_stop$7,
12812
+ mt_destroy: mt_destroy$7
12813
+ };
12814
+ function create_gclass$7(gclass_name) {
12815
+ if (__gclass__$7) {
12816
+ log_error(`GClass ALREADY created: ${gclass_name}`);
12817
+ return -1;
12818
+ }
12819
+ __gclass__$7 = gclass_create(gclass_name, [], [["ST_IDLE", []]], gmt$7, 0, attrs_table$7, PRIVATE_DATA$7, 0, 0, 0, 0);
12820
+ return __gclass__$7 ? 0 : -1;
12821
+ }
12822
+ function register_c_yui_service_view() {
12563
12823
  return create_gclass$7(GCLASS_NAME$7);
12564
12824
  }
12565
12825
  //#endregion
@@ -53269,6 +53529,6 @@ function setup_frontend_view(self) {
53269
53529
  return win;
53270
53530
  }
53271
53531
  //#endregion
53272
- export { EditControl, MarkerControl, YUI_PERIODS, YUI_PERIODS_DEFAULT, YUI_ROLLING, addClasses, apply_dev_traces, attach_clear, build_dev_panel, dev_window_was_open, disableElements, enableElements, epoch_to_local_input, epoch_to_ms, fmt_epoch, getStrokeColor, infer_period, info_traffic, inject_svg_icons, is_current_period, iso_week, local_input_to_epoch, ms_to_epoch, period_bounds, period_bounds_epoch, period_label, period_name, period_shift, period_spec, period_start, refresh_clear, register_c_g6_nodes_tree, register_c_yui_form, register_c_yui_gobj_tree_js, register_c_yui_json, register_c_yui_json_graph, register_c_yui_map, register_c_yui_nav, register_c_yui_pager, register_c_yui_period, register_c_yui_shell, register_c_yui_treedb_graph, register_c_yui_treedb_schema, register_c_yui_treedb_topic_with_form, register_c_yui_treedb_topics, register_c_yui_uplot, register_c_yui_window, register_c_yui_window_manager, register_c_yui_wizard, removeChildElements, removeClasses, rolling_bounds, safe_locale, set_active_state, set_cancel_state, set_submit_state, setup_dev, setup_frontend_view, toggleClasses, yui_is_dark, yui_shell_close_drawer, yui_shell_close_dropdown, yui_shell_confirm_ok, yui_shell_confirm_yesno, yui_shell_confirm_yesnocancel, yui_shell_navigate, yui_shell_open_drawer, yui_shell_overlay_dismissed, yui_shell_pop_escape, yui_shell_push_escape, yui_shell_refresh_avatars, yui_shell_register_event_handler, yui_shell_register_overlay, yui_shell_set_avatar_provider, yui_shell_set_connection_state, yui_shell_set_sub_routes, yui_shell_set_toolbar_item_icon, yui_shell_set_translator, yui_shell_show_error, yui_shell_show_info, yui_shell_show_modal, yui_shell_show_route_map, yui_shell_show_warning, yui_shell_toggle_drawer, yui_shell_unpark_route, yui_theme_now, yui_toolbar, yui_watch_theme };
53532
+ export { EditControl, MarkerControl, YUI_PERIODS, YUI_PERIODS_DEFAULT, YUI_ROLLING, addClasses, apply_dev_traces, attach_clear, build_dev_panel, dev_window_was_open, disableElements, enableElements, epoch_to_local_input, epoch_to_ms, expose_view_container, fmt_epoch, getStrokeColor, infer_period, info_traffic, inject_svg_icons, is_current_period, iso_week, local_input_to_epoch, ms_to_epoch, period_bounds, period_bounds_epoch, period_label, period_name, period_shift, period_spec, period_start, refresh_clear, register_c_g6_nodes_tree, register_c_yui_form, register_c_yui_gobj_tree_js, register_c_yui_json, register_c_yui_json_graph, register_c_yui_map, register_c_yui_nav, register_c_yui_pager, register_c_yui_period, register_c_yui_service_view, register_c_yui_shell, register_c_yui_treedb_graph, register_c_yui_treedb_schema, register_c_yui_treedb_topic_with_form, register_c_yui_treedb_topics, register_c_yui_uplot, register_c_yui_window, register_c_yui_window_manager, register_c_yui_wizard, removeChildElements, removeClasses, rolling_bounds, safe_locale, set_active_state, set_cancel_state, set_submit_state, setup_dev, setup_frontend_view, toggleClasses, yui_is_dark, yui_mount_service_view, yui_shell_close_drawer, yui_shell_close_dropdown, yui_shell_confirm_ok, yui_shell_confirm_yesno, yui_shell_confirm_yesnocancel, yui_shell_navigate, yui_shell_open_drawer, yui_shell_overlay_dismissed, yui_shell_pop_escape, yui_shell_push_escape, yui_shell_refresh_avatars, yui_shell_register_event_handler, yui_shell_register_overlay, yui_shell_set_avatar_provider, yui_shell_set_connection_state, yui_shell_set_sub_routes, yui_shell_set_toolbar_item_icon, yui_shell_set_translator, yui_shell_show_error, yui_shell_show_info, yui_shell_show_modal, yui_shell_show_route_map, yui_shell_show_warning, yui_shell_toggle_drawer, yui_shell_unpark_route, yui_theme_now, yui_toolbar, yui_watch_theme };
53273
53533
 
53274
53534
  //# sourceMappingURL=gobj-ui.es.js.map