@eclipse-lyra/core 0.0.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.
Files changed (281) hide show
  1. package/dist/api/base-classes.d.ts +7 -0
  2. package/dist/api/base-classes.d.ts.map +1 -0
  3. package/dist/api/constants.d.ts +2 -0
  4. package/dist/api/constants.d.ts.map +1 -0
  5. package/dist/api/index.d.ts +6 -0
  6. package/dist/api/index.d.ts.map +1 -0
  7. package/dist/api/index.js +84 -0
  8. package/dist/api/index.js.map +1 -0
  9. package/dist/api/services.d.ts +28 -0
  10. package/dist/api/services.d.ts.map +1 -0
  11. package/dist/api/types.d.ts +11 -0
  12. package/dist/api/types.d.ts.map +1 -0
  13. package/dist/commands/editor.d.ts +1 -0
  14. package/dist/commands/editor.d.ts.map +1 -0
  15. package/dist/commands/files.d.ts +2 -0
  16. package/dist/commands/files.d.ts.map +1 -0
  17. package/dist/commands/global.d.ts +1 -0
  18. package/dist/commands/global.d.ts.map +1 -0
  19. package/dist/commands/index.d.ts +1 -0
  20. package/dist/commands/index.d.ts.map +1 -0
  21. package/dist/commands/open-view-as-editor.d.ts +2 -0
  22. package/dist/commands/open-view-as-editor.d.ts.map +1 -0
  23. package/dist/commands/version-info.d.ts +2 -0
  24. package/dist/commands/version-info.d.ts.map +1 -0
  25. package/dist/components/app-selector.d.ts +17 -0
  26. package/dist/components/app-selector.d.ts.map +1 -0
  27. package/dist/components/app-switcher.d.ts +13 -0
  28. package/dist/components/app-switcher.d.ts.map +1 -0
  29. package/dist/components/command.d.ts +31 -0
  30. package/dist/components/command.d.ts.map +1 -0
  31. package/dist/components/extensions.d.ts +32 -0
  32. package/dist/components/extensions.d.ts.map +1 -0
  33. package/dist/components/fastviews.d.ts +34 -0
  34. package/dist/components/fastviews.d.ts.map +1 -0
  35. package/dist/components/filebrowser.d.ts +45 -0
  36. package/dist/components/filebrowser.d.ts.map +1 -0
  37. package/dist/components/index.d.ts +1 -0
  38. package/dist/components/index.d.ts.map +1 -0
  39. package/dist/components/language-selector.d.ts +12 -0
  40. package/dist/components/language-selector.d.ts.map +1 -0
  41. package/dist/components/log-terminal.d.ts +36 -0
  42. package/dist/components/log-terminal.d.ts.map +1 -0
  43. package/dist/components/part-name.d.ts +12 -0
  44. package/dist/components/part-name.d.ts.map +1 -0
  45. package/dist/components/tasks.d.ts +13 -0
  46. package/dist/components/tasks.d.ts.map +1 -0
  47. package/dist/contributions/default-ui-contributions.d.ts +2 -0
  48. package/dist/contributions/default-ui-contributions.d.ts.map +1 -0
  49. package/dist/contributions/index.d.ts +1 -0
  50. package/dist/contributions/index.d.ts.map +1 -0
  51. package/dist/contributions/marketplace-catalog-contributions.d.ts +2 -0
  52. package/dist/contributions/marketplace-catalog-contributions.d.ts.map +1 -0
  53. package/dist/core/app-host-config.d.ts +7 -0
  54. package/dist/core/app-host-config.d.ts.map +1 -0
  55. package/dist/core/apploader.d.ts +214 -0
  56. package/dist/core/apploader.d.ts.map +1 -0
  57. package/dist/core/appstate.d.ts +12 -0
  58. package/dist/core/appstate.d.ts.map +1 -0
  59. package/dist/core/commandregistry.d.ts +79 -0
  60. package/dist/core/commandregistry.d.ts.map +1 -0
  61. package/dist/core/config.d.ts +15 -0
  62. package/dist/core/config.d.ts.map +1 -0
  63. package/dist/core/constants.d.ts +22 -0
  64. package/dist/core/constants.d.ts.map +1 -0
  65. package/dist/core/contributionregistry.d.ts +53 -0
  66. package/dist/core/contributionregistry.d.ts.map +1 -0
  67. package/dist/core/di.d.ts +18 -0
  68. package/dist/core/di.d.ts.map +1 -0
  69. package/dist/core/dialogservice.d.ts +33 -0
  70. package/dist/core/dialogservice.d.ts.map +1 -0
  71. package/dist/core/editorregistry.d.ts +87 -0
  72. package/dist/core/editorregistry.d.ts.map +1 -0
  73. package/dist/core/esmsh-service.d.ts +40 -0
  74. package/dist/core/esmsh-service.d.ts.map +1 -0
  75. package/dist/core/events.d.ts +7 -0
  76. package/dist/core/events.d.ts.map +1 -0
  77. package/dist/core/events.js +63 -0
  78. package/dist/core/events.js.map +1 -0
  79. package/dist/core/extensionregistry.d.ts +98 -0
  80. package/dist/core/extensionregistry.d.ts.map +1 -0
  81. package/dist/core/filesys/common.d.ts +122 -0
  82. package/dist/core/filesys/common.d.ts.map +1 -0
  83. package/dist/core/filesys/fs-access.d.ts +31 -0
  84. package/dist/core/filesys/fs-access.d.ts.map +1 -0
  85. package/dist/core/filesys/index.d.ts +5 -0
  86. package/dist/core/filesys/index.d.ts.map +1 -0
  87. package/dist/core/filesys/indexeddb.d.ts +41 -0
  88. package/dist/core/filesys/indexeddb.d.ts.map +1 -0
  89. package/dist/core/filesys/opfs.d.ts +14 -0
  90. package/dist/core/filesys/opfs.d.ts.map +1 -0
  91. package/dist/core/i18n.d.ts +50 -0
  92. package/dist/core/i18n.d.ts.map +1 -0
  93. package/dist/core/index.d.ts +1 -0
  94. package/dist/core/index.d.ts.map +1 -0
  95. package/dist/core/keybindings.d.ts +67 -0
  96. package/dist/core/keybindings.d.ts.map +1 -0
  97. package/dist/core/logger.d.ts +44 -0
  98. package/dist/core/logger.d.ts.map +1 -0
  99. package/dist/core/marketplaceregistry.d.ts +25 -0
  100. package/dist/core/marketplaceregistry.d.ts.map +1 -0
  101. package/dist/core/packageinfoservice.d.ts +16 -0
  102. package/dist/core/packageinfoservice.d.ts.map +1 -0
  103. package/dist/core/persistenceservice.d.ts +6 -0
  104. package/dist/core/persistenceservice.d.ts.map +1 -0
  105. package/dist/core/settingsservice.d.ts +54 -0
  106. package/dist/core/settingsservice.d.ts.map +1 -0
  107. package/dist/core/signals.d.ts +3 -0
  108. package/dist/core/signals.d.ts.map +1 -0
  109. package/dist/core/taskservice.d.ts +20 -0
  110. package/dist/core/taskservice.d.ts.map +1 -0
  111. package/dist/core/toast.d.ts +4 -0
  112. package/dist/core/toast.d.ts.map +1 -0
  113. package/dist/core/tree-utils.d.ts +16 -0
  114. package/dist/core/tree-utils.d.ts.map +1 -0
  115. package/dist/dialogs/confirm-dialog.d.ts +14 -0
  116. package/dist/dialogs/confirm-dialog.d.ts.map +1 -0
  117. package/dist/dialogs/index.d.ts +5 -0
  118. package/dist/dialogs/index.d.ts.map +1 -0
  119. package/dist/dialogs/info-dialog.d.ts +13 -0
  120. package/dist/dialogs/info-dialog.d.ts.map +1 -0
  121. package/dist/dialogs/navigable-info-dialog.d.ts +33 -0
  122. package/dist/dialogs/navigable-info-dialog.d.ts.map +1 -0
  123. package/dist/dialogs/prompt-dialog.d.ts +21 -0
  124. package/dist/dialogs/prompt-dialog.d.ts.map +1 -0
  125. package/dist/externals/lit.d.ts +21 -0
  126. package/dist/externals/lit.d.ts.map +1 -0
  127. package/dist/externals/lit.js +24 -0
  128. package/dist/externals/lit.js.map +1 -0
  129. package/dist/externals/third-party.d.ts +7 -0
  130. package/dist/externals/third-party.d.ts.map +1 -0
  131. package/dist/externals/third-party.js +7 -0
  132. package/dist/externals/third-party.js.map +1 -0
  133. package/dist/externals/webawesome.d.ts +1 -0
  134. package/dist/externals/webawesome.d.ts.map +1 -0
  135. package/dist/externals/webawesome.js +75 -0
  136. package/dist/externals/webawesome.js.map +1 -0
  137. package/dist/i18n/extensions.json.d.ts +42 -0
  138. package/dist/i18n/fastviews.json.d.ts +13 -0
  139. package/dist/i18n/filebrowser.json.d.ts +29 -0
  140. package/dist/i18n/index.d.ts +2 -0
  141. package/dist/i18n/index.d.ts.map +1 -0
  142. package/dist/i18n/logterminal.json.d.ts +45 -0
  143. package/dist/i18n/partname.json.d.ts +15 -0
  144. package/dist/i18n/tasks.json.d.ts +15 -0
  145. package/dist/i18n/workspace.json.d.ts +15 -0
  146. package/dist/icon-DN6fp0dg.js +487 -0
  147. package/dist/icon-DN6fp0dg.js.map +1 -0
  148. package/dist/index.d.ts +2 -0
  149. package/dist/index.d.ts.map +1 -0
  150. package/dist/index.js +84 -0
  151. package/dist/index.js.map +1 -0
  152. package/dist/layouts/standard-layout.d.ts +16 -0
  153. package/dist/layouts/standard-layout.d.ts.map +1 -0
  154. package/dist/nocontent-BhrN6yxJ.js +48 -0
  155. package/dist/nocontent-BhrN6yxJ.js.map +1 -0
  156. package/dist/parts/container.d.ts +4 -0
  157. package/dist/parts/container.d.ts.map +1 -0
  158. package/dist/parts/contextmenu.d.ts +50 -0
  159. package/dist/parts/contextmenu.d.ts.map +1 -0
  160. package/dist/parts/dialog-content.d.ts +9 -0
  161. package/dist/parts/dialog-content.d.ts.map +1 -0
  162. package/dist/parts/element.d.ts +36 -0
  163. package/dist/parts/element.d.ts.map +1 -0
  164. package/dist/parts/index.d.ts +1 -0
  165. package/dist/parts/index.d.ts.map +1 -0
  166. package/dist/parts/index.js +3 -0
  167. package/dist/parts/index.js.map +1 -0
  168. package/dist/parts/part.d.ts +96 -0
  169. package/dist/parts/part.d.ts.map +1 -0
  170. package/dist/parts/resizable-grid.d.ts +31 -0
  171. package/dist/parts/resizable-grid.d.ts.map +1 -0
  172. package/dist/parts/tabs.d.ts +75 -0
  173. package/dist/parts/tabs.d.ts.map +1 -0
  174. package/dist/parts/toolbar.d.ts +35 -0
  175. package/dist/parts/toolbar.d.ts.map +1 -0
  176. package/dist/resizable-grid-BRH3MyZK.js +3813 -0
  177. package/dist/resizable-grid-BRH3MyZK.js.map +1 -0
  178. package/dist/standard-layout-BSGa06lP.js +4907 -0
  179. package/dist/standard-layout-BSGa06lP.js.map +1 -0
  180. package/dist/widgets/icon.d.ts +10 -0
  181. package/dist/widgets/icon.d.ts.map +1 -0
  182. package/dist/widgets/index.d.ts +1 -0
  183. package/dist/widgets/index.d.ts.map +1 -0
  184. package/dist/widgets/index.js +3 -0
  185. package/dist/widgets/index.js.map +1 -0
  186. package/dist/widgets/nocontent.d.ts +13 -0
  187. package/dist/widgets/nocontent.d.ts.map +1 -0
  188. package/dist/widgets/widget.d.ts +25 -0
  189. package/dist/widgets/widget.d.ts.map +1 -0
  190. package/package.json +81 -0
  191. package/src/api/base-classes.ts +10 -0
  192. package/src/api/constants.ts +3 -0
  193. package/src/api/index.ts +31 -0
  194. package/src/api/services.ts +58 -0
  195. package/src/api/types.ts +46 -0
  196. package/src/commands/editor.ts +1 -0
  197. package/src/commands/files.ts +425 -0
  198. package/src/commands/global.ts +198 -0
  199. package/src/commands/index.ts +6 -0
  200. package/src/commands/open-view-as-editor.ts +28 -0
  201. package/src/commands/version-info.ts +214 -0
  202. package/src/components/app-selector.ts +233 -0
  203. package/src/components/app-switcher.ts +126 -0
  204. package/src/components/command.ts +236 -0
  205. package/src/components/extensions.ts +615 -0
  206. package/src/components/fastviews.ts +314 -0
  207. package/src/components/filebrowser.ts +518 -0
  208. package/src/components/index.ts +9 -0
  209. package/src/components/language-selector.ts +166 -0
  210. package/src/components/log-terminal.ts +337 -0
  211. package/src/components/part-name.ts +54 -0
  212. package/src/components/tasks.ts +275 -0
  213. package/src/contributions/default-ui-contributions.ts +44 -0
  214. package/src/contributions/index.ts +3 -0
  215. package/src/contributions/marketplace-catalog-contributions.ts +6 -0
  216. package/src/core/app-host-config.ts +23 -0
  217. package/src/core/apploader.ts +630 -0
  218. package/src/core/appstate.ts +15 -0
  219. package/src/core/commandregistry.ts +210 -0
  220. package/src/core/config.ts +29 -0
  221. package/src/core/constants.ts +29 -0
  222. package/src/core/contributionregistry.ts +81 -0
  223. package/src/core/di.ts +54 -0
  224. package/src/core/dialogservice.ts +266 -0
  225. package/src/core/editorregistry.ts +347 -0
  226. package/src/core/esmsh-service.ts +404 -0
  227. package/src/core/events.ts +68 -0
  228. package/src/core/extensionregistry.ts +399 -0
  229. package/src/core/filesys/common.ts +474 -0
  230. package/src/core/filesys/fs-access.ts +339 -0
  231. package/src/core/filesys/index.ts +5 -0
  232. package/src/core/filesys/indexeddb.ts +596 -0
  233. package/src/core/filesys/opfs.ts +95 -0
  234. package/src/core/i18n.ts +221 -0
  235. package/src/core/index.ts +51 -0
  236. package/src/core/keybindings.ts +274 -0
  237. package/src/core/logger.ts +187 -0
  238. package/src/core/marketplaceregistry.ts +197 -0
  239. package/src/core/packageinfoservice.ts +56 -0
  240. package/src/core/persistenceservice.ts +46 -0
  241. package/src/core/settingsservice.ts +191 -0
  242. package/src/core/signals.ts +18 -0
  243. package/src/core/taskservice.ts +72 -0
  244. package/src/core/toast.ts +21 -0
  245. package/src/core/tree-utils.ts +24 -0
  246. package/src/dialogs/confirm-dialog.ts +72 -0
  247. package/src/dialogs/index.ts +4 -0
  248. package/src/dialogs/info-dialog.ts +67 -0
  249. package/src/dialogs/navigable-info-dialog.ts +256 -0
  250. package/src/dialogs/prompt-dialog.ts +123 -0
  251. package/src/externals/lit.ts +36 -0
  252. package/src/externals/third-party.ts +10 -0
  253. package/src/externals/webawesome.ts +76 -0
  254. package/src/i18n/extensions.json +39 -0
  255. package/src/i18n/fastviews.json +10 -0
  256. package/src/i18n/filebrowser.json +27 -0
  257. package/src/i18n/index.ts +25 -0
  258. package/src/i18n/logterminal.json +42 -0
  259. package/src/i18n/partname.json +12 -0
  260. package/src/i18n/tasks.json +12 -0
  261. package/src/i18n/workspace.json +12 -0
  262. package/src/icons/icons.txt +3 -0
  263. package/src/icons/js.svg +6 -0
  264. package/src/icons/jupyter.svg +18 -0
  265. package/src/icons/python.svg +15 -0
  266. package/src/index.ts +3 -0
  267. package/src/layouts/standard-layout.ts +174 -0
  268. package/src/parts/container.ts +4 -0
  269. package/src/parts/contextmenu.ts +266 -0
  270. package/src/parts/dialog-content.ts +31 -0
  271. package/src/parts/element.ts +100 -0
  272. package/src/parts/index.ts +5 -0
  273. package/src/parts/part.ts +158 -0
  274. package/src/parts/resizable-grid.ts +366 -0
  275. package/src/parts/tabs.ts +581 -0
  276. package/src/parts/toolbar.ts +260 -0
  277. package/src/vite-env.d.ts +16 -0
  278. package/src/widgets/icon.ts +38 -0
  279. package/src/widgets/index.ts +2 -0
  280. package/src/widgets/nocontent.ts +40 -0
  281. package/src/widgets/widget.ts +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-DN6fp0dg.js","sources":["../src/core/di.ts","../src/core/toast.ts","../src/core/logger.ts","../src/core/contributionregistry.ts","../src/core/appstate.ts","../src/core/commandregistry.ts","../src/core/signals.ts","../src/widgets/widget.ts","../src/widgets/icon.ts"],"sourcesContent":["export class DependencyContext {\n private variables: any;\n private proxy: any;\n private children: DependencyContext[] = [];\n private parent?: DependencyContext;\n\n constructor(variables: any) {\n this.variables = variables\n // @ts-ignore\n this.proxy = new Proxy(variables, this)\n }\n\n get(target: any, prop: string): any {\n return target[prop] || this.parent?.getProxy()[prop];\n }\n\n set(target: any, prop: string, value: any) {\n target[prop] = value;\n }\n\n put(prop: string, value: any) {\n this.variables[prop] = value;\n }\n\n public getProxy() {\n return this.proxy;\n }\n\n public createChild(variables: any = {}): DependencyContext {\n const child = new DependencyContext(variables)\n child.parent = this\n this.children.push(child)\n return child\n }\n\n getChildren() {\n return this.children;\n }\n\n getParent() {\n return this.parent;\n }\n\n destroy() {\n const index = this.parent?.children.indexOf(this)\n if (index !== undefined && index >= 0) {\n this.parent?.children.splice(index, 1)\n }\n this.parent = undefined\n }\n}\n\nexport const rootContext = new DependencyContext({});\nexport const uiContext = rootContext.createChild({});","import Toastify from 'toastify-js';\nimport 'toastify-js/src/toastify.css';\n\nconst DURATION = 4000;\nconst BASE = { duration: DURATION, gravity: 'bottom' as const, position: 'right' as const, close: true };\n\nconst show = (msg: string, style: { background: string; color: string }) => {\n Toastify({ ...BASE, text: msg, style }).showToast();\n};\n\nexport const toastInfo = (msg: string) => {\n show(msg, { background: 'var(--wa-color-brand-50)', color: 'var(--wa-color-brand-on)' });\n};\n\nexport const toastError = (msg: string) => {\n show(msg, { background: 'var(--wa-color-danger-50)', color: 'var(--wa-color-danger-on)' });\n};\n\nexport const toastWarning = (msg: string) => {\n show(msg, { background: 'var(--wa-color-warning-50)', color: 'var(--wa-color-warning-on)' });\n};\n","import { rootContext } from './di';\n\nexport type LogLevel = 'info' | 'warning' | 'error' | 'debug';\n\nconst LogLevelPriority: Record<LogLevel, number> = {\n 'debug': 0,\n 'info': 1,\n 'warning': 2,\n 'error': 3,\n};\n\n// Global log level filter\nlet globalLogLevel: LogLevel = 'debug';\n\n// Store original console methods before any interception\nconst originalConsole = {\n log: console.log.bind(console),\n info: console.info.bind(console),\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n debug: console.debug.bind(console)\n};\n\n// Log handler type\ntype LogHandler = (source: string, message: string, level: LogLevel) => void;\n\n// Registered log handler (set by UI components like log-terminal)\nlet logHandler: LogHandler | null = null;\n\n// Message buffer for logs that occur before handler is registered\nconst messageBuffer: Array<{source: string, message: string, level: LogLevel}> = [];\n\n// Format console arguments\nfunction formatArg(arg: any): string {\n if (arg === null) return 'null';\n if (arg === undefined) return 'undefined';\n if (typeof arg === 'string') return arg;\n if (typeof arg === 'number' || typeof arg === 'boolean') return String(arg);\n if (arg instanceof Error) return `${arg.name}: ${arg.message}`;\n \n try {\n return JSON.stringify(arg);\n } catch {\n return String(arg);\n }\n}\n\n/**\n * Global logger utility for logging messages\n */\nexport class Logger {\n constructor(private source: string) {}\n\n info(message: string) {\n this.log(message, 'info');\n }\n\n warning(message: string) {\n this.log(message, 'warning');\n }\n\n warn(message: string) {\n this.log(message, 'warning');\n }\n\n error(message: string) {\n this.log(message, 'error');\n }\n\n debug(message: string) {\n this.log(message, 'debug');\n }\n\n private log(message: string, level: LogLevel) {\n dispatch(this.source, message, level);\n }\n}\n\n/**\n * Check if a log level should be displayed based on current filter\n */\nfunction shouldLog(level: LogLevel): boolean {\n return LogLevelPriority[level] >= LogLevelPriority[globalLogLevel];\n}\n\n/**\n * Dispatch a log message to the registered handler (or buffer it if no handler registered)\n */\nfunction dispatch(source: string, message: string, level: LogLevel) {\n if (!shouldLog(level)) {\n return;\n }\n\n if (logHandler) {\n logHandler(source, message, level);\n } else {\n // Buffer the message until handler is registered\n messageBuffer.push({ source, message, level });\n // Also log to console as fallback\n originalConsole[level === 'error' ? 'error' : level === 'warning' ? 'warn' : level === 'debug' ? 'debug' : 'log'](\n `[${source}] ${message}`\n );\n }\n}\n\n/**\n * Initialize console interception globally\n * Note: This is called automatically when the logger module is imported\n */\nexport function initializeConsoleInterception() {\n console.log = function(...args: any[]) {\n originalConsole.log.apply(console, args);\n dispatch('Console', args.map(a => formatArg(a)).join(' '), 'info');\n };\n \n console.info = function(...args: any[]) {\n originalConsole.info.apply(console, args);\n dispatch('Console', args.map(a => formatArg(a)).join(' '), 'info');\n };\n \n console.warn = function(...args: any[]) {\n originalConsole.warn.apply(console, args);\n dispatch('Console', args.map(a => formatArg(a)).join(' '), 'warning');\n };\n \n console.error = function(...args: any[]) {\n originalConsole.error.apply(console, args);\n dispatch('Console', args.map(a => formatArg(a)).join(' '), 'error');\n };\n \n console.debug = function(...args: any[]) {\n originalConsole.debug.apply(console, args);\n dispatch('Console', args.map(a => formatArg(a)).join(' '), 'debug');\n };\n}\n\n// Auto-initialize console interception when this module is imported\ninitializeConsoleInterception();\n\n/**\n * Register a handler to receive log messages\n * Also flushes any buffered messages to the new handler\n */\nexport function registerLogHandler(handler: LogHandler) {\n logHandler = handler;\n \n // Flush buffered messages\n while (messageBuffer.length > 0) {\n const msg = messageBuffer.shift();\n if (msg) {\n handler(msg.source, msg.message, msg.level);\n }\n }\n}\n\n/**\n * Unregister the current log handler\n */\nexport function unregisterLogHandler() {\n logHandler = null;\n}\n\n/**\n * Create a logger instance for a specific source\n */\nexport function createLogger(source: string): Logger {\n return new Logger(source);\n}\n\n/**\n * Set the global log level filter\n */\nexport function setLogLevel(level: LogLevel) {\n globalLogLevel = level;\n}\n\n/**\n * Default logger instance for backward compatibility\n * This provides a simple logger similar to the old logging.ts\n */\nconst defaultLogger = createLogger('System');\n\n// Register default logger in DI container for backward compatibility\nrootContext.put('logger', defaultLogger);\n\nexport default defaultLogger;\n\n","import {Signal} from \"@lit-labs/signals\";\nimport {TemplateResult} from \"lit\";\nimport {publish} from \"./events\";\nimport {rootContext} from \"./di\";\n\nexport const TOPIC_CONTRIBUTEIONS_CHANGED = \"events/contributionregistry/contributionsChanged\"\n\nexport interface ContributionChangeEvent {\n target: string;\n contributions: Contribution[];\n}\n\nexport interface Contribution {\n target?: string;\n label: string;\n icon?: string;\n slot?: string;\n}\n\nexport interface CommandContribution extends Contribution {\n command: string;\n params?: Record<string, any>;\n showLabel?: boolean;\n disabled?: (() => boolean) | Signal.Computed<boolean>;\n}\n\nexport interface HTMLContribution extends Contribution {\n html: string | (() => TemplateResult)\n}\n\nexport interface TabContribution extends Contribution {\n name: string;\n editorId?: string;\n closable?: boolean;\n noOverflow?: boolean;\n /** When true or omitted, a lyra-toolbar is rendered for this tab; when false, no toolbar is shown. */\n toolbar?: boolean;\n /** When true or omitted, a contextmenu is rendered for this tab; when false, no context menu is shown. */\n contextMenu?: boolean;\n component?: (id: string) => TemplateResult;\n}\n\nexport interface PaneContribution extends Contribution {\n name: string;\n size?: number;\n minSize?: number;\n maxSize?: number;\n order?: number;\n component: () => TemplateResult;\n}\n\nexport interface IconContribution extends Contribution {\n mappings: Record<string, string>;\n priority?: number;\n}\n\nclass ContributionRegistry {\n private contributions: Map<string, Contribution[]> = new Map();\n\n registerContribution<T extends Contribution>(target: string, contribution: T) {\n const targetSlot = this.getContributions(target)!\n if (\"command\" in contribution) {\n const cmd = contribution as unknown as CommandContribution\n if (cmd.disabled instanceof Function) {\n cmd.disabled = new Signal.Computed<boolean>(cmd.disabled)\n }\n }\n targetSlot.push(contribution);\n publish(TOPIC_CONTRIBUTEIONS_CHANGED, { target, contributions: targetSlot } as ContributionChangeEvent)\n }\n\n getContributions<T extends Contribution>(target: string): T[] {\n if (!this.contributions.has(target)) {\n this.contributions.set(target, [])\n }\n return this.contributions.get(target)! as T[]\n }\n}\n\nexport const contributionRegistry = new ContributionRegistry()\nrootContext.put(\"contributionRegistry\", contributionRegistry)","import { signal } from '@lit-labs/signals';\nimport { LyraPart } from \"../parts/part\";\n\nexport const EMPTY_SIGNALPORT = {} as any\n\nexport const activePartSignal = signal<LyraPart>(null as unknown as LyraPart)\nexport const activeEditorSignal = signal<LyraPart>(null as unknown as LyraPart)\n\nexport const partDirtySignal = signal<LyraPart>(null as unknown as LyraPart)\n\nexport const activeTasksSignal = signal<number>(0)\n\nexport const activeSelectionSignal = signal<any>(undefined)\n\nexport const perspectiveSwitchedSignal = signal<{name: string, timestamp: number}>({name: '', timestamp: 0})","import logger from \"./logger\";\nimport { publish } from \"./events\";\nimport { CommandContribution, Contribution, contributionRegistry } from \"./contributionregistry\";\nimport { rootContext } from \"./di\";\nimport { activePartSignal, activeEditorSignal } from \"./appstate\";\n\nexport const TOPIC_COMMAND_REGISTERED = \"events/commandregistry/commandRegistered\";\n\nexport interface Parameter {\n name: string;\n description: string;\n type?: string;\n required: boolean;\n allowedValues?: string[];\n}\n\nexport interface Variable {\n name: string;\n description: string;\n type?: string;\n}\n\nexport interface LLMOptions {\n prompt?: string;\n model?: string;\n}\n\nexport class Command {\n id: string;\n name: string;\n description: string;\n icon?: string;\n keyBinding?: string;\n parameters?: Parameter[];\n output?: Variable[];\n llm?: LLMOptions;\n\n constructor(id: string, name: string, description: string, parameters?: Parameter[], output?: Variable[]) {\n this.id = id;\n this.name = name;\n this.description = description;\n this.parameters = parameters || [];\n this.output = output || [];\n }\n}\n\nexport interface ExecutionContext {\n [key: string]: any;\n\n params?: ExecuteParams;\n activePart?: any;\n activeEditor?: any;\n}\n\nexport interface ExecuteParams {\n [key: string]: any;\n}\n\nexport interface Handler {\n canExecute?: (context: ExecutionContext) => boolean;\n execute: (context: ExecutionContext) => any;\n ranking?: number; // Higher ranking = higher priority (default: 0)\n}\n\nexport interface Commands {\n [commandId: string]: Command\n}\n\nexport class CommandStack {\n //private stack: any[] = []\n\n public async execute(commandId: any, context: ExecutionContext) {\n return commandRegistry.execute(commandId, context);\n }\n\n public async undo() {\n // TODO undo last command on stack\n }\n\n public async redo() {\n // TODO redo last command on stack\n }\n}\n\nexport class CommandRegistry {\n private commands: Commands = {};\n private handlers: Map<string, Handler[]> = new Map();\n\n registerHandler(commandId: string, handler: Handler) {\n if (!this.handlers.has(commandId)) {\n this.handlers.set(commandId, []);\n }\n const handlerList = this.handlers.get(commandId) as Handler[];\n handlerList.push(handler);\n // Sort by ranking (higher ranking first), default ranking is 0\n handlerList.sort((a, b) => (b.ranking ?? 0) - (a.ranking ?? 0));\n }\n\n getHandler(commandId: string): Handler[] | undefined {\n return this.handlers.get(commandId)\n }\n\n /**\n * Creates an ExecutionContext with the current application state\n * \n * @param params Optional command parameters\n * @returns ExecutionContext with captured application state\n */\n createExecutionContext(params?: ExecuteParams): ExecutionContext {\n const context: ExecutionContext = {\n params: params || {},\n activePart: activePartSignal.get(),\n activeEditor: activeEditorSignal.get()\n };\n\n return context;\n }\n\n execute(commandId: string, context: ExecutionContext = {}) {\n const handlers = this.getHandler(commandId);\n\n if (!handlers) {\n logger.debug(`[CommandRegistry] No handlers registered for command: ${commandId}`);\n throw new Error(`No handlers registered for command: ${commandId}`);\n }\n\n const command = this.getCommand(commandId);\n const paramsStr = context.params ? ` params: ${JSON.stringify(context.params)}` : '';\n logger.debug(`[CommandRegistry] Executing command: ${commandId}${command ? ` (${command.name})` : ''}${paramsStr}`);\n\n // Handlers are already sorted by ranking, so iterate in order\n for (const handler of handlers) {\n if (handler.canExecute === undefined || handler.canExecute(context)) {\n try {\n const result: any | Promise<any> = handler.execute(context);\n logger.debug(`[CommandRegistry] Command executed successfully: ${commandId} (result: ${result})`);\n return result;\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n logger.error(`[CommandRegistry] Command execution failed: ${commandId} - ${errorMsg}`);\n throw error;\n }\n }\n }\n logger.error(`[CommandRegistry] No handler found to execute command: ${commandId}`);\n }\n\n createAndRegisterCommand(id: string, name: string, description: string, parameters: Parameter[], handler?: Handler) {\n const command = new Command(id, name, description, parameters);\n this.registerCommand(command)\n if (handler) {\n this.registerHandler(id, handler)\n }\n }\n\n registerCommand(command: Command): void {\n this.commands[command.id] = command;\n logger.debug(`Command registered: ${command.id}`);\n publish(TOPIC_COMMAND_REGISTERED, command);\n }\n\n hasCommand(commandId: string): boolean {\n return commandId in this.commands\n }\n\n listCommands(context?: ExecutionContext): Commands {\n if (context) {\n // filter by commands which have at least one executable handler\n return Object.values(this.commands).filter(command => {\n const handlers = commandRegistry.getHandler(command.id) || []\n return handlers.some(handler => handler.canExecute === undefined || handler.canExecute(context))\n }).reduce((acc: any, command) => {\n acc[command.id] = command\n return acc\n }, {})\n }\n return this.commands\n }\n\n getCommand(commandId: string): Command {\n return <Command>this.commands[commandId]\n }\n\n registerAll(options: RegisterOptions) {\n const commandId = options.command.id\n this.registerCommand(options.command)\n if (options.handler) {\n this.registerHandler(commandId, options.handler)\n }\n if (options.contribution && options.contribution.target) {\n contributionRegistry.registerContribution(options.contribution.target, {\n command: commandId,\n ...options.contribution\n } as CommandContribution)\n }\n }\n}\n\nexport const commandRegistry = new CommandRegistry();\nrootContext.put(\"commandRegistry\", commandRegistry);\n\nexport interface RegisterOptions {\n command: Command,\n handler?: Handler,\n contribution?: Contribution & Partial<Pick<CommandContribution, 'disabled'>>\n}\n\nexport const registerAll = (options: RegisterOptions) => {\n commandRegistry.registerAll(options);\n}","import {Signal} from \"@lit-labs/signals\";\n\nexport const watchSignal = (signal: Signal.State<any> | Signal.Computed<any>, callback: (value: any) => void): (() => void) => {\n const watcher = new Signal.subtle.Watcher(async () => {\n try {\n await 0;\n callback(signal.get());\n } finally {\n watcher.watch(signal);\n }\n });\n watcher.watch(signal);\n signal.get();\n \n return () => {\n watcher.unwatch(signal);\n };\n}\n","import {LitElement, PropertyValues} from \"lit\";\nimport {subscribe as event_subscribe, unsubscribe as event_unsubscribe, type SubscriptionToken} from \"../core/events\";\nimport {toastError, toastInfo} from \"../core/toast\";\nimport {commandRegistry, ExecuteParams} from \"../core/commandregistry\";\nimport {Signal, SignalWatcher} from \"@lit-labs/signals\";\nimport {watchSignal} from \"../core/signals\";\n\nObject.defineProperty(LitElement.prototype, \"model\", {\n enumerable: true,\n configurable: true,\n writable: true\n});\n\nconst LyraWidgetBase = SignalWatcher(LitElement) as unknown as typeof LitElement;\n\nexport abstract class LyraWidget extends LyraWidgetBase {\n private signalCleanups = new Set<() => void>();\n private eventSubscriptions = new Set<SubscriptionToken>();\n\n connectedCallback() {\n super.connectedCallback();\n this.doBeforeUI()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.eventSubscriptions.forEach(token => event_unsubscribe(token));\n this.eventSubscriptions.clear();\n this.signalCleanups.forEach(cleanup => cleanup());\n this.signalCleanups.clear();\n }\n\n protected subscribe(topic: string, callback: Function): void {\n const token = event_subscribe(topic, callback.bind(this));\n this.eventSubscriptions.add(token);\n }\n\n protected showInfo(msg: string) {\n toastInfo(msg)\n }\n\n protected showError(msg: string) {\n toastError(msg)\n }\n\n protected nobubble(wrap: (event: Event) => void) {\n return (event: Event) => {\n event.stopPropagation();\n wrap.bind(this)(event);\n };\n }\n\n protected command(command: string, state: {} = {}) {\n return () => {\n this.executeCommand(command, state)\n };\n }\n\n protected executeCommand(command: string, params: ExecuteParams) {\n const execContext = commandRegistry.createExecutionContext(params);\n commandRegistry.execute(command, execContext);\n }\n\n protected watch(signal: Signal.State<any> | Signal.Computed<any>, callback: (value: any) => void): void {\n const cleanup = watchSignal(signal as Signal.State<any>, callback.bind(this));\n this.signalCleanups.add(cleanup);\n }\n\n protected firstUpdated(_changedProperties: PropertyValues) {\n super.firstUpdated(_changedProperties);\n this.doInitUI()\n }\n\n protected updateIdle() {\n requestIdleCallback(() => this.requestUpdate())\n }\n\n public updateLater() {\n requestAnimationFrame(() => this.requestUpdate())\n }\n\n protected doBeforeUI() {\n }\n\n protected doInitUI() {\n }\n\n withRefresh(callback: () => void) {\n callback()\n this.updateLater()\n }\n}\n","import {customElement, property} from 'lit/decorators.js'\nimport {html, nothing, css} from 'lit';\n\nimport {LyraWidget} from \"./widget\";\n\n@customElement('lyra-icon')\nexport class LyraIcon extends LyraWidget {\n\n @property()\n name?: string;\n\n @property()\n family?: string = \"regular\";\n\n @property()\n variant?: string;\n\n @property()\n label?: string;\n\n render() {\n if (!this.name) {\n return \"\"\n }\n const parts = this.name.trim().split(/ +/)\n const iconName = parts.pop()\n const library = parts.pop()\n return html`\n <wa-icon library=\"${library || nothing}\" variant=\"${this.variant || nothing}\"\n family=\"${this.family || nothing}\" name=${iconName} label=\"${this.label || this.name || nothing}\"></wa-icon>`\n }\n\n static styles = css`\n :host {\n display: contents;\n }\n `\n}\n"],"names":["logger","signal","event_unsubscribe","event_subscribe"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './api/index';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAEtB,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,84 @@
1
+ import { C, D, F, a, b, L, S, c, T, d, W, e, f, g, h, i, j, p, t, w } from "./standard-layout-BSGa06lP.js";
2
+ import { C as C2, E, H, L as L2, a as a2, b as b2, c as c2, M, P, S as S2, d as d2, e as e2, f as f2, T as T2, g as g2, h as h2, i as i2, j as j2, k, l, m, n, o, p as p2, q, r, s, t as t2, u, v } from "./resizable-grid-BRH3MyZK.js";
3
+ import { C as C3, a as a3, E as E2, L as L3, T as T3, b as b3, c as c3, d as d3, e as e3, f as f3, g as g3, h as h3, i as i3, j as j3, p as p3, k as k2, r as r2, l as l2, s as s2, t as t3, m as m2, n as n2, u as u2, w as w2 } from "./icon-DN6fp0dg.js";
4
+ import { publish, subscribe, unsubscribe } from "./core/events.js";
5
+ export {
6
+ C2 as COMMAND_SAVE,
7
+ C3 as CommandRegistry,
8
+ a3 as CommandStack,
9
+ C as CompositeDirectory,
10
+ D as Directory,
11
+ E as EDITOR_AREA_MAIN,
12
+ E2 as EMPTY_SIGNALPORT,
13
+ F as File,
14
+ a as FileContentType,
15
+ b as FileSysDirHandleResource,
16
+ H as HIDE_DOT_RESOURCE,
17
+ L2 as LyraContainer,
18
+ a2 as LyraDialogContent,
19
+ b2 as LyraElement,
20
+ c2 as LyraPart,
21
+ L as LyraStandardLayout,
22
+ L3 as LyraWidget,
23
+ M as MouseButton,
24
+ P as PANEL_BOTTOM,
25
+ S2 as SIDEBAR_AUXILIARY,
26
+ d2 as SIDEBAR_MAIN,
27
+ e2 as SIDEBAR_MAIN_BOTTOM,
28
+ S as SYSTEM_LANGUAGE_BUNDLES,
29
+ f2 as SYSTEM_VIEWS,
30
+ c as StringFile,
31
+ T2 as TOOLBAR_BOTTOM,
32
+ g2 as TOOLBAR_BOTTOM_CENTER,
33
+ h2 as TOOLBAR_BOTTOM_END,
34
+ i2 as TOOLBAR_MAIN,
35
+ j2 as TOOLBAR_MAIN_CENTER,
36
+ k as TOOLBAR_MAIN_RIGHT,
37
+ T3 as TOPIC_COMMAND_REGISTERED,
38
+ b3 as TOPIC_CONTRIBUTEIONS_CHANGED,
39
+ l as TOPIC_SETTINGS_CHANGED,
40
+ T as TOPIC_WORKSPACE_CHANGED,
41
+ d as TOPIC_WORKSPACE_CONNECTED,
42
+ W as WorkspaceService,
43
+ c3 as activeEditorSignal,
44
+ d3 as activePartSignal,
45
+ e3 as activeSelectionSignal,
46
+ f3 as activeTasksSignal,
47
+ m as appLoaderService,
48
+ n as appSettings,
49
+ e as applyAppHostConfig,
50
+ g3 as commandRegistry,
51
+ f as configureFramework,
52
+ o as confirmDialog,
53
+ h3 as contributionRegistry,
54
+ i3 as createLogger,
55
+ g as editorRegistry,
56
+ p2 as esmShService,
57
+ q as extensionRegistry,
58
+ h as getFrameworkConfig,
59
+ i as i18n,
60
+ j as i18nLazy,
61
+ r as infoDialog,
62
+ j3 as logger,
63
+ s as navigableInfoDialog,
64
+ p as packageInfoService,
65
+ p3 as partDirtySignal,
66
+ t2 as persistenceService,
67
+ k2 as perspectiveSwitchedSignal,
68
+ u as promptDialog,
69
+ publish,
70
+ r2 as registerAll,
71
+ l2 as rootContext,
72
+ s2 as setLogLevel,
73
+ subscribe,
74
+ v as taskService,
75
+ t3 as toastError,
76
+ m2 as toastInfo,
77
+ n2 as toastWarning,
78
+ t as treeNodeComparator,
79
+ u2 as uiContext,
80
+ unsubscribe,
81
+ w2 as watchSignal,
82
+ w as workspaceService
83
+ };
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,16 @@
1
+ import { LyraContainer } from '../parts/container';
2
+ export declare class LyraStandardLayout extends LyraContainer {
3
+ showBottomSidebar: boolean;
4
+ showBottomPanel: boolean;
5
+ showLeftSidebar: boolean;
6
+ showAuxSidebar: boolean;
7
+ createRenderRoot(): this;
8
+ private getGridSizes;
9
+ render(): import('lit-html').TemplateResult<1>;
10
+ }
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ 'lyra-standard-layout': LyraStandardLayout;
14
+ }
15
+ }
16
+ //# sourceMappingURL=standard-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-layout.d.ts","sourceRoot":"","sources":["../../src/layouts/standard-layout.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD,qBACa,kBAAmB,SAAQ,aAAa;IAEjD,iBAAiB,EAAE,OAAO,CAAS;IAGnC,eAAe,EAAE,OAAO,CAAS;IAGjC,eAAe,EAAE,OAAO,CAAQ;IAGhC,cAAc,EAAE,OAAO,CAAQ;IAE/B,gBAAgB;IAIhB,OAAO,CAAC,YAAY;IAapB,MAAM;CAsHT;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,sBAAsB,EAAE,kBAAkB,CAAC;KAC9C;CACJ"}
@@ -0,0 +1,48 @@
1
+ import { css, html } from "lit";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import { L as LyraWidget } from "./icon-DN6fp0dg.js";
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
11
+ if (kind && result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ let LyraNoContent = class extends LyraWidget {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.message = "No content.";
18
+ this.icon = "info-circle";
19
+ }
20
+ render() {
21
+ return html`
22
+ <h3>
23
+ <wa-icon name=${this.icon} label="${this.message}"></wa-icon>
24
+ ${this.message}
25
+ </h3>
26
+ `;
27
+ }
28
+ };
29
+ LyraNoContent.styles = css`
30
+ :host {
31
+ display: flex;
32
+ margin: 10px;
33
+ }
34
+
35
+ * {
36
+ flex: 1;
37
+ }
38
+ `;
39
+ __decorateClass([
40
+ property()
41
+ ], LyraNoContent.prototype, "message", 2);
42
+ __decorateClass([
43
+ property()
44
+ ], LyraNoContent.prototype, "icon", 2);
45
+ LyraNoContent = __decorateClass([
46
+ customElement("lyra-no-content")
47
+ ], LyraNoContent);
48
+ //# sourceMappingURL=nocontent-BhrN6yxJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nocontent-BhrN6yxJ.js","sources":["../src/widgets/nocontent.ts"],"sourcesContent":["import {css, html} from 'lit'\nimport {customElement, property} from 'lit/decorators.js'\n\nimport {LyraWidget} from \"./widget\";\n\n@customElement('lyra-no-content')\nexport class LyraNoContent extends LyraWidget {\n\n @property()\n private message: string = \"No content.\";\n\n @property()\n private icon: string = \"info-circle\";\n\n render() {\n return html`\n <h3>\n <wa-icon name=${this.icon} label=\"${this.message}\"></wa-icon>\n ${this.message}\n </h3>\n `\n }\n\n static styles = css`\n :host {\n display: flex;\n margin: 10px;\n }\n\n * {\n flex: 1;\n }\n `\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lyra-no-content': LyraNoContent\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAMO,IAAM,gBAAN,cAA4B,WAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA;AAGH,SAAQ,UAAkB;AAG1B,SAAQ,OAAe;AAAA,EAAA;AAAA,EAEvB,SAAS;AACL,WAAO;AAAA;AAAA,gCAEiB,KAAK,IAAI,WAAW,KAAK,OAAO;AAAA,kBAC9C,KAAK,OAAO;AAAA;AAAA;AAAA,EAG1B;AAYJ;AA3Ba,cAiBF,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAdR,gBAAA;AAAA,EADP,SAAA;AAAS,GAFD,cAGD,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADP,SAAA;AAAS,GALD,cAMD,WAAA,QAAA,CAAA;AANC,gBAAN,gBAAA;AAAA,EADN,cAAc,iBAAiB;AAAA,GACnB,aAAA;"}
@@ -0,0 +1,4 @@
1
+ import { LyraElement } from './element';
2
+ export declare abstract class LyraContainer extends LyraElement {
3
+ }
4
+ //# sourceMappingURL=container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/parts/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAEtC,8BAAsB,aAAc,SAAQ,WAAW;CACtD"}
@@ -0,0 +1,50 @@
1
+ import { nothing } from 'lit';
2
+ import { LyraElement } from './element';
3
+ export declare class LyraContextMenu extends LyraElement {
4
+ private isEditor;
5
+ partContextMenuRenderer?: () => any;
6
+ private contributions;
7
+ private isOpen;
8
+ private position;
9
+ private anchorRef;
10
+ private dropdownRef;
11
+ private boundHandleDocumentPointerDown;
12
+ /**
13
+ * "Click outside to close" runs in capture phase before the target's click.
14
+ * We use composedPath() so hits inside the menu still count as inside:
15
+ * - Clicks on items (e.g. command / wa-dropdown-item) or their icon/label
16
+ * are inside shadow roots; contains(target) can miss those.
17
+ * - composedPath() is the path from target to root crossing shadow boundaries,
18
+ * so if the dropdown is in the path, the click was inside the menu and we
19
+ * do not close (so the item's click can run). We only close when the click
20
+ * is truly outside (dropdown not in path). Submenus: same idea, skip close
21
+ * when any node in the path has part="submenu".
22
+ */
23
+ private handleDocumentPointerDown;
24
+ protected doBeforeUI(): void;
25
+ private matchesTarget;
26
+ private loadContributions;
27
+ /**
28
+ * Gets the element at the given point, traversing shadow DOM boundaries recursively.
29
+ * This is necessary because elementFromPoint() doesn't penetrate shadow roots.
30
+ */
31
+ private getElementFromPoint;
32
+ /**
33
+ * Triggers a click on the element under the cursor to update selection before showing context menu.
34
+ */
35
+ private triggerClickUnderCursor;
36
+ show(position: {
37
+ x: number;
38
+ y: number;
39
+ }, mouseEvent?: MouseEvent): void;
40
+ private onClose;
41
+ private renderContribution;
42
+ render(): import('lit-html').TemplateResult<1> | typeof nothing;
43
+ static styles: import('lit').CSSResult;
44
+ }
45
+ declare global {
46
+ interface HTMLElementTagNameMap {
47
+ 'lyra-contextmenu': LyraContextMenu;
48
+ }
49
+ }
50
+ //# sourceMappingURL=contextmenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextmenu.d.ts","sourceRoot":"","sources":["../../src/parts/contextmenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAC,MAAM,KAAK,CAAA;AAEtC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAatC,OAAO,uBAAuB,CAAC;AAE/B,qBACa,eAAgB,SAAQ,WAAW;IAE5C,OAAO,CAAC,QAAQ,CAAkB;IAG3B,uBAAuB,CAAC,EAAE,MAAM,GAAG,CAAa;IAGvD,OAAO,CAAC,aAAa,CAAsB;IAG3C,OAAO,CAAC,MAAM,CAAkB;IAGhC,OAAO,CAAC,QAAQ,CAA4C;IAE5D,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,WAAW,CAA4B;IAE/C,OAAO,CAAC,8BAA8B,CAA6C;IAEnF;;;;;;;;;;OAUG;IACH,OAAO,CAAC,yBAAyB;IAWjC,SAAS,CAAC,UAAU;IAkBpB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,iBAAiB;IA0BzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoBxB,IAAI,CAAC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,UAAU,CAAC,EAAE,UAAU;IAWvE,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,kBAAkB;IAuB1B,MAAM;IA4BN,MAAM,CAAC,MAAM,0BAmBX;CACL;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,kBAAkB,EAAE,eAAe,CAAA;KACtC;CACJ"}
@@ -0,0 +1,9 @@
1
+ import { TemplateResult } from 'lit';
2
+ import { LyraElement } from './element';
3
+ export declare abstract class LyraDialogContent extends LyraElement {
4
+ static styles: import('lit').CSSResult[];
5
+ dispose(): void | Promise<void>;
6
+ getResult(): any;
7
+ protected renderMessage(message: string, markdown?: boolean): TemplateResult;
8
+ }
9
+ //# sourceMappingURL=dialog-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog-content.d.ts","sourceRoot":"","sources":["../../src/parts/dialog-content.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAO,MAAM,KAAK,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,8BAAsB,iBAAkB,SAAQ,WAAW;IACvD,MAAM,CAAC,MAAM,4BAOX;IAEF,OAAO,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/B,SAAS,IAAI,GAAG;IAIhB,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,cAAc;CAOtF"}
@@ -0,0 +1,36 @@
1
+ import { LyraWidget } from '../widgets/widget';
2
+ export declare abstract class LyraElement extends LyraWidget {
3
+ /**
4
+ * Unique settings key for this element, used for persisting dialog settings.
5
+ * Automatically initialized on first access via getDialogSetting() or setDialogSetting().
6
+ */
7
+ private settingsKey;
8
+ /**
9
+ * Builds a unique DOM tree path for this element.
10
+ * Uses id attribute if available, otherwise builds a path based on tag names and indices.
11
+ * Useful for generating unique settings keys.
12
+ *
13
+ * @returns A string representing the DOM path, or null if path cannot be determined
14
+ */
15
+ private buildDOMTreePath;
16
+ /**
17
+ * Initializes the settings key for this element using the element's tag name.
18
+ * Called automatically on first access via getDialogSetting() or setDialogSetting().
19
+ */
20
+ private initializeSettingsKey;
21
+ /**
22
+ * Gets a dialog setting value for this element.
23
+ * Automatically initializes the settings key on first access if not already set.
24
+ *
25
+ * @returns The persisted setting value, or undefined if not found
26
+ */
27
+ protected getDialogSetting(): Promise<any>;
28
+ /**
29
+ * Saves a dialog setting value for this element.
30
+ * Automatically initializes the settings key on first access if not already set.
31
+ *
32
+ * @param value - The value to persist
33
+ */
34
+ protected setDialogSetting(value: any): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../src/parts/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAG7C,8BAAsB,WAAY,SAAQ,UAAU;IAChD;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;OAKG;cACa,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC;IAQhD;;;;;OAKG;cACa,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAO9D"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parts/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA;AAChC,OAAO,WAAW,CAAA;AAClB,OAAO,eAAe,CAAA;AACtB,OAAO,QAAQ,CAAA;AACf,OAAO,kBAAkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import "../externals/webawesome.js";
2
+ import "../resizable-grid-BRH3MyZK.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,96 @@
1
+ import { LyraContainer } from './container';
2
+ import { PropertyValues, TemplateResult, nothing } from 'lit';
3
+ import { CommandStack } from '../core/commandregistry';
4
+ import { TabContribution } from '../core/contributionregistry';
5
+ export declare abstract class LyraPart extends LyraContainer {
6
+ private dirty;
7
+ tabContribution?: TabContribution;
8
+ isEditor: boolean;
9
+ protected commandStack?: CommandStack;
10
+ getCommandStack(): CommandStack | undefined;
11
+ /**
12
+ * Override this method to provide toolbar content for this part.
13
+ * This is a lightweight alternative to registering toolbar contributions
14
+ * for actions that are scoped to this part instance.
15
+ *
16
+ * IMPORTANT: Event handlers MUST use arrow functions to preserve the component's 'this' context.
17
+ * The toolbar template is rendered in a different component (lyra-toolbar), so direct method
18
+ * references lose their binding.
19
+ *
20
+ * ✅ Correct:
21
+ * @click=${() => this.myMethod()}
22
+ * @click=${(e) => this.handleClick(e)}
23
+ *
24
+ * ❌ Wrong (this will be bound to the toolbar, not your component):
25
+ * @click=${this.myMethod}
26
+ *
27
+ * Example:
28
+ * ```typescript
29
+ * protected renderToolbar() {
30
+ * return html`
31
+ * <wa-button @click=${() => this.save()} title="Save">
32
+ * <wa-icon name="save"></wa-icon>
33
+ * </wa-button>
34
+ * `;
35
+ * }
36
+ * ```
37
+ *
38
+ * @returns TemplateResult with toolbar items, or nothing if no toolbar needed
39
+ */
40
+ protected renderToolbar(): TemplateResult | typeof nothing;
41
+ /**
42
+ * Call this method to update the toolbar when the component's state changes.
43
+ * This triggers a re-render of the toolbar with the latest content from renderToolbar().
44
+ */
45
+ protected updateToolbar(): void;
46
+ /**
47
+ * Override this method to provide context menu content for this part.
48
+ * This is a lightweight alternative to registering context menu contributions
49
+ * for actions that are scoped to this part instance.
50
+ *
51
+ * IMPORTANT: Event handlers MUST use arrow functions to preserve the component's 'this' context.
52
+ * The context menu is rendered in a different component (contextmenu), so direct method
53
+ * references lose their binding.
54
+ *
55
+ * ✅ Correct:
56
+ * @click=${() => this.myMethod()}
57
+ * @click=${(e) => this.handleClick(e)}
58
+ *
59
+ * ❌ Wrong (this will be bound to the context menu, not your component):
60
+ * @click=${this.myMethod}
61
+ *
62
+ * Example:
63
+ * ```typescript
64
+ * protected renderContextMenu() {
65
+ * return html`
66
+ * <wa-dropdown-item @click=${() => this.open()}>
67
+ * <wa-icon name="folder-open"></wa-icon>
68
+ * Open
69
+ * </wa-dropdown-item>
70
+ * <wa-divider></wa-divider>
71
+ * <wa-dropdown-item @click=${() => this.delete()}>
72
+ * <wa-icon name="trash"></wa-icon>
73
+ * Delete
74
+ * </wa-dropdown-item>
75
+ * `;
76
+ * }
77
+ * ```
78
+ *
79
+ * @returns TemplateResult with context menu items, or nothing if no context menu needed
80
+ */
81
+ protected renderContextMenu(): TemplateResult | typeof nothing;
82
+ /**
83
+ * Call this method to update the context menu when the component's state changes.
84
+ * This triggers a re-render of the context menu with the latest content from renderContextMenu().
85
+ */
86
+ protected updateContextMenu(): void;
87
+ protected updated(_changedProperties: PropertyValues): void;
88
+ protected doClose(): void;
89
+ disconnectedCallback(): void;
90
+ close(): void;
91
+ connectedCallback(): void;
92
+ save(): void;
93
+ isDirty(): boolean;
94
+ markDirty(dirty: boolean): void;
95
+ }
96
+ //# sourceMappingURL=part.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../../src/parts/part.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,8BAAsB,QAAS,SAAQ,aAAa;IAEhD,OAAO,CAAC,KAAK,CAAiB;IAEvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,QAAQ,EAAE,OAAO,CAAS;IAEjC,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAE/B,eAAe,IAAI,YAAY,GAAG,SAAS;IAIlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,CAAC,aAAa,IAAI,cAAc,GAAG,OAAO,OAAO;IAI1D;;;OAGG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAO/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,SAAS,CAAC,iBAAiB,IAAI,cAAc,GAAG,OAAO,OAAO;IAI9D;;;OAGG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAOnC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc;IAWpD,SAAS,CAAC,OAAO;IAGjB,oBAAoB;IAMb,KAAK;IAIZ,iBAAiB;IAIjB,IAAI;IAGG,OAAO;IAIP,SAAS,CAAC,KAAK,EAAE,OAAO;CAOlC"}
@@ -0,0 +1,31 @@
1
+ import { nothing } from 'lit';
2
+ import { LyraElement } from './element';
3
+ export declare class LyraResizableGrid extends LyraElement {
4
+ orientation: 'horizontal' | 'vertical';
5
+ sizes?: string;
6
+ private gridSizes;
7
+ private gridChildren;
8
+ private resizing;
9
+ private resizeOverlay;
10
+ private childrenLoaded;
11
+ private childStylesApplied;
12
+ private mutationObserver?;
13
+ private settingsLoaded;
14
+ createRenderRoot(): this;
15
+ protected doBeforeUI(): void;
16
+ private loadChildren;
17
+ private saveSizes;
18
+ updated(changedProperties: Map<string, any>): void;
19
+ private startResize;
20
+ private handleResize;
21
+ private stopResize;
22
+ render(): import('lit-html').TemplateResult<1> | typeof nothing;
23
+ disconnectedCallback(): void;
24
+ connectedCallback(): void;
25
+ }
26
+ declare global {
27
+ interface HTMLElementTagNameMap {
28
+ 'lyra-resizable-grid': LyraResizableGrid;
29
+ }
30
+ }
31
+ //# sourceMappingURL=resizable-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable-grid.d.ts","sourceRoot":"","sources":["../../src/parts/resizable-grid.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAO,OAAO,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAEtC,qBACa,iBAAkB,SAAQ,WAAW;IAE9C,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAGtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,SAAS,CAAgB;IAGjC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,QAAQ,CAKA;IAEhB,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,cAAc,CAAS;IAE/B,gBAAgB;IAOhB,SAAS,CAAC,UAAU;YAiBN,YAAY;YA2CZ,SAAS;IAWvB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAmC3C,OAAO,CAAC,WAAW;IA8CnB,OAAO,CAAC,YAAY,CAoCnB;IAED,OAAO,CAAC,UAAU,CA0BjB;IAID,MAAM;IAiEN,oBAAoB;IAWpB,iBAAiB;CAKpB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,qBAAqB,EAAE,iBAAiB,CAAA;KAC3C;CACJ"}
@@ -0,0 +1,75 @@
1
+ import { LyraContainer } from './container';
2
+ import { TabContribution } from '../core/contributionregistry';
3
+ /**
4
+ * LyraTabs - A dynamic tab container component
5
+ *
6
+ * Architecture:
7
+ * - Fixed layout (VS Code style) - each tab is registered to a specific container
8
+ * - Tabs are created/destroyed as needed (no instance reuse)
9
+ * - Support for both static (views) and dynamic (editors) tabs
10
+ *
11
+ * Lifecycle:
12
+ * 1. doInitUI(): Load contributions, activate first tab
13
+ * 2. render(): Create tab UI from contributions
14
+ * 3. open/closeTab(): Dynamic tab operations
15
+ */
16
+ export declare class LyraTabs extends LyraContainer {
17
+ placement: "top" | "bottom" | "start" | "end";
18
+ /** Tab contributions for this container */
19
+ private contributions;
20
+ /** Reference to the underlying wa-tab-group element */
21
+ private tabGroup;
22
+ /** Cached container ID (this element's 'id' attribute) */
23
+ private containerId;
24
+ /** Map to track ResizeObservers for cleanup */
25
+ private resizeObservers;
26
+ protected doBeforeUI(): void;
27
+ protected doInitUI(): void;
28
+ updated(changedProperties: Map<string, any>): void;
29
+ has(key: string): boolean;
30
+ activate(key: string): void;
31
+ getActiveEditor(): string | null;
32
+ open(contribution: TabContribution): void;
33
+ handleTabAuxClick(event: MouseEvent, contribution: TabContribution): void;
34
+ closeTab(event: Event, tabName: string): Promise<void>;
35
+ markDirty(name: string, dirty: boolean): void;
36
+ isDirty(name: string): boolean;
37
+ /**
38
+ * Loads tab contributions from the registry.
39
+ */
40
+ private loadAndResolveContributions;
41
+ /**
42
+ * Cleans up a tab instance when the tab is closed.
43
+ *
44
+ * Cleanup Process:
45
+ * 1. Disconnect ResizeObserver if one exists
46
+ * 2. Call component's close() method if available (disposes resources)
47
+ * 3. DOM element is removed by caller (closeTab method)
48
+ */
49
+ private cleanupTabInstance;
50
+ private activateNextAvailableTab;
51
+ private getTabPanel;
52
+ private getTab;
53
+ /**
54
+ * Updates the toolbar for a tab panel by querying the component for its toolbar content.
55
+ * This allows LyraPart components to provide their own toolbar items directly.
56
+ */
57
+ private updateToolbarFromComponent;
58
+ /**
59
+ * Updates the context menu for a tab panel by querying the component for its context menu content.
60
+ * This allows LyraPart components to provide their own context menu items directly.
61
+ */
62
+ private updateContextMenuFromComponent;
63
+ /**
64
+ * Updates the toolbar height CSS variable for calc() positioning.
65
+ */
66
+ private updateToolbarHeightVariable;
67
+ /**
68
+ * Sets up a ResizeObserver to update toolbar height variable when toolbar size changes.
69
+ * Reuses existing observer if one already exists for this tab panel.
70
+ */
71
+ private setupToolbarResizeObserver;
72
+ render(): import('lit-html').TemplateResult<1>;
73
+ static styles: import('lit').CSSResult;
74
+ }
75
+ //# sourceMappingURL=tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/parts/tabs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAgD,eAAe,EAA+B,MAAM,8BAA8B,CAAC;AAG1I,OAAO,iBAAiB,CAAC;AAWzB;;;;;;;;;;;;GAYG;AACH,qBACa,QAAS,SAAQ,aAAa;IAEvC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAS;IAEtD,2CAA2C;IAE3C,OAAO,CAAC,aAAa,CAAyB;IAE9C,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAc;IAE9B,0DAA0D;IAC1D,OAAO,CAAC,WAAW,CAAuB;IAE1C,+CAA+C;IAC/C,OAAO,CAAC,eAAe,CAA8C;IAIrE,SAAS,CAAC,UAAU;IAQpB,SAAS,CAAC,QAAQ;IAmHlB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAyB3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAKzB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKpB,eAAe,IAAI,MAAM,GAAG,IAAI;IAKvC,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI;IAmCzC,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,GAAG,IAAI;IAMnE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAK7C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAO9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAMnC;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,MAAM;IAKd;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAmBlC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAmBtC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAQnC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAgBlC,MAAM;IA2DN,MAAM,CAAC,MAAM,0BAuFZ;CACJ"}
@@ -0,0 +1,35 @@
1
+ import { LyraElement } from './element';
2
+ import { Contribution } from '../core/contributionregistry';
3
+ export declare class LyraToolbar extends LyraElement {
4
+ private position;
5
+ orientation: "horizontal" | "vertical";
6
+ align: "start" | "center" | "end";
7
+ size: "small" | "medium" | "large";
8
+ private isEditor;
9
+ partToolbarContent?: any;
10
+ partToolbarRenderer?: () => any;
11
+ private contributions;
12
+ private compact;
13
+ private resizeObserver;
14
+ private resizeDebounceTimer;
15
+ private overflowCheckScheduled;
16
+ private updateCompactFromSpace;
17
+ private scheduleOverflowCheck;
18
+ private onResize;
19
+ connectedCallback(): void;
20
+ disconnectedCallback(): void;
21
+ updated(changedProperties: Map<string, unknown>): void;
22
+ protected doBeforeUI(): void;
23
+ private matchesTarget;
24
+ private loadContributions;
25
+ private isToolbarItem;
26
+ contributionCreator(contribution: Contribution): import('lit-html/directive.js').DirectiveResult<typeof import('lit-html/directives/unsafe-html.js').UnsafeHTMLDirective>;
27
+ render(): import('lit-html').TemplateResult<1>;
28
+ static styles: import('lit').CSSResult;
29
+ }
30
+ declare global {
31
+ interface HTMLElementTagNameMap {
32
+ 'lyra-toolbar': LyraToolbar;
33
+ }
34
+ }
35
+ //# sourceMappingURL=toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/parts/toolbar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAEtC,OAAO,EAEH,YAAY,EAKf,MAAM,8BAA8B,CAAC;AAgCtC,qBACa,WAAY,SAAQ,WAAW;IAExC,OAAO,CAAC,QAAQ,CAAuC;IAGvD,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAGtD,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAW;IAG5C,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAW;IAG7C,OAAO,CAAC,QAAQ,CAAkB;IAG3B,kBAAkB,CAAC,EAAE,GAAG,CAAa;IAGrC,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAa;IAGnD,OAAO,CAAC,aAAa,CAAsB;IAG3C,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,mBAAmB,CAA8C;IACzE,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,QAAQ,CAMd;IAEF,iBAAiB;IAMjB,oBAAoB;IAUpB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAK/C,SAAS,CAAC,UAAU;IAkBpB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,aAAa;IAIrB,mBAAmB,CAAC,YAAY,EAAE,YAAY;IAwB9C,MAAM;IAqBN,MAAM,CAAC,MAAM,0BAgBZ;CACJ;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAA;KAC9B;CACJ"}