iobroker.mywebui 1.55.0 → 1.56.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/default-controls/controls/navigation/app-bar.control +1 -0
  2. package/default-controls/controls/navigation/menu-item.control +1 -0
  3. package/default-controls/controls/navigation/sidebar.control +1 -0
  4. package/dist/backend/3d-editor-integration.js +1 -1
  5. package/dist/backend/ImportmapCreator.js +1 -1
  6. package/dist/backend/UploadHelper.js +1 -1
  7. package/dist/backend/main.js +1 -1
  8. package/io-package.json +1 -1
  9. package/package.json +1 -1
  10. package/www/3d-editor/js/Animation.js +1 -1
  11. package/www/3d-editor/js/AnimationResizer.js +1 -1
  12. package/www/3d-editor/js/Command.js +1 -1
  13. package/www/3d-editor/js/Config.js +1 -1
  14. package/www/3d-editor/js/Editor.js +1 -1
  15. package/www/3d-editor/js/EditorControls.js +1 -1
  16. package/www/3d-editor/js/GLTFImportDialog.js +1 -1
  17. package/www/3d-editor/js/History.js +1 -1
  18. package/www/3d-editor/js/Loader.js +1 -1
  19. package/www/3d-editor/js/LoaderUtils.js +1 -1
  20. package/www/3d-editor/js/Menubar.Add.js +1 -1
  21. package/www/3d-editor/js/Menubar.Edit.js +1 -1
  22. package/www/3d-editor/js/Menubar.File.js +1 -1
  23. package/www/3d-editor/js/Menubar.Help.js +1 -1
  24. package/www/3d-editor/js/Menubar.Render.js +1 -1
  25. package/www/3d-editor/js/Menubar.Status.js +1 -1
  26. package/www/3d-editor/js/Menubar.View.js +1 -1
  27. package/www/3d-editor/js/Menubar.js +1 -1
  28. package/www/3d-editor/js/Player.js +1 -1
  29. package/www/3d-editor/js/Resizer.js +1 -1
  30. package/www/3d-editor/js/Script.js +1 -1
  31. package/www/3d-editor/js/Selector.js +1 -1
  32. package/www/3d-editor/js/Sidebar.Geometry.BoxGeometry.js +1 -1
  33. package/www/3d-editor/js/Sidebar.Geometry.BufferGeometry.js +1 -1
  34. package/www/3d-editor/js/Sidebar.Geometry.CapsuleGeometry.js +1 -1
  35. package/www/3d-editor/js/Sidebar.Geometry.CircleGeometry.js +1 -1
  36. package/www/3d-editor/js/Sidebar.Geometry.CylinderGeometry.js +1 -1
  37. package/www/3d-editor/js/Sidebar.Geometry.DodecahedronGeometry.js +1 -1
  38. package/www/3d-editor/js/Sidebar.Geometry.ExtrudeGeometry.js +1 -1
  39. package/www/3d-editor/js/Sidebar.Geometry.IcosahedronGeometry.js +1 -1
  40. package/www/3d-editor/js/Sidebar.Geometry.LatheGeometry.js +1 -1
  41. package/www/3d-editor/js/Sidebar.Geometry.Modifiers.js +1 -1
  42. package/www/3d-editor/js/Sidebar.Geometry.OctahedronGeometry.js +1 -1
  43. package/www/3d-editor/js/Sidebar.Geometry.PlaneGeometry.js +1 -1
  44. package/www/3d-editor/js/Sidebar.Geometry.RingGeometry.js +1 -1
  45. package/www/3d-editor/js/Sidebar.Geometry.ShapeGeometry.js +1 -1
  46. package/www/3d-editor/js/Sidebar.Geometry.SphereGeometry.js +1 -1
  47. package/www/3d-editor/js/Sidebar.Geometry.TetrahedronGeometry.js +1 -1
  48. package/www/3d-editor/js/Sidebar.Geometry.TextGeometry.js +1 -1
  49. package/www/3d-editor/js/Sidebar.Geometry.TorusGeometry.js +1 -1
  50. package/www/3d-editor/js/Sidebar.Geometry.TorusKnotGeometry.js +1 -1
  51. package/www/3d-editor/js/Sidebar.Geometry.TubeGeometry.js +1 -1
  52. package/www/3d-editor/js/Sidebar.Geometry.js +1 -1
  53. package/www/3d-editor/js/Sidebar.Material.BooleanProperty.js +1 -1
  54. package/www/3d-editor/js/Sidebar.Material.ColorProperty.js +1 -1
  55. package/www/3d-editor/js/Sidebar.Material.ConstantProperty.js +1 -1
  56. package/www/3d-editor/js/Sidebar.Material.MapProperty.js +1 -1
  57. package/www/3d-editor/js/Sidebar.Material.NumberProperty.js +1 -1
  58. package/www/3d-editor/js/Sidebar.Material.Program.js +1 -1
  59. package/www/3d-editor/js/Sidebar.Material.RangeValueProperty.js +1 -1
  60. package/www/3d-editor/js/Sidebar.Material.js +1 -1
  61. package/www/3d-editor/js/Sidebar.Object.js +1 -1
  62. package/www/3d-editor/js/Sidebar.Project.App.js +1 -1
  63. package/www/3d-editor/js/Sidebar.Project.Materials.js +1 -1
  64. package/www/3d-editor/js/Sidebar.Project.Renderer.js +1 -1
  65. package/www/3d-editor/js/Sidebar.Project.Resources.js +1 -1
  66. package/www/3d-editor/js/Sidebar.Project.js +1 -1
  67. package/www/3d-editor/js/Sidebar.Properties.js +1 -1
  68. package/www/3d-editor/js/Sidebar.Scene.js +1 -1
  69. package/www/3d-editor/js/Sidebar.Script.js +1 -1
  70. package/www/3d-editor/js/Sidebar.Settings.History.js +1 -1
  71. package/www/3d-editor/js/Sidebar.Settings.Shortcuts.js +1 -1
  72. package/www/3d-editor/js/Sidebar.Settings.js +1 -1
  73. package/www/3d-editor/js/Sidebar.js +1 -1
  74. package/www/3d-editor/js/Storage.js +1 -1
  75. package/www/3d-editor/js/Strings.js +1 -1
  76. package/www/3d-editor/js/TextureParametersDialog.js +1 -1
  77. package/www/3d-editor/js/Toolbar.js +1 -1
  78. package/www/3d-editor/js/Viewport.Controls.js +1 -1
  79. package/www/3d-editor/js/Viewport.Info.js +1 -1
  80. package/www/3d-editor/js/Viewport.Pathtracer.js +1 -1
  81. package/www/3d-editor/js/Viewport.ViewHelper.js +1 -1
  82. package/www/3d-editor/js/Viewport.XR.js +1 -1
  83. package/www/3d-editor/js/Viewport.js +1 -1
  84. package/www/3d-editor/js/commands/AddObjectCommand.js +1 -1
  85. package/www/3d-editor/js/commands/AddScriptCommand.js +1 -1
  86. package/www/3d-editor/js/commands/Commands.js +1 -1
  87. package/www/3d-editor/js/commands/MoveObjectCommand.js +1 -1
  88. package/www/3d-editor/js/commands/MultiCmdsCommand.js +1 -1
  89. package/www/3d-editor/js/commands/RemoveObjectCommand.js +1 -1
  90. package/www/3d-editor/js/commands/RemoveScriptCommand.js +1 -1
  91. package/www/3d-editor/js/commands/SetColorCommand.js +1 -1
  92. package/www/3d-editor/js/commands/SetGeometryCommand.js +1 -1
  93. package/www/3d-editor/js/commands/SetGeometryValueCommand.js +1 -1
  94. package/www/3d-editor/js/commands/SetMaterialColorCommand.js +1 -1
  95. package/www/3d-editor/js/commands/SetMaterialCommand.js +1 -1
  96. package/www/3d-editor/js/commands/SetMaterialMapCommand.js +1 -1
  97. package/www/3d-editor/js/commands/SetMaterialRangeCommand.js +1 -1
  98. package/www/3d-editor/js/commands/SetMaterialValueCommand.js +1 -1
  99. package/www/3d-editor/js/commands/SetMaterialVectorCommand.js +1 -1
  100. package/www/3d-editor/js/commands/SetPositionCommand.js +1 -1
  101. package/www/3d-editor/js/commands/SetRotationCommand.js +1 -1
  102. package/www/3d-editor/js/commands/SetScaleCommand.js +1 -1
  103. package/www/3d-editor/js/commands/SetSceneCommand.js +1 -1
  104. package/www/3d-editor/js/commands/SetScriptValueCommand.js +1 -1
  105. package/www/3d-editor/js/commands/SetShadowValueCommand.js +1 -1
  106. package/www/3d-editor/js/commands/SetTextureParametersCommand.js +1 -1
  107. package/www/3d-editor/js/commands/SetUuidCommand.js +1 -1
  108. package/www/3d-editor/js/commands/SetValueCommand.js +1 -1
  109. package/www/dist/frontend/bundle/chunk-3C6XC7RW.js +1 -1
  110. package/www/dist/frontend/bundle/chunk-43HEBO5G.js +3 -3
  111. package/www/dist/frontend/bundle/chunk-5MUGMRXU.js +1 -1
  112. package/www/dist/frontend/bundle/chunk-5UBRCTRX.js +3 -3
  113. package/www/dist/frontend/bundle/chunk-65A3PNMG.js +1 -1
  114. package/www/dist/frontend/bundle/chunk-7CWDQGAG.js +3 -3
  115. package/www/dist/frontend/bundle/chunk-7PT7IGUJ.js +3 -3
  116. package/www/dist/frontend/bundle/chunk-AI5PDLDE.js +3 -3
  117. package/www/dist/frontend/bundle/chunk-AWKVUUKN.js +2 -2
  118. package/www/dist/frontend/bundle/chunk-B6NXWGSB.js +1 -1
  119. package/www/dist/frontend/bundle/chunk-BHSHNRXW.js +1 -1
  120. package/www/dist/frontend/bundle/chunk-BVONDEOL.js +3 -3
  121. package/www/dist/frontend/bundle/chunk-DNCD2F6X.js +3 -3
  122. package/www/dist/frontend/bundle/chunk-FHF6DL5U.js +1 -1
  123. package/www/dist/frontend/bundle/chunk-FO56TEZH.js +2 -2
  124. package/www/dist/frontend/bundle/chunk-GLQNGCFL.js +1 -1
  125. package/www/dist/frontend/bundle/chunk-JBDSDK2C.js +3 -3
  126. package/www/dist/frontend/bundle/chunk-K6IV7LKW.js +1 -1
  127. package/www/dist/frontend/bundle/chunk-KY73TL6O.js +3 -3
  128. package/www/dist/frontend/bundle/chunk-MECWXZRN.js +1 -1
  129. package/www/dist/frontend/bundle/chunk-NQ7L7KNT.js +2 -2
  130. package/www/dist/frontend/bundle/chunk-P7EOR36H.js +1 -1
  131. package/www/dist/frontend/bundle/chunk-PJYK24KZ.js +1 -1
  132. package/www/dist/frontend/bundle/chunk-QJJGP23I.js +1 -1
  133. package/www/dist/frontend/bundle/chunk-QV4IBWXA.js +1 -1
  134. package/www/dist/frontend/bundle/chunk-R6IQDPAP.js +3 -3
  135. package/www/dist/frontend/bundle/chunk-SE6N4ZEN.js +1 -1
  136. package/www/dist/frontend/bundle/chunk-SQHXO2IT.js +2 -2
  137. package/www/dist/frontend/bundle/chunk-UIP324PP.js +1 -1
  138. package/www/dist/frontend/bundle/chunk-V4C5FGJL.js +3 -3
  139. package/www/dist/frontend/bundle/chunk-WED7CGWA.js +3 -3
  140. package/www/dist/frontend/bundle/chunk-WQ5H5LTG.js +3 -3
  141. package/www/dist/frontend/bundle/chunk-WU54NCEU.js +1 -1
  142. package/www/dist/frontend/bundle/chunk-XFO5FUCN.js +1 -1
  143. package/www/dist/frontend/bundle/chunk-YUSK4FN3.js +3 -3
  144. package/www/dist/frontend/bundle/chunk-Z34BSG5O.js +3 -3
  145. package/www/dist/frontend/bundle/common/IobrokerHandler.js +1 -1
  146. package/www/dist/frontend/bundle/runtime/CustomControls.js +1 -1
  147. package/www/dist/frontend/bundle/runtime/ScreenViewer.js +1 -1
  148. package/www/dist/frontend/bundle/runtime/controls.js +4 -4
  149. package/www/dist/frontend/bundle/runtime/init.js +3 -3
  150. package/www/dist/frontend/common/Common.globals.js +1 -1
  151. package/www/dist/frontend/common/IobrokerHandler.js +1 -1
  152. package/www/dist/frontend/common/Runtime.js +1 -1
  153. package/www/dist/frontend/config/CommandHandling.js +1 -1
  154. package/www/dist/frontend/config/ConfigureWebcomponentDesigner.js +1 -1
  155. package/www/dist/frontend/config/DockHelper.js +1 -1
  156. package/www/dist/frontend/config/IobrokerWebui3DDriveEngine.js +1 -1
  157. package/www/dist/frontend/config/IobrokerWebui3DScreenEditor.js +3 -3
  158. package/www/dist/frontend/config/IobrokerWebui3DScreenPropertiesPanel.js +2 -2
  159. package/www/dist/frontend/config/IobrokerWebui3DScreenViewer.js +3 -3
  160. package/www/dist/frontend/config/IobrokerWebuiAppShell.js +3 -3
  161. package/www/dist/frontend/config/IobrokerWebuiBindingsEditor.js +1 -1
  162. package/www/dist/frontend/config/IobrokerWebuiConfirmationWrapper.js +2 -2
  163. package/www/dist/frontend/config/IobrokerWebuiControlPropertiesEditor.js +3 -3
  164. package/www/dist/frontend/config/IobrokerWebuiDynamicPropsEditor.js +1 -1
  165. package/www/dist/frontend/config/IobrokerWebuiEventAssignment.js +1 -1
  166. package/www/dist/frontend/config/IobrokerWebuiIconsView.js +3 -3
  167. package/www/dist/frontend/config/IobrokerWebuiMonacoEditor.js +3 -3
  168. package/www/dist/frontend/config/IobrokerWebuiPropertyGrid.js +1 -1
  169. package/www/dist/frontend/config/IobrokerWebuiScreenEditor.js +1 -1
  170. package/www/dist/frontend/config/IobrokerWebuiScreensView.js +2 -2
  171. package/www/dist/frontend/config/IobrokerWebuiSignalPropertyEditor.js +1 -1
  172. package/www/dist/frontend/config/IobrokerWebuiSolutionExplorer.js +3 -3
  173. package/www/dist/frontend/config/IobrokerWebuiTranslationEditor.js +1 -1
  174. package/www/dist/frontend/config/IobrokerWebuiWidgetGallery.js +3 -3
  175. package/www/dist/frontend/helper/DialogHelper.js +3 -3
  176. package/www/dist/frontend/helper/EsprimaHelper.js +1 -1
  177. package/www/dist/frontend/helper/Helper.js +1 -1
  178. package/www/dist/frontend/helper/LayoutHelper.js +1 -1
  179. package/www/dist/frontend/helper/XmlHelper.js +1 -1
  180. package/www/dist/frontend/helper/ZipHelper.js +1 -1
  181. package/www/dist/frontend/runtime/AnimationService.js +1 -1
  182. package/www/dist/frontend/runtime/CustomControls.js +1 -1
  183. package/www/dist/frontend/runtime/DynamicElementProperties.js +1 -1
  184. package/www/dist/frontend/runtime/HabPanelLikeMenu.js +3 -3
  185. package/www/dist/frontend/runtime/NavigationShell.js +1 -0
  186. package/www/dist/frontend/runtime/ScreenViewer.js +3 -3
  187. package/www/dist/frontend/runtime/TranslateableText.js +2 -2
  188. package/www/dist/frontend/runtime/VisibilityService.js +1 -1
  189. package/www/dist/frontend/runtime/controls.js +1 -1
  190. package/www/dist/frontend/runtime/init.js +1 -1
  191. package/www/dist/frontend/scripting/IobrokerWebuiScriptSystem.js +1 -1
  192. package/www/dist/frontend/scripting/blockly/OpenScreen.js +1 -1
  193. package/www/dist/frontend/scripting/blockly/webuiBlocklyToolbox.js +1 -1
  194. package/www/dist/frontend/services/DynamicPropertiesHelper.js +1 -1
  195. package/www/dist/frontend/services/IobrokerWebuiBindableLocalObjectsService.js +1 -1
  196. package/www/dist/frontend/services/IobrokerWebuiBindableObjectDragDropService.js +1 -1
  197. package/www/dist/frontend/services/IobrokerWebuiBindableObjectsForPropertiesService.js +1 -1
  198. package/www/dist/frontend/services/IobrokerWebuiBindableObjectsService.js +1 -1
  199. package/www/dist/frontend/services/IobrokerWebuiConfigButtonProvider.js +1 -1
  200. package/www/dist/frontend/services/IobrokerWebuiCopyPasteService.js +1 -1
  201. package/www/dist/frontend/services/IobrokerWebuiCustomControlEventsService.js +1 -1
  202. package/www/dist/frontend/services/IobrokerWebuiCustomElementContextMenu.js +1 -1
  203. package/www/dist/frontend/services/IobrokerWebuiDemoProviderService.js +1 -1
  204. package/www/dist/frontend/services/IobrokerWebuiDynamicPropertiesService.js +1 -1
  205. package/www/dist/frontend/services/IobrokerWebuiEventsService.js +1 -1
  206. package/www/dist/frontend/services/IobrokerWebuiExternalDragDropService.js +1 -1
  207. package/www/dist/frontend/services/IobrokerWebuiLitPropertiesService.js +1 -1
  208. package/www/dist/frontend/services/IobrokerWebuiPropertiesService.js +1 -1
  209. package/www/dist/frontend/services/IobrokerWebuiPropertyGroupsService.js +1 -1
  210. package/www/dist/frontend/services/IobrokerWebuiRefactorService.js +1 -1
  211. package/www/dist/frontend/services/IobrokerWebuiScreenContextMenu.js +1 -1
  212. package/www/dist/frontend/services/IobrokerWebuiSpecialPropertiesService.js +1 -1
  213. package/www/dist/frontend/services/IobrokerWebuiSpectrumEditorService.js +1 -1
  214. package/www/dist/frontend/services/IobrokerWebuiVisibilityPropertiesService.js +1 -1
  215. package/www/dist/frontend/services/LayoutComponentsPropertiesService.js +1 -1
  216. package/www/dist/frontend/widgets/OrthoFlowLineTool.js +1 -1
  217. package/www/dist/frontend/widgets/customElementsObserver.js +1 -1
  218. package/www/dist/frontend/widgets/importWidgetFiles.js +1 -1
  219. package/www/dist/frontend/widgets/importWidgetFilesRuntime.js +1 -1
  220. package/www/dist/frontend/widgets/layout-components.js +1 -1
  221. package/www/dist/frontend/widgets/layout-placement-services.js +1 -1
  222. package/www/dist/frontend/widgets/testElement.js +1 -1
@@ -0,0 +1 @@
1
+ {"properties": {"caption": {"type": "string", "default": ""}, "icon": {"type": "string", "default": ""}, "bgColor": {"type": "color", "default": "#222222"}}, "settings": {"width": "100%", "height": "48px"}, "html": "<div id=\"bar\" class=\"bar\"><img id=\"barIcon\" class=\"bar-icon\" alt=\"\"/><span id=\"barCap\" class=\"bar-cap\"></span></div>", "style": ":host{display:block;width:100%;height:100%;}\n.bar{display:flex;align-items:center;gap:12px;height:100%;padding:0 12px 0 56px;color:#fff;box-sizing:border-box;}\n.bar-icon{height:30px;width:auto;}\n.bar-cap{font-size:16px;font-weight:600;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const cfg = (window.IOB && window.IOB.config && window.IOB.config.appBar) || {};\n const resolveImg = (img) => { if(!img) return ''; if(/^(https?:|data:|blob:|\\/)/.test(img)) return img; try{ return (window.IOB&&window.IOB.imagePrefix?window.IOB.imagePrefix:'')+img; }catch(e){ return img; } };\n const upd = () => {\n const bar = instance._getDomElement('bar');\n const ic = instance._getDomElement('barIcon');\n const cap = instance._getDomElement('barCap');\n if (bar) bar.style.background = instance.bgColor || cfg.bgColor || '#222222';\n const icon = instance.icon || cfg.icon;\n if (ic){ if(icon){ ic.src=resolveImg(icon); ic.style.display=''; } else ic.style.display='none'; }\n if (cap) cap.textContent = instance.caption || cfg.caption || '';\n };\n instance._assignEvent('caption-changed', upd);\n instance._assignEvent('icon-changed', upd);\n instance._assignEvent('bg-color-changed', upd);\n upd();\n}"}
@@ -0,0 +1 @@
1
+ {"properties": {"screenName": {"type": "string", "default": ""}, "title": {"type": "string", "default": "Item"}, "image": {"type": "string", "default": ""}, "selected": {"type": "boolean", "default": "false"}, "compact": {"type": "boolean", "default": "false"}}, "settings": {"width": "220px", "height": "44px"}, "html": "<div id=\"mi\" class=\"mi\"><img id=\"miImg\" class=\"mi-img\" alt=\"\"/><span id=\"miLabel\" class=\"mi-label\"></span></div>", "style": ":host{display:block;color:inherit;}\n.mi{display:flex;align-items:center;gap:12px;padding:11px 12px;cursor:pointer;white-space:nowrap;overflow:hidden;transition:background .12s;box-sizing:border-box;}\n.mi:hover{background:rgba(255,255,255,.08);}\n.mi.selected{background:var(--nav-selected-bg,rgba(255,255,255,.16));}\n.mi-img{width:24px;height:24px;object-fit:contain;flex-shrink:0;}\n.mi-label{overflow:hidden;text-overflow:ellipsis;}\n.mi.compact .mi-label{display:none;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const resolveImg = (img) => { if(!img) return ''; if(/^(https?:|data:|blob:|\\/)/.test(img)) return img; try{ return (window.IOB&&window.IOB.imagePrefix?window.IOB.imagePrefix:'')+img; }catch(e){ return img; } };\n const upd = () => {\n const img = instance._getDomElement('miImg');\n const lbl = instance._getDomElement('miLabel');\n const mi = instance._getDomElement('mi');\n if (img){ if(instance.image){ img.src=resolveImg(instance.image); img.style.display=''; } else { img.style.display='none'; } }\n if (lbl) lbl.textContent = instance.title || instance.screenName || '';\n if (mi){ mi.classList.toggle('selected', instance.selected===true || instance.selected==='true'); mi.classList.toggle('compact', instance.compact===true || instance.compact==='true'); }\n };\n instance._assignEvent('title-changed', upd);\n instance._assignEvent('image-changed', upd);\n instance._assignEvent('screen-name-changed', upd);\n instance._assignEvent('selected-changed', upd);\n instance._assignEvent('compact-changed', upd);\n const mi = instance._getDomElement('mi');\n if (mi) mi.addEventListener('click', () => {\n if (instance.screenName && window.IOB && window.IOB.changeView) window.IOB.changeView.emit(instance.screenName);\n instance.dispatchEvent(new CustomEvent('menuitemclick',{bubbles:true,composed:true,detail:{screenName:instance.screenName}}));\n });\n upd();\n}"}
@@ -0,0 +1 @@
1
+ {"properties": {}, "settings": {"width": "220px", "height": "100%"}, "html": "<div id=\"sb\" class=\"sb\"><div id=\"sbHdr\" class=\"sb-hdr\"></div><div id=\"sbItems\" class=\"sb-items\"></div></div>", "style": ":host{display:block;width:100%;height:100%;background:var(--nav-bg,#1b1b1b);color:var(--nav-fg,#ddd);box-sizing:border-box;}\n.sb{display:flex;flex-direction:column;height:100%;width:100%;}\n.sb-hdr{padding:12px;font-weight:700;border-bottom:1px solid rgba(255,255,255,.1);white-space:nowrap;overflow:hidden;}\n.sb-items{flex:1;overflow:auto;}", "script": "export function init(instance){\n instance._bindingsRefresh();\n const IOB = window.IOB;\n const cfg = (IOB && IOB.config && IOB.config.navigation) || {};\n const isDesigner = !!document.querySelector('iobroker-webui-app-shell');\n const sb=instance._getDomElement('sb'), hdr=instance._getDomElement('sbHdr'), items=instance._getDomElement('sbItems');\n if (hdr){ hdr.textContent=cfg.menuHeaderText||''; hdr.style.display=cfg.menuHeaderText?'':'none'; if(cfg.menuHeaderTextColor) hdr.style.color=cfg.menuHeaderTextColor; }\n if (sb){ if(cfg.bgColor) instance.style.setProperty('--nav-bg',cfg.bgColor); if(cfg.textColor) instance.style.setProperty('--nav-fg',cfg.textColor); }\n\n let state='expanded'; const ICONS_W=56; let burger=null; let hasItems=false;\n const navWidth = cfg.menuWidth ? (/^\\d+$/.test(String(cfg.menuWidth))?cfg.menuWidth+'px':String(cfg.menuWidth)) : '220px';\n const setActive=(name)=>{ if(items) items.querySelectorAll('webui-navigation-menu-item').forEach(mi=>{ mi.selected=(mi.screenName===name); }); };\n const navTo=(name)=>{ if(IOB&&IOB.changeView) IOB.changeView.emit(name); setActive(name); if(cfg.hideAfterSelection) setState('hidden'); };\n\n async function loadEntries(){\n if(!IOB||!IOB.getAllNames) return [];\n const names=await IOB.getAllNames('screen').catch(()=>[]);\n const list=[];\n for(const n of names){ const o=await IOB.getWebuiObject('screen',n).catch(()=>null); const nv=o&&o.settings&&o.settings.navigation; if(nv&&nv.show) list.push({name:n,title:nv.title||n,order:parseFloat(nv.order)||0,image:nv.image||''}); }\n list.sort((a,b)=>a.order-b.order); return list;\n }\n async function render(){\n const list=await loadEntries(); hasItems=list.length>0;\n if(items){ items.innerHTML='';\n for(const e of list){ const mi=document.createElement('webui-navigation-menu-item'); mi.screenName=e.name; mi.title=e.title; mi.image=e.image; mi.addEventListener('menuitemclick',()=>navTo(e.name)); items.appendChild(mi); }\n }\n if(!isDesigner && hasItems && !cfg.hideMenu) applyRuntimeLayout(); else if(!isDesigner) { const v=document.getElementById('viewer'); if(v){ v.style.left='0'; v.style.width='100%'; } instance.style.display='none'; }\n }\n function applyRuntimeLayout(){\n const ab=document.getElementById('__nav-appbar-host'); const top=ab?ab.offsetHeight:0;\n instance.style.cssText=`position:fixed;left:0;bottom:0;top:${top}px;z-index:99999;overflow:hidden;transition:width .2s,transform .2s;background:${cfg.bgColor||'#1b1b1b'};color:${cfg.textColor||'#ddd'};`;\n if(!burger){ burger=document.createElement('div'); burger.textContent='☰'; const inBar=top>0; burger.style.cssText=`position:fixed;top:${inBar?0:8}px;left:${inBar?0:8}px;z-index:100002;width:${inBar?top:40}px;height:${inBar?top:40}px;display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer;${inBar?'':'border-radius:6px;'}background:${cfg.showButtonBg||(inBar?'transparent':'rgba(0,0,0,.45)')};color:${cfg.showButtonColor||'#fff'};`; burger.onclick=cycle; document.body.appendChild(burger); }\n setState(state);\n }\n function setState(s){\n state=s; const v=document.getElementById('viewer'); const top=parseInt(instance.style.top)||0; let left='0px';\n const compact=(state==='icons');\n if(items) items.querySelectorAll('webui-navigation-menu-item').forEach(mi=>mi.compact=compact);\n if(state==='expanded'){ instance.style.width=navWidth; instance.style.transform='translateX(0)'; if(hdr)hdr.style.display=cfg.menuHeaderText?'':'none'; left=navWidth; }\n else if(state==='icons'){ instance.style.width=ICONS_W+'px'; instance.style.transform='translateX(0)'; if(hdr)hdr.style.display='none'; left=ICONS_W+'px'; }\n else { instance.style.transform='translateX(-110%)'; left='0px'; }\n if(v){ v.style.left=left; v.style.width=`calc(100% - ${left})`; v.style.top=top+'px'; v.style.height=`calc(100% - ${top}px)`; }\n }\n function cycle(){ const o=['expanded','icons','hidden']; let n=o[(o.indexOf(state)+1)%o.length]; if(n==='hidden'&&cfg.doNotHideCompletely)n='icons'; setState(n); }\n\n render();\n if(IOB&&IOB.changeView) IOB.changeView.on(v=>setActive(v));\n const sv=document.getElementById('viewer'); if(sv&&sv.screenName) setActive(sv.screenName);\n}"}