@g9tm/lynxcontrols 0.0.0-stage → 1.4.2

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 (561) hide show
  1. package/README.md +29 -2
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/base/base.css +16 -0
  4. package/dist/base/base.css.map +1 -0
  5. package/dist/base/control.d.ts +68 -0
  6. package/dist/base/control.d.ts.map +1 -0
  7. package/dist/base/control.jsx +36 -0
  8. package/dist/base/control.jsx.map +1 -0
  9. package/dist/base/corner-badge.d.ts +35 -0
  10. package/dist/base/corner-badge.d.ts.map +1 -0
  11. package/dist/base/corner-badge.jsx +45 -0
  12. package/dist/base/corner-badge.jsx.map +1 -0
  13. package/dist/base/disposer.d.ts +28 -0
  14. package/dist/base/disposer.d.ts.map +1 -0
  15. package/dist/base/disposer.jsx +61 -0
  16. package/dist/base/disposer.jsx.map +1 -0
  17. package/dist/base/index.d.ts +10 -0
  18. package/dist/base/index.d.ts.map +1 -0
  19. package/dist/base/index.jsx +9 -0
  20. package/dist/base/press.d.ts +38 -0
  21. package/dist/base/press.d.ts.map +1 -0
  22. package/dist/base/press.jsx +73 -0
  23. package/dist/base/press.jsx.map +1 -0
  24. package/dist/base/pressable.d.ts +25 -0
  25. package/dist/base/pressable.d.ts.map +1 -0
  26. package/dist/base/pressable.jsx +38 -0
  27. package/dist/base/pressable.jsx.map +1 -0
  28. package/dist/base/selection-item.d.ts +29 -0
  29. package/dist/base/selection-item.d.ts.map +1 -0
  30. package/dist/base/selection-item.jsx +6 -0
  31. package/dist/base/selection-item.jsx.map +1 -0
  32. package/dist/base/timers.d.ts +7 -0
  33. package/dist/base/timers.d.ts.map +1 -0
  34. package/dist/base/timers.jsx +10 -0
  35. package/dist/base/timers.jsx.map +1 -0
  36. package/dist/base/use-controllable-state.d.ts +30 -0
  37. package/dist/base/use-controllable-state.d.ts.map +1 -0
  38. package/dist/base/use-controllable-state.jsx +49 -0
  39. package/dist/base/use-controllable-state.jsx.map +1 -0
  40. package/dist/base/use-stable-callback.d.ts +8 -0
  41. package/dist/base/use-stable-callback.d.ts.map +1 -0
  42. package/dist/base/use-stable-callback.jsx +12 -0
  43. package/dist/base/use-stable-callback.jsx.map +1 -0
  44. package/dist/button/button.css +162 -0
  45. package/dist/button/button.css.map +1 -0
  46. package/dist/button/button.d.ts +52 -0
  47. package/dist/button/button.d.ts.map +1 -0
  48. package/dist/button/button.jsx +88 -0
  49. package/dist/button/button.jsx.map +1 -0
  50. package/dist/button/header-action-button.d.ts +34 -0
  51. package/dist/button/header-action-button.d.ts.map +1 -0
  52. package/dist/button/header-action-button.jsx +51 -0
  53. package/dist/button/header-action-button.jsx.map +1 -0
  54. package/dist/button/icon-button.d.ts +46 -0
  55. package/dist/button/icon-button.d.ts.map +1 -0
  56. package/dist/button/icon-button.jsx +69 -0
  57. package/dist/button/icon-button.jsx.map +1 -0
  58. package/dist/button/index.d.ts +9 -0
  59. package/dist/button/index.d.ts.map +1 -0
  60. package/dist/button/index.jsx +8 -0
  61. package/dist/button/nav-card.d.ts +58 -0
  62. package/dist/button/nav-card.d.ts.map +1 -0
  63. package/dist/button/nav-card.jsx +96 -0
  64. package/dist/button/nav-card.jsx.map +1 -0
  65. package/dist/button/safe-tap.d.ts +27 -0
  66. package/dist/button/safe-tap.d.ts.map +1 -0
  67. package/dist/button/safe-tap.jsx +46 -0
  68. package/dist/button/safe-tap.jsx.map +1 -0
  69. package/dist/button/safe.d.ts +84 -0
  70. package/dist/button/safe.d.ts.map +1 -0
  71. package/dist/button/safe.jsx +116 -0
  72. package/dist/button/safe.jsx.map +1 -0
  73. package/dist/button/vertical-icon-text-button.d.ts +18 -0
  74. package/dist/button/vertical-icon-text-button.d.ts.map +1 -0
  75. package/dist/button/vertical-icon-text-button.jsx +21 -0
  76. package/dist/button/vertical-icon-text-button.jsx.map +1 -0
  77. package/dist/button/visuals.d.ts +53 -0
  78. package/dist/button/visuals.d.ts.map +1 -0
  79. package/dist/button/visuals.jsx +92 -0
  80. package/dist/button/visuals.jsx.map +1 -0
  81. package/dist/cascade/cascade-panel.d.ts +80 -0
  82. package/dist/cascade/cascade-panel.d.ts.map +1 -0
  83. package/dist/cascade/cascade-panel.jsx +179 -0
  84. package/dist/cascade/cascade-panel.jsx.map +1 -0
  85. package/dist/cascade/cascade.css +70 -0
  86. package/dist/cascade/cascade.css.map +1 -0
  87. package/dist/cascade/index.d.ts +3 -0
  88. package/dist/cascade/index.d.ts.map +1 -0
  89. package/dist/cascade/index.jsx +2 -0
  90. package/dist/cascade/model.d.ts +68 -0
  91. package/dist/cascade/model.d.ts.map +1 -0
  92. package/dist/cascade/model.jsx +161 -0
  93. package/dist/cascade/model.jsx.map +1 -0
  94. package/dist/deferred/deferred-content.d.ts +82 -0
  95. package/dist/deferred/deferred-content.d.ts.map +1 -0
  96. package/dist/deferred/deferred-content.jsx +263 -0
  97. package/dist/deferred/deferred-content.jsx.map +1 -0
  98. package/dist/deferred/deferred.css +62 -0
  99. package/dist/deferred/deferred.css.map +1 -0
  100. package/dist/deferred/index.d.ts +3 -0
  101. package/dist/deferred/index.d.ts.map +1 -0
  102. package/dist/deferred/index.jsx +2 -0
  103. package/dist/deferred/readiness-signal.d.ts +16 -0
  104. package/dist/deferred/readiness-signal.d.ts.map +1 -0
  105. package/dist/deferred/readiness-signal.jsx +29 -0
  106. package/dist/deferred/readiness-signal.jsx.map +1 -0
  107. package/dist/display/activity-indicator.d.ts +21 -0
  108. package/dist/display/activity-indicator.d.ts.map +1 -0
  109. package/dist/display/activity-indicator.jsx +22 -0
  110. package/dist/display/activity-indicator.jsx.map +1 -0
  111. package/dist/display/culture-date-time-label.d.ts +64 -0
  112. package/dist/display/culture-date-time-label.d.ts.map +1 -0
  113. package/dist/display/culture-date-time-label.jsx +73 -0
  114. package/dist/display/culture-date-time-label.jsx.map +1 -0
  115. package/dist/display/display.css +217 -0
  116. package/dist/display/display.css.map +1 -0
  117. package/dist/display/index.d.ts +7 -0
  118. package/dist/display/index.d.ts.map +1 -0
  119. package/dist/display/index.jsx +6 -0
  120. package/dist/display/progress-bar.d.ts +38 -0
  121. package/dist/display/progress-bar.d.ts.map +1 -0
  122. package/dist/display/progress-bar.jsx +57 -0
  123. package/dist/display/progress-bar.jsx.map +1 -0
  124. package/dist/display/separator.d.ts +30 -0
  125. package/dist/display/separator.d.ts.map +1 -0
  126. package/dist/display/separator.jsx +55 -0
  127. package/dist/display/separator.jsx.map +1 -0
  128. package/dist/display/shimmer.d.ts +41 -0
  129. package/dist/display/shimmer.d.ts.map +1 -0
  130. package/dist/display/shimmer.jsx +41 -0
  131. package/dist/display/shimmer.jsx.map +1 -0
  132. package/dist/display/title-with-line.d.ts +13 -0
  133. package/dist/display/title-with-line.d.ts.map +1 -0
  134. package/dist/display/title-with-line.jsx +21 -0
  135. package/dist/display/title-with-line.jsx.map +1 -0
  136. package/dist/edge-panel/edge-panel.css +132 -0
  137. package/dist/edge-panel/edge-panel.css.map +1 -0
  138. package/dist/edge-panel/edge-panel.d.ts +87 -0
  139. package/dist/edge-panel/edge-panel.d.ts.map +1 -0
  140. package/dist/edge-panel/edge-panel.jsx +326 -0
  141. package/dist/edge-panel/edge-panel.jsx.map +1 -0
  142. package/dist/edge-panel/helper.d.ts +27 -0
  143. package/dist/edge-panel/helper.d.ts.map +1 -0
  144. package/dist/edge-panel/helper.jsx +118 -0
  145. package/dist/edge-panel/helper.jsx.map +1 -0
  146. package/dist/edge-panel/index.d.ts +4 -0
  147. package/dist/edge-panel/index.d.ts.map +1 -0
  148. package/dist/edge-panel/index.jsx +3 -0
  149. package/dist/edge-panel/types.d.ts +155 -0
  150. package/dist/edge-panel/types.d.ts.map +1 -0
  151. package/dist/edge-panel/types.jsx +139 -0
  152. package/dist/edge-panel/types.jsx.map +1 -0
  153. package/dist/expander/expander.css +54 -0
  154. package/dist/expander/expander.css.map +1 -0
  155. package/dist/expander/expander.d.ts +46 -0
  156. package/dist/expander/expander.d.ts.map +1 -0
  157. package/dist/expander/expander.jsx +112 -0
  158. package/dist/expander/expander.jsx.map +1 -0
  159. package/dist/expander/index.d.ts +2 -0
  160. package/dist/expander/index.d.ts.map +1 -0
  161. package/dist/expander/index.jsx +1 -0
  162. package/dist/fields/dictation.d.ts +43 -0
  163. package/dist/fields/dictation.d.ts.map +1 -0
  164. package/dist/fields/dictation.jsx +124 -0
  165. package/dist/fields/dictation.jsx.map +1 -0
  166. package/dist/fields/editor.d.ts +26 -0
  167. package/dist/fields/editor.d.ts.map +1 -0
  168. package/dist/fields/editor.jsx +46 -0
  169. package/dist/fields/editor.jsx.map +1 -0
  170. package/dist/fields/fields.css +164 -0
  171. package/dist/fields/fields.css.map +1 -0
  172. package/dist/fields/index.d.ts +13 -0
  173. package/dist/fields/index.d.ts.map +1 -0
  174. package/dist/fields/index.jsx +12 -0
  175. package/dist/fields/input-policy.d.ts +48 -0
  176. package/dist/fields/input-policy.d.ts.map +1 -0
  177. package/dist/fields/input-policy.jsx +215 -0
  178. package/dist/fields/input-policy.jsx.map +1 -0
  179. package/dist/fields/notch.d.ts +10 -0
  180. package/dist/fields/notch.d.ts.map +1 -0
  181. package/dist/fields/notch.jsx +9 -0
  182. package/dist/fields/notch.jsx.map +1 -0
  183. package/dist/fields/outlined-field.d.ts +152 -0
  184. package/dist/fields/outlined-field.d.ts.map +1 -0
  185. package/dist/fields/outlined-field.jsx +199 -0
  186. package/dist/fields/outlined-field.jsx.map +1 -0
  187. package/dist/fields/pin-entry.d.ts +65 -0
  188. package/dist/fields/pin-entry.d.ts.map +1 -0
  189. package/dist/fields/pin-entry.jsx +294 -0
  190. package/dist/fields/pin-entry.jsx.map +1 -0
  191. package/dist/fields/search-entry.d.ts +35 -0
  192. package/dist/fields/search-entry.d.ts.map +1 -0
  193. package/dist/fields/search-entry.jsx +118 -0
  194. package/dist/fields/search-entry.jsx.map +1 -0
  195. package/dist/fields/slot-layout.d.ts +33 -0
  196. package/dist/fields/slot-layout.d.ts.map +1 -0
  197. package/dist/fields/slot-layout.jsx +33 -0
  198. package/dist/fields/slot-layout.jsx.map +1 -0
  199. package/dist/fields/text-entry.d.ts +62 -0
  200. package/dist/fields/text-entry.d.ts.map +1 -0
  201. package/dist/fields/text-entry.jsx +82 -0
  202. package/dist/fields/text-entry.jsx.map +1 -0
  203. package/dist/fields/use-dictation.d.ts +34 -0
  204. package/dist/fields/use-dictation.d.ts.map +1 -0
  205. package/dist/fields/use-dictation.jsx +80 -0
  206. package/dist/fields/use-dictation.jsx.map +1 -0
  207. package/dist/fields/use-text-input.d.ts +150 -0
  208. package/dist/fields/use-text-input.d.ts.map +1 -0
  209. package/dist/fields/use-text-input.jsx +247 -0
  210. package/dist/fields/use-text-input.jsx.map +1 -0
  211. package/dist/fields/validator.d.ts +14 -0
  212. package/dist/fields/validator.d.ts.map +1 -0
  213. package/dist/fields/validator.jsx +20 -0
  214. package/dist/fields/validator.jsx.map +1 -0
  215. package/dist/host/back.d.ts +42 -0
  216. package/dist/host/back.d.ts.map +1 -0
  217. package/dist/host/back.jsx +47 -0
  218. package/dist/host/back.jsx.map +1 -0
  219. package/dist/host/hooks.d.ts +90 -0
  220. package/dist/host/hooks.d.ts.map +1 -0
  221. package/dist/host/hooks.jsx +166 -0
  222. package/dist/host/hooks.jsx.map +1 -0
  223. package/dist/host/host.css +81 -0
  224. package/dist/host/host.css.map +1 -0
  225. package/dist/host/host.d.ts +70 -0
  226. package/dist/host/host.d.ts.map +1 -0
  227. package/dist/host/host.jsx +229 -0
  228. package/dist/host/host.jsx.map +1 -0
  229. package/dist/host/index.d.ts +9 -0
  230. package/dist/host/index.d.ts.map +1 -0
  231. package/dist/host/index.jsx +8 -0
  232. package/dist/host/keyboard.d.ts +24 -0
  233. package/dist/host/keyboard.d.ts.map +1 -0
  234. package/dist/host/keyboard.jsx +28 -0
  235. package/dist/host/keyboard.jsx.map +1 -0
  236. package/dist/host/layers.d.ts +69 -0
  237. package/dist/host/layers.d.ts.map +1 -0
  238. package/dist/host/layers.jsx +111 -0
  239. package/dist/host/layers.jsx.map +1 -0
  240. package/dist/host/page-loading-overlay.d.ts +17 -0
  241. package/dist/host/page-loading-overlay.d.ts.map +1 -0
  242. package/dist/host/page-loading-overlay.jsx +16 -0
  243. package/dist/host/page-loading-overlay.jsx.map +1 -0
  244. package/dist/host/readiness.d.ts +57 -0
  245. package/dist/host/readiness.d.ts.map +1 -0
  246. package/dist/host/readiness.jsx +138 -0
  247. package/dist/host/readiness.jsx.map +1 -0
  248. package/dist/host/registry.d.ts +106 -0
  249. package/dist/host/registry.d.ts.map +1 -0
  250. package/dist/host/registry.jsx +93 -0
  251. package/dist/host/registry.jsx.map +1 -0
  252. package/dist/icon/icon.css +39 -0
  253. package/dist/icon/icon.css.map +1 -0
  254. package/dist/icon/icon.d.ts +57 -0
  255. package/dist/icon/icon.d.ts.map +1 -0
  256. package/dist/icon/icon.jsx +115 -0
  257. package/dist/icon/icon.jsx.map +1 -0
  258. package/dist/icon/index.d.ts +4 -0
  259. package/dist/icon/index.d.ts.map +1 -0
  260. package/dist/icon/index.jsx +3 -0
  261. package/dist/icon/slot.d.ts +45 -0
  262. package/dist/icon/slot.d.ts.map +1 -0
  263. package/dist/icon/slot.jsx +61 -0
  264. package/dist/icon/slot.jsx.map +1 -0
  265. package/dist/icon/swatch.d.ts +29 -0
  266. package/dist/icon/swatch.d.ts.map +1 -0
  267. package/dist/icon/swatch.jsx +25 -0
  268. package/dist/icon/swatch.jsx.map +1 -0
  269. package/dist/index.d.ts +23 -0
  270. package/dist/index.d.ts.map +1 -0
  271. package/dist/index.jsx +1 -0
  272. package/dist/pickers/combo-box.d.ts +42 -0
  273. package/dist/pickers/combo-box.d.ts.map +1 -0
  274. package/dist/pickers/combo-box.jsx +129 -0
  275. package/dist/pickers/combo-box.jsx.map +1 -0
  276. package/dist/pickers/date-time-picker.d.ts +63 -0
  277. package/dist/pickers/date-time-picker.d.ts.map +1 -0
  278. package/dist/pickers/date-time-picker.jsx +141 -0
  279. package/dist/pickers/date-time-picker.jsx.map +1 -0
  280. package/dist/pickers/date-time.d.ts +82 -0
  281. package/dist/pickers/date-time.d.ts.map +1 -0
  282. package/dist/pickers/date-time.jsx +130 -0
  283. package/dist/pickers/date-time.jsx.map +1 -0
  284. package/dist/pickers/index.d.ts +10 -0
  285. package/dist/pickers/index.d.ts.map +1 -0
  286. package/dist/pickers/index.jsx +9 -0
  287. package/dist/pickers/picker-sheet.d.ts +21 -0
  288. package/dist/pickers/picker-sheet.d.ts.map +1 -0
  289. package/dist/pickers/picker-sheet.jsx +61 -0
  290. package/dist/pickers/picker-sheet.jsx.map +1 -0
  291. package/dist/pickers/picker.d.ts +32 -0
  292. package/dist/pickers/picker.d.ts.map +1 -0
  293. package/dist/pickers/picker.jsx +72 -0
  294. package/dist/pickers/picker.jsx.map +1 -0
  295. package/dist/pickers/pickers.css +219 -0
  296. package/dist/pickers/pickers.css.map +1 -0
  297. package/dist/pickers/timespan-picker.d.ts +36 -0
  298. package/dist/pickers/timespan-picker.d.ts.map +1 -0
  299. package/dist/pickers/timespan-picker.jsx +99 -0
  300. package/dist/pickers/timespan-picker.jsx.map +1 -0
  301. package/dist/pickers/timespan.d.ts +38 -0
  302. package/dist/pickers/timespan.d.ts.map +1 -0
  303. package/dist/pickers/timespan.jsx +49 -0
  304. package/dist/pickers/timespan.jsx.map +1 -0
  305. package/dist/pickers/trigger.d.ts +34 -0
  306. package/dist/pickers/trigger.d.ts.map +1 -0
  307. package/dist/pickers/trigger.jsx +77 -0
  308. package/dist/pickers/trigger.jsx.map +1 -0
  309. package/dist/pickers/wheel-column.d.ts +32 -0
  310. package/dist/pickers/wheel-column.d.ts.map +1 -0
  311. package/dist/pickers/wheel-column.jsx +99 -0
  312. package/dist/pickers/wheel-column.jsx.map +1 -0
  313. package/dist/plus-button/index.d.ts +3 -0
  314. package/dist/plus-button/index.d.ts.map +1 -0
  315. package/dist/plus-button/index.jsx +2 -0
  316. package/dist/plus-button/model.d.ts +65 -0
  317. package/dist/plus-button/model.d.ts.map +1 -0
  318. package/dist/plus-button/model.jsx +86 -0
  319. package/dist/plus-button/model.jsx.map +1 -0
  320. package/dist/plus-button/plus-button.css +67 -0
  321. package/dist/plus-button/plus-button.css.map +1 -0
  322. package/dist/plus-button/plus-button.d.ts +38 -0
  323. package/dist/plus-button/plus-button.d.ts.map +1 -0
  324. package/dist/plus-button/plus-button.jsx +155 -0
  325. package/dist/plus-button/plus-button.jsx.map +1 -0
  326. package/dist/popup/frame.d.ts +101 -0
  327. package/dist/popup/frame.d.ts.map +1 -0
  328. package/dist/popup/frame.jsx +252 -0
  329. package/dist/popup/frame.jsx.map +1 -0
  330. package/dist/popup/index.d.ts +8 -0
  331. package/dist/popup/index.d.ts.map +1 -0
  332. package/dist/popup/index.jsx +7 -0
  333. package/dist/popup/input-form.d.ts +35 -0
  334. package/dist/popup/input-form.d.ts.map +1 -0
  335. package/dist/popup/input-form.jsx +160 -0
  336. package/dist/popup/input-form.jsx.map +1 -0
  337. package/dist/popup/input.d.ts +175 -0
  338. package/dist/popup/input.d.ts.map +1 -0
  339. package/dist/popup/input.jsx +176 -0
  340. package/dist/popup/input.jsx.map +1 -0
  341. package/dist/popup/popup-view.d.ts +25 -0
  342. package/dist/popup/popup-view.d.ts.map +1 -0
  343. package/dist/popup/popup-view.jsx +67 -0
  344. package/dist/popup/popup-view.jsx.map +1 -0
  345. package/dist/popup/popup.css +203 -0
  346. package/dist/popup/popup.css.map +1 -0
  347. package/dist/popup/queue.d.ts +90 -0
  348. package/dist/popup/queue.d.ts.map +1 -0
  349. package/dist/popup/queue.jsx +309 -0
  350. package/dist/popup/queue.jsx.map +1 -0
  351. package/dist/popup/service.d.ts +60 -0
  352. package/dist/popup/service.d.ts.map +1 -0
  353. package/dist/popup/service.jsx +350 -0
  354. package/dist/popup/service.jsx.map +1 -0
  355. package/dist/popup/types.d.ts +222 -0
  356. package/dist/popup/types.d.ts.map +1 -0
  357. package/dist/popup/types.jsx +218 -0
  358. package/dist/popup/types.jsx.map +1 -0
  359. package/dist/provider/contexts.d.ts +41 -0
  360. package/dist/provider/contexts.d.ts.map +1 -0
  361. package/dist/provider/contexts.jsx +11 -0
  362. package/dist/provider/contexts.jsx.map +1 -0
  363. package/dist/provider/global-events.d.ts +8 -0
  364. package/dist/provider/global-events.d.ts.map +1 -0
  365. package/dist/provider/global-events.jsx +17 -0
  366. package/dist/provider/global-events.jsx.map +1 -0
  367. package/dist/provider/hooks.d.ts +49 -0
  368. package/dist/provider/hooks.d.ts.map +1 -0
  369. package/dist/provider/hooks.jsx +72 -0
  370. package/dist/provider/hooks.jsx.map +1 -0
  371. package/dist/provider/index.d.ts +5 -0
  372. package/dist/provider/index.d.ts.map +1 -0
  373. package/dist/provider/index.jsx +3 -0
  374. package/dist/provider/provider.css +18 -0
  375. package/dist/provider/provider.css.map +1 -0
  376. package/dist/provider/provider.d.ts +51 -0
  377. package/dist/provider/provider.d.ts.map +1 -0
  378. package/dist/provider/provider.jsx +290 -0
  379. package/dist/provider/provider.jsx.map +1 -0
  380. package/dist/provider/settings.d.ts +99 -0
  381. package/dist/provider/settings.d.ts.map +1 -0
  382. package/dist/provider/settings.jsx +45 -0
  383. package/dist/provider/settings.jsx.map +1 -0
  384. package/dist/provider/theme-css.d.ts +12 -0
  385. package/dist/provider/theme-css.d.ts.map +1 -0
  386. package/dist/provider/theme-css.jsx +19 -0
  387. package/dist/provider/theme-css.jsx.map +1 -0
  388. package/dist/provider/theme-root.d.ts +10 -0
  389. package/dist/provider/theme-root.d.ts.map +1 -0
  390. package/dist/provider/theme-root.jsx +24 -0
  391. package/dist/provider/theme-root.jsx.map +1 -0
  392. package/dist/provider/theme.css +473 -0
  393. package/dist/provider/theme.css.map +1 -0
  394. package/dist/range-slider/index.d.ts +3 -0
  395. package/dist/range-slider/index.d.ts.map +1 -0
  396. package/dist/range-slider/index.jsx +2 -0
  397. package/dist/range-slider/math.d.ts +23 -0
  398. package/dist/range-slider/math.d.ts.map +1 -0
  399. package/dist/range-slider/math.jsx +71 -0
  400. package/dist/range-slider/math.jsx.map +1 -0
  401. package/dist/range-slider/range-slider.css +90 -0
  402. package/dist/range-slider/range-slider.css.map +1 -0
  403. package/dist/range-slider/range-slider.d.ts +52 -0
  404. package/dist/range-slider/range-slider.d.ts.map +1 -0
  405. package/dist/range-slider/range-slider.jsx +159 -0
  406. package/dist/range-slider/range-slider.jsx.map +1 -0
  407. package/dist/selection/index.d.ts +5 -0
  408. package/dist/selection/index.d.ts.map +1 -0
  409. package/dist/selection/index.jsx +3 -0
  410. package/dist/selection/model.d.ts +53 -0
  411. package/dist/selection/model.d.ts.map +1 -0
  412. package/dist/selection/model.jsx +69 -0
  413. package/dist/selection/model.jsx.map +1 -0
  414. package/dist/selection/selection-sheet.d.ts +80 -0
  415. package/dist/selection/selection-sheet.d.ts.map +1 -0
  416. package/dist/selection/selection-sheet.jsx +366 -0
  417. package/dist/selection/selection-sheet.jsx.map +1 -0
  418. package/dist/selection/selection.css +76 -0
  419. package/dist/selection/selection.css.map +1 -0
  420. package/dist/selection/use-selection-model.d.ts +9 -0
  421. package/dist/selection/use-selection-model.d.ts.map +1 -0
  422. package/dist/selection/use-selection-model.jsx +22 -0
  423. package/dist/selection/use-selection-model.jsx.map +1 -0
  424. package/dist/sheet/frame.d.ts +47 -0
  425. package/dist/sheet/frame.d.ts.map +1 -0
  426. package/dist/sheet/frame.jsx +270 -0
  427. package/dist/sheet/frame.jsx.map +1 -0
  428. package/dist/sheet/gesture.d.ts +51 -0
  429. package/dist/sheet/gesture.d.ts.map +1 -0
  430. package/dist/sheet/gesture.jsx +107 -0
  431. package/dist/sheet/gesture.jsx.map +1 -0
  432. package/dist/sheet/handoff.d.ts +32 -0
  433. package/dist/sheet/handoff.d.ts.map +1 -0
  434. package/dist/sheet/handoff.jsx +33 -0
  435. package/dist/sheet/handoff.jsx.map +1 -0
  436. package/dist/sheet/header.d.ts +46 -0
  437. package/dist/sheet/header.d.ts.map +1 -0
  438. package/dist/sheet/header.jsx +158 -0
  439. package/dist/sheet/header.jsx.map +1 -0
  440. package/dist/sheet/height-memo.d.ts +47 -0
  441. package/dist/sheet/height-memo.d.ts.map +1 -0
  442. package/dist/sheet/height-memo.jsx +100 -0
  443. package/dist/sheet/height-memo.jsx.map +1 -0
  444. package/dist/sheet/index.d.ts +12 -0
  445. package/dist/sheet/index.d.ts.map +1 -0
  446. package/dist/sheet/index.jsx +11 -0
  447. package/dist/sheet/loadable.d.ts +35 -0
  448. package/dist/sheet/loadable.d.ts.map +1 -0
  449. package/dist/sheet/loadable.jsx +65 -0
  450. package/dist/sheet/loadable.jsx.map +1 -0
  451. package/dist/sheet/motion.d.ts +59 -0
  452. package/dist/sheet/motion.d.ts.map +1 -0
  453. package/dist/sheet/motion.jsx +59 -0
  454. package/dist/sheet/motion.jsx.map +1 -0
  455. package/dist/sheet/options.d.ts +252 -0
  456. package/dist/sheet/options.d.ts.map +1 -0
  457. package/dist/sheet/options.jsx +92 -0
  458. package/dist/sheet/options.jsx.map +1 -0
  459. package/dist/sheet/processing.d.ts +22 -0
  460. package/dist/sheet/processing.d.ts.map +1 -0
  461. package/dist/sheet/processing.jsx +66 -0
  462. package/dist/sheet/processing.jsx.map +1 -0
  463. package/dist/sheet/service.d.ts +55 -0
  464. package/dist/sheet/service.d.ts.map +1 -0
  465. package/dist/sheet/service.jsx +143 -0
  466. package/dist/sheet/service.jsx.map +1 -0
  467. package/dist/sheet/sheet.css +246 -0
  468. package/dist/sheet/sheet.css.map +1 -0
  469. package/dist/sheet/sheet.d.ts +19 -0
  470. package/dist/sheet/sheet.d.ts.map +1 -0
  471. package/dist/sheet/sheet.jsx +40 -0
  472. package/dist/sheet/sheet.jsx.map +1 -0
  473. package/dist/sheet/sizing.d.ts +87 -0
  474. package/dist/sheet/sizing.d.ts.map +1 -0
  475. package/dist/sheet/sizing.jsx +159 -0
  476. package/dist/sheet/sizing.jsx.map +1 -0
  477. package/dist/sheet/stack.d.ts +161 -0
  478. package/dist/sheet/stack.d.ts.map +1 -0
  479. package/dist/sheet/stack.jsx +378 -0
  480. package/dist/sheet/stack.jsx.map +1 -0
  481. package/dist/swipe/index.d.ts +3 -0
  482. package/dist/swipe/index.d.ts.map +1 -0
  483. package/dist/swipe/index.jsx +2 -0
  484. package/dist/swipe/model.d.ts +72 -0
  485. package/dist/swipe/model.d.ts.map +1 -0
  486. package/dist/swipe/model.jsx +66 -0
  487. package/dist/swipe/model.jsx.map +1 -0
  488. package/dist/swipe/swipe-view.d.ts +40 -0
  489. package/dist/swipe/swipe-view.d.ts.map +1 -0
  490. package/dist/swipe/swipe-view.jsx +163 -0
  491. package/dist/swipe/swipe-view.jsx.map +1 -0
  492. package/dist/swipe/swipe.css +34 -0
  493. package/dist/swipe/swipe.css.map +1 -0
  494. package/dist/tab-bar/index.d.ts +4 -0
  495. package/dist/tab-bar/index.d.ts.map +1 -0
  496. package/dist/tab-bar/index.jsx +3 -0
  497. package/dist/tab-bar/metrics.d.ts +230 -0
  498. package/dist/tab-bar/metrics.d.ts.map +1 -0
  499. package/dist/tab-bar/metrics.jsx +221 -0
  500. package/dist/tab-bar/metrics.jsx.map +1 -0
  501. package/dist/tab-bar/model.d.ts +170 -0
  502. package/dist/tab-bar/model.d.ts.map +1 -0
  503. package/dist/tab-bar/model.jsx +349 -0
  504. package/dist/tab-bar/model.jsx.map +1 -0
  505. package/dist/tab-bar/tab-bar.css +173 -0
  506. package/dist/tab-bar/tab-bar.css.map +1 -0
  507. package/dist/tab-bar/tab-bar.d.ts +61 -0
  508. package/dist/tab-bar/tab-bar.d.ts.map +1 -0
  509. package/dist/tab-bar/tab-bar.jsx +346 -0
  510. package/dist/tab-bar/tab-bar.jsx.map +1 -0
  511. package/dist/tabs/index.d.ts +3 -0
  512. package/dist/tabs/index.d.ts.map +1 -0
  513. package/dist/tabs/index.jsx +2 -0
  514. package/dist/tabs/model.d.ts +83 -0
  515. package/dist/tabs/model.d.ts.map +1 -0
  516. package/dist/tabs/model.jsx +113 -0
  517. package/dist/tabs/model.jsx.map +1 -0
  518. package/dist/tabs/tab-view.d.ts +47 -0
  519. package/dist/tabs/tab-view.d.ts.map +1 -0
  520. package/dist/tabs/tab-view.jsx +227 -0
  521. package/dist/tabs/tab-view.jsx.map +1 -0
  522. package/dist/tabs/tabs.css +182 -0
  523. package/dist/tabs/tabs.css.map +1 -0
  524. package/dist/toast/index.d.ts +3 -0
  525. package/dist/toast/index.d.ts.map +1 -0
  526. package/dist/toast/index.jsx +2 -0
  527. package/dist/toast/service.d.ts +48 -0
  528. package/dist/toast/service.d.ts.map +1 -0
  529. package/dist/toast/service.jsx +238 -0
  530. package/dist/toast/service.jsx.map +1 -0
  531. package/dist/toast/store.d.ts +176 -0
  532. package/dist/toast/store.d.ts.map +1 -0
  533. package/dist/toast/store.jsx +355 -0
  534. package/dist/toast/store.jsx.map +1 -0
  535. package/dist/toast/toast.css +159 -0
  536. package/dist/toast/toast.css.map +1 -0
  537. package/dist/toggle/checkbox-math.d.ts +52 -0
  538. package/dist/toggle/checkbox-math.d.ts.map +1 -0
  539. package/dist/toggle/checkbox-math.jsx +111 -0
  540. package/dist/toggle/checkbox-math.jsx.map +1 -0
  541. package/dist/toggle/checkbox.d.ts +56 -0
  542. package/dist/toggle/checkbox.d.ts.map +1 -0
  543. package/dist/toggle/checkbox.jsx +152 -0
  544. package/dist/toggle/checkbox.jsx.map +1 -0
  545. package/dist/toggle/chip-group.d.ts +50 -0
  546. package/dist/toggle/chip-group.d.ts.map +1 -0
  547. package/dist/toggle/chip-group.jsx +107 -0
  548. package/dist/toggle/chip-group.jsx.map +1 -0
  549. package/dist/toggle/index.d.ts +5 -0
  550. package/dist/toggle/index.d.ts.map +1 -0
  551. package/dist/toggle/index.jsx +4 -0
  552. package/dist/toggle/switch.d.ts +52 -0
  553. package/dist/toggle/switch.d.ts.map +1 -0
  554. package/dist/toggle/switch.jsx +192 -0
  555. package/dist/toggle/switch.jsx.map +1 -0
  556. package/dist/toggle/toggle.css +188 -0
  557. package/dist/toggle/toggle.css.map +1 -0
  558. package/package.json +155 -4
  559. package/rspeedy/index.d.ts +21 -0
  560. package/rspeedy/index.mjs +75 -0
  561. package/rspeedy/index.test.mjs +52 -0
@@ -0,0 +1,326 @@
1
+ import "./edge-panel.css";
2
+ import { G9StringKey } from "@g9tm/lynxcontrols-foundation";
3
+ import { useEffect, useMemo, useRef, useState } from "@lynx-js/react";
4
+ import { g9RowStyle, g9TextStart } from "../base/control.jsx";
5
+ import { startTimer, stopTimer } from "../base/timers.jsx";
6
+ import { useControllableState } from "../base/use-controllable-state.jsx";
7
+ import { useG9Back, useG9LayerItem } from "../host/hooks.jsx";
8
+ import { G9IconSlot } from "../icon/slot.jsx";
9
+ import { useG9Core, useG9Diagnostics, useG9Direction, useG9Settings, useG9Strings, useG9Window } from "../provider/hooks.jsx";
10
+ import { G9EdgeMenuNavigator, g9EdgePanelMetrics, isEdgeMenuHeaderEmpty, resolveEdgePanelMaxHeight } from "./types.jsx";
11
+ function createEdgePanelController() {
12
+ let target = null;
13
+ return {
14
+ open: ()=>null == target ? void 0 : target.setOpen(true),
15
+ close: ()=>null == target ? void 0 : target.setOpen(false),
16
+ toggle: ()=>null == target ? void 0 : target.setOpen(!target.isOpen()),
17
+ get isOpen () {
18
+ return target ? target.isOpen() : false;
19
+ },
20
+ get isMounted () {
21
+ return null !== target;
22
+ },
23
+ handleHardwareBackPressed () {
24
+ if (!(null == target ? void 0 : target.isOpen())) return false;
25
+ target.setOpen(false);
26
+ return true;
27
+ },
28
+ navigateToSubList (items, header = null) {
29
+ if (!target) return;
30
+ target.navigator.navigateToSubList(items, header);
31
+ target.renderNav();
32
+ },
33
+ navigateToRoot () {
34
+ if (!target) return;
35
+ target.navigator.navigateToRoot();
36
+ target.renderNav();
37
+ },
38
+ refreshMenuItems () {
39
+ if (!target) return;
40
+ target.navigator.refresh();
41
+ target.renderNav();
42
+ },
43
+ bind (next) {
44
+ target = next;
45
+ return ()=>{
46
+ if (target === next) target = null;
47
+ };
48
+ }
49
+ };
50
+ }
51
+ function useEdgePanel() {
52
+ const ref = useRef(null);
53
+ if (null === ref.current) ref.current = createEdgePanelController();
54
+ return ref.current;
55
+ }
56
+ let panelSequence = 0;
57
+ function G9EdgePanel(props) {
58
+ var _props_defaultOpen, _ref, _props_openAnimationDuration, _ref1, _props_closeAnimationDuration, _props_menuHeader, _props_useBackdrop;
59
+ const keyRef = useRef(null);
60
+ if (null === keyRef.current) {
61
+ panelSequence += 1;
62
+ keyRef.current = `g9-edge-panel-${panelSequence}`;
63
+ }
64
+ const key = keyRef.current;
65
+ const [isOpen, setOpen] = useControllableState({
66
+ value: props.open,
67
+ defaultValue: null != (_props_defaultOpen = props.defaultOpen) ? _props_defaultOpen : false,
68
+ onChange: props.onOpenChange,
69
+ name: 'G9EdgePanel.open'
70
+ });
71
+ const openMs = null != (_ref = null != (_props_openAnimationDuration = props.openAnimationDuration) ? _props_openAnimationDuration : props.animationDuration) ? _ref : g9EdgePanelMetrics.defaultOpenAnimationDurationMs;
72
+ const closeMs = null != (_ref1 = null != (_props_closeAnimationDuration = props.closeAnimationDuration) ? _props_closeAnimationDuration : props.animationDuration) ? _ref1 : g9EdgePanelMetrics.defaultCloseAnimationDurationMs;
73
+ const [phase, setPhase] = useState(isOpen ? 'entering' : 'closed');
74
+ const latest = useRef(props);
75
+ latest.current = props;
76
+ const openRef = useRef(isOpen);
77
+ openRef.current = isOpen;
78
+ useEffect(()=>{
79
+ var _latest_current_onClosing, _latest_current;
80
+ if (isOpen) {
81
+ setPhase((p)=>'closed' === p ? 'entering' : 'opening');
82
+ const enter = startTimer(()=>setPhase('opening'), 16);
83
+ const done = startTimer(()=>{
84
+ var _latest_current_onOpened, _latest_current;
85
+ setPhase('open');
86
+ null == (_latest_current_onOpened = (_latest_current = latest.current).onOpened) || _latest_current_onOpened.call(_latest_current);
87
+ }, openMs + 16);
88
+ return ()=>{
89
+ stopTimer(enter);
90
+ stopTimer(done);
91
+ };
92
+ }
93
+ if ('closed' === phase) return;
94
+ null == (_latest_current_onClosing = (_latest_current = latest.current).onClosing) || _latest_current_onClosing.call(_latest_current);
95
+ setPhase('closing');
96
+ const done = startTimer(()=>{
97
+ var _latest_current_onClosed, _latest_current;
98
+ setPhase('closed');
99
+ null == (_latest_current_onClosed = (_latest_current = latest.current).onClosed) || _latest_current_onClosed.call(_latest_current);
100
+ }, closeMs);
101
+ return ()=>stopTimer(done);
102
+ }, [
103
+ isOpen
104
+ ]);
105
+ const navigator = useMemo(()=>new G9EdgeMenuNavigator(), []);
106
+ const [, setNavVersion] = useState(0);
107
+ const renderNav = ()=>setNavVersion(navigator.version);
108
+ const rootHeader = null != (_props_menuHeader = props.menuHeader) ? _props_menuHeader : null;
109
+ useMemo(()=>navigator.setRoot(props.menuItems, rootHeader), [
110
+ props.menuItems,
111
+ rootHeader
112
+ ]);
113
+ useEffect(()=>{
114
+ var _props_controller;
115
+ return null == (_props_controller = props.controller) ? void 0 : _props_controller.bind({
116
+ setOpen: (open)=>setOpen(open),
117
+ isOpen: ()=>openRef.current,
118
+ navigator,
119
+ renderNav
120
+ });
121
+ }, [
122
+ props.controller
123
+ ]);
124
+ useG9Back(()=>{
125
+ setOpen(false);
126
+ return true;
127
+ }, {
128
+ enabled: isOpen,
129
+ layer: 'edgePanel'
130
+ });
131
+ const core = useG9Core();
132
+ const lastInteraction = useRef(-1 / 0);
133
+ const accept = ()=>{
134
+ const now = core.services.clock.monotonicNow();
135
+ if (now - lastInteraction.current < g9EdgePanelMetrics.interactionDebounceMs) return false;
136
+ lastInteraction.current = now;
137
+ return true;
138
+ };
139
+ const animating = 'entering' === phase || 'opening' === phase || 'closing' === phase;
140
+ const onTab = ()=>{
141
+ if (animating || !accept()) return;
142
+ setOpen(!openRef.current);
143
+ };
144
+ const useBackdrop = null != (_props_useBackdrop = props.useBackdrop) ? _props_useBackdrop : true;
145
+ const onBackdrop = ()=>{
146
+ var _props_enableOutsideTapToClose;
147
+ if (!accept()) return;
148
+ if (useBackdrop && (null != (_props_enableOutsideTapToClose = props.enableOutsideTapToClose) ? _props_enableOutsideTapToClose : true) && openRef.current) setOpen(false);
149
+ };
150
+ const overlay = <EdgePanelOverlay props={props} phase={phase} openMs={openMs} closeMs={closeMs} navigator={navigator} navVersion={navigator.version} onTab={onTab} onBackdrop={onBackdrop} onNavigate={renderNav} onClose={()=>setOpen(false)}/>;
151
+ const visible = 'closed' !== phase || true === props.showCollapsedTab;
152
+ useG9LayerItem('edgePanel', key, overlay, {
153
+ enabled: visible
154
+ });
155
+ return null;
156
+ }
157
+ function EdgePanelOverlay(o) {
158
+ var _p_side, _p_contentFlowDirection, _p_widthRatio, _p_topGap, _p_maxPanelHeight, _p_maxPanelHeightRatio, _p_useBackdrop, _p_closeButtonPlacement, _p_collapsedTabIcon, _p_panelBackgroundColor, _p_tabBackgroundColor, _p_tabBackgroundColor1;
159
+ const p = o.props;
160
+ const win = useG9Window();
161
+ const appRtl = 'rtl' === useG9Direction();
162
+ const glyphs = useG9Settings().glyphs;
163
+ const left = (null != (_p_side = p.side) ? _p_side : 'left') === 'left';
164
+ const direction = null != (_p_contentFlowDirection = p.contentFlowDirection) ? _p_contentFlowDirection : 'matchApplication';
165
+ const contentRtl = 'matchApplication' === direction ? appRtl : 'rightToLeft' === direction;
166
+ const width = Math.max(win.width * (null != (_p_widthRatio = p.widthRatio) ? _p_widthRatio : g9EdgePanelMetrics.defaultWidthRatio), 0);
167
+ const topGap = null != (_p_topGap = p.topGap) ? _p_topGap : g9EdgePanelMetrics.defaultTopGap;
168
+ const maxHeight = resolveEdgePanelMaxHeight(win.height, topGap, null != (_p_maxPanelHeight = p.maxPanelHeight) ? _p_maxPanelHeight : 0, null != (_p_maxPanelHeightRatio = p.maxPanelHeightRatio) ? _p_maxPanelHeightRatio : g9EdgePanelMetrics.defaultMaxPanelHeightRatio);
169
+ const shown = 'opening' === o.phase || 'open' === o.phase;
170
+ const cardRendered = 'closed' !== o.phase;
171
+ const hiddenOffset = (width + g9EdgePanelMetrics.collapsedExtraOffset) * (left ? -1 : 1);
172
+ const edge = left ? 'left' : 'right';
173
+ const far = left ? 'right' : 'left';
174
+ const useBackdrop = null != (_p_useBackdrop = p.useBackdrop) ? _p_useBackdrop : true;
175
+ const placement = null != (_p_closeButtonPlacement = p.closeButtonPlacement) ? _p_closeButtonPlacement : 'inset';
176
+ const closeStyle = 'onCorner' === placement ? {
177
+ top: `${topGap - g9EdgePanelMetrics.tabExpandedSize / 2}px`,
178
+ [edge]: `${width - g9EdgePanelMetrics.tabExpandedSize / 2}px`
179
+ } : {
180
+ top: `${topGap + g9EdgePanelMetrics.tabTopInset}px`,
181
+ [edge]: `${width - g9EdgePanelMetrics.tabTopInset - g9EdgePanelMetrics.tabExpandedSize}px`
182
+ };
183
+ const tabIcon = null != (_p_collapsedTabIcon = p.collapsedTabIcon) ? _p_collapsedTabIcon : left ? glyphs.chevronForward : glyphs.chevronBack;
184
+ return <view className="g9-edge-panel">
185
+ {useBackdrop && cardRendered ? <view className="g9-edge-panel__backdrop" style={{
186
+ opacity: shown ? 1 : 0,
187
+ transition: `opacity ${shown ? o.openMs : o.closeMs}ms ease-out`,
188
+ backgroundColor: `rgba(0, 0, 0, ${g9EdgePanelMetrics.backdropAlpha})`
189
+ }} bindtap={o.onBackdrop}/> : null}
190
+ {cardRendered ? <view className={`g9-edge-panel__card g9-edge-panel__card--${edge}`} style={{
191
+ [edge]: `${-g9EdgePanelMetrics.wallOverlap}px`,
192
+ top: `${topGap}px`,
193
+ width: `${width + g9EdgePanelMetrics.wallOverlap}px`,
194
+ maxHeight: `${maxHeight}px`,
195
+ backgroundColor: null != (_p_panelBackgroundColor = p.panelBackgroundColor) ? _p_panelBackgroundColor : 'var(--g9-surface-container-high)',
196
+ transform: `translateX(${shown ? 0 : hiddenOffset}px)`,
197
+ transition: 'entering' === o.phase ? 'none' : `transform ${shown ? o.openMs : o.closeMs}ms ${shown ? 'cubic-bezier(0.215, 0.61, 0.355, 1)' : 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'}`
198
+ }}>
199
+ <PanelBody o={o} contentRtl={contentRtl} closeOnFar={far}/>
200
+ </view> : null}
201
+ {cardRendered ? <view className={`g9-edge-panel__close g9-edge-panel__close--${placement}`} style={{
202
+ ...closeStyle,
203
+ opacity: shown ? 1 : 0,
204
+ transition: `opacity ${g9EdgePanelMetrics.tabEntranceDurationMs}ms ease-out`,
205
+ backgroundColor: null != (_p_tabBackgroundColor = p.tabBackgroundColor) ? _p_tabBackgroundColor : 'var(--g9-surface-container-highest)'
206
+ }} accessibility-element accessibility-traits="button" bindtap={o.onTab}>
207
+ <G9IconSlot icon={glyphs.clear} size={g9EdgePanelMetrics.tabIconSize} color="var(--g9-on-surface)"/>
208
+ </view> : p.showCollapsedTab ? <view className={`g9-edge-panel__tab g9-edge-panel__tab--${edge}`} style={{
209
+ [edge]: '0px',
210
+ top: `${topGap + g9EdgePanelMetrics.tabTopInset}px`,
211
+ backgroundColor: null != (_p_tabBackgroundColor1 = p.tabBackgroundColor) ? _p_tabBackgroundColor1 : 'var(--g9-surface-container-highest)'
212
+ }} accessibility-element accessibility-traits="button" bindtap={o.onTab}>
213
+ <G9IconSlot icon={tabIcon} size={g9EdgePanelMetrics.tabIconSize} color="var(--g9-on-surface)"/>
214
+ </view> : null}
215
+ </view>;
216
+ }
217
+ function headerText(header, resolve) {
218
+ var _resolve;
219
+ if (header.text) return header.text;
220
+ const key = header.localizationKey;
221
+ return null != (_resolve = resolve(key)) ? _resolve : key;
222
+ }
223
+ function PanelBody(props) {
224
+ var _p_menuHeader, _ref, _p_menuHeaderAlignment;
225
+ const { o, contentRtl } = props;
226
+ const p = o.props;
227
+ const strings = useG9Strings();
228
+ const diagnostics = useG9Diagnostics();
229
+ const glyphs = useG9Settings().glyphs;
230
+ const resolve = (key)=>strings.resolve(key);
231
+ const nav = o.navigator;
232
+ const frame = nav.frame;
233
+ const header = null != p.panelContent ? null != (_p_menuHeader = p.menuHeader) ? _p_menuHeader : null : null != (_ref = null == frame ? void 0 : frame.header) ? _ref : null;
234
+ const alignment = null != (_p_menuHeaderAlignment = p.menuHeaderAlignment) ? _p_menuHeaderAlignment : 'auto';
235
+ const textAlign = 'center' === alignment ? 'center' : 'leftToRight' === alignment ? 'left' : 'rightToLeft' === alignment ? 'right' : contentRtl ? 'right' : 'left';
236
+ const footprint = g9EdgePanelMetrics.tabExpandedSize + g9EdgePanelMetrics.tabTopInset;
237
+ const headerPadding = 'center' === alignment ? {
238
+ paddingLeft: `${footprint}px`,
239
+ paddingRight: `${footprint}px`
240
+ } : {
241
+ ['right' === props.closeOnFar ? 'paddingRight' : 'paddingLeft']: `${footprint}px`
242
+ };
243
+ const [entered, setEntered] = useState(true);
244
+ const version = o.navVersion;
245
+ useEffect(()=>{
246
+ if ('none' === nav.transition) return;
247
+ setEntered(false);
248
+ const t = startTimer(()=>setEntered(true), 16);
249
+ return ()=>stopTimer(t);
250
+ }, [
251
+ version
252
+ ]);
253
+ const sign = ('forward' === nav.transition ? 1 : -1) * (contentRtl ? -1 : 1);
254
+ const onRow = (item)=>{
255
+ if (false === item.isEnabled) return;
256
+ try {
257
+ var _item_onClick, _item_command;
258
+ null == (_item_onClick = item.onClick) || _item_onClick.call(item, item);
259
+ null == (_item_command = item.command) || _item_command.call(item, item.commandParameter);
260
+ } catch (error) {
261
+ diagnostics.log({
262
+ level: 'error',
263
+ message: 'G9EdgePanel: menu item handler failed.',
264
+ source: 'G9EdgePanel',
265
+ error
266
+ });
267
+ }
268
+ if (item.nextList && item.nextList.length > 0) {
269
+ var _item_subMenuHeader;
270
+ nav.navigateToSubList(item.nextList, null != (_item_subMenuHeader = item.subMenuHeader) ? _item_subMenuHeader : null);
271
+ o.onNavigate();
272
+ } else if (item.closeAfterClick) o.onClose();
273
+ };
274
+ const content = null != p.panelContent ? p.panelContent : frame ? <view key={`level-${version}`} className="g9-edge-panel__menu" style={{
275
+ transform: `translateX(${entered ? 0 : 24 * sign}px)`,
276
+ opacity: entered ? 1 : 0,
277
+ transition: entered ? `transform ${g9EdgePanelMetrics.menuTransitionDurationMs}ms ease-out, opacity ${g9EdgePanelMetrics.menuTransitionDurationMs}ms ease-out` : 'none'
278
+ }}>
279
+ {nav.isRoot ? null : <view className="g9-edge-panel__back" style={g9RowStyle(contentRtl ? 'rtl' : 'ltr')} accessibility-element accessibility-traits="button" bindtap={()=>{
280
+ nav.back();
281
+ o.onNavigate();
282
+ }}>
283
+ <G9IconSlot icon={contentRtl ? glyphs.chevronForward : glyphs.chevronBack} size={g9EdgePanelMetrics.menuItemIconSize} color="var(--g9-on-surface)"/>
284
+ <text className="g9-edge-panel__back-text">{strings.get(G9StringKey.Back)}</text>
285
+ </view>}
286
+ {frame.items.map((item, i)=>{
287
+ var _item_backgroundColor, _item_iconColor, _item_textColor, _item_text, _resolve;
288
+ return <view key={`${version}-${i}`} className="g9-edge-panel__row-wrap">
289
+ <view className={`g9-edge-panel__row${false === item.isEnabled ? ' g9-edge-panel__row--disabled' : ''}`} {...item.automationId ? {
290
+ id: item.automationId
291
+ } : {}} style={{
292
+ ...g9RowStyle(contentRtl ? 'rtl' : 'ltr'),
293
+ backgroundColor: null != (_item_backgroundColor = item.backgroundColor) ? _item_backgroundColor : 'transparent',
294
+ opacity: false === item.isEnabled ? 0.5 : 1
295
+ }} accessibility-element accessibility-traits="button" bindtap={false === item.isEnabled ? void 0 : ()=>onRow(item)}>
296
+ <G9IconSlot emoji={item.emoji} icon={item.icon} imagePath={item.imageSource} image={item.image} size={item.icon ? g9EdgePanelMetrics.menuItemIconSize : item.emoji ? g9EdgePanelMetrics.menuItemEmojiSize : g9EdgePanelMetrics.menuItemImageSize} color={null != (_item_iconColor = item.iconColor) ? _item_iconColor : 'var(--g9-on-surface-variant)'}/>
297
+ <text className="g9-edge-panel__row-text" text-maxline="1" style={{
298
+ color: null != (_item_textColor = item.textColor) ? _item_textColor : 'var(--g9-on-surface)',
299
+ ...g9TextStart(contentRtl ? 'rtl' : 'ltr')
300
+ }}>
301
+ {null != (_item_text = item.text) ? _item_text : item.localizedTextKey ? null != (_resolve = resolve(item.localizedTextKey)) ? _resolve : item.localizedTextKey : ''}
302
+ </text>
303
+ {item.nextList && item.nextList.length > 0 ? <G9IconSlot icon={contentRtl ? glyphs.chevronBack : glyphs.chevronForward} size={18} color="var(--g9-on-surface-variant)"/> : null}
304
+ </view>
305
+ {item.showDividerBelow ? <view className="g9-edge-panel__divider"/> : null}
306
+ </view>;
307
+ })}
308
+ </view> : null;
309
+ return <view className="g9-edge-panel__body" style={{
310
+ direction: contentRtl ? 'rtl' : 'ltr'
311
+ }}>
312
+ {!isEdgeMenuHeaderEmpty(header) ? <view className="g9-edge-panel__header" style={headerPadding}>
313
+ {null != header.view ? header.view : <text className="g9-edge-panel__title" style={{
314
+ textAlign
315
+ }}>
316
+ {headerText(header, resolve)}
317
+ </text>}
318
+ </view> : null}
319
+ <scroll-view className="g9-edge-panel__scroll" scroll-orientation="vertical">
320
+ {content}
321
+ </scroll-view>
322
+ </view>;
323
+ }
324
+ export { G9EdgePanel, createEdgePanelController, useEdgePanel };
325
+
326
+ //# sourceMappingURL=edge-panel.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-panel/edge-panel.jsx","sources":["../../src/edge-panel/edge-panel.tsx"],"sourcesContent":["import './edge-panel.css';\nimport { G9StringKey } from '@g9tm/lynxcontrols-foundation';\nimport { type ReactNode, useEffect, useMemo, useRef, useState } from '@lynx-js/react';\nimport { g9RowStyle, g9TextStart } from '../base/control';\nimport { startTimer, stopTimer } from '../base/timers';\nimport { useControllableState } from '../base/use-controllable-state';\nimport { useG9Back, useG9LayerItem } from '../host/hooks';\nimport type { G9IconInput } from '../icon/icon';\nimport { G9IconSlot } from '../icon/slot';\nimport {\n useG9Core,\n useG9Diagnostics,\n useG9Direction,\n useG9Settings,\n useG9Strings,\n useG9Window,\n} from '../provider/hooks';\nimport {\n type G9EdgeCloseButtonPlacement,\n type G9EdgeMenuHeader,\n type G9EdgeMenuHeaderAlignment,\n type G9EdgeMenuItem,\n G9EdgeMenuNavigator,\n type G9EdgePanelContentDirection,\n type G9EdgeSide,\n isEdgeMenuHeaderEmpty,\n g9EdgePanelMetrics as M,\n resolveEdgePanelMaxHeight,\n} from './types';\n\n/** Imperative handle of an edge panel (MAUI `G9EdgePanel` methods), from {@link useEdgePanel} or the helper. */\nexport interface G9EdgePanelController {\n open(): void;\n close(): void;\n toggle(): void;\n readonly isOpen: boolean;\n /** Closes an open panel and reports whether the press was consumed (MAUI `HandleHardwareBackPressed`). */\n handleHardwareBackPressed(): boolean;\n navigateToSubList(items: readonly G9EdgeMenuItem[], header?: G9EdgeMenuHeader | null): void;\n navigateToRoot(): void;\n refreshMenuItems(): void;\n /** `true` while a panel is mounted on this controller. */\n readonly isMounted: boolean;\n /** @internal set by the mounted panel */\n bind(target: G9EdgePanelTarget): () => void;\n}\n\ninterface G9EdgePanelTarget {\n setOpen(open: boolean): void;\n isOpen(): boolean;\n navigator: G9EdgeMenuNavigator;\n renderNav(): void;\n}\n\n/** Creates a controller outside React. */\nexport function createEdgePanelController(): G9EdgePanelController {\n let target: G9EdgePanelTarget | null = null;\n return {\n open: () => target?.setOpen(true),\n close: () => target?.setOpen(false),\n toggle: () => target?.setOpen(!target.isOpen()),\n get isOpen() {\n return target ? target.isOpen() : false;\n },\n get isMounted() {\n return target !== null;\n },\n handleHardwareBackPressed() {\n if (!target?.isOpen()) return false;\n target.setOpen(false);\n return true;\n },\n navigateToSubList(items, header = null) {\n if (!target) return;\n target.navigator.navigateToSubList(items, header);\n target.renderNav();\n },\n navigateToRoot() {\n if (!target) return;\n target.navigator.navigateToRoot();\n target.renderNav();\n },\n refreshMenuItems() {\n if (!target) return;\n target.navigator.refresh();\n target.renderNav();\n },\n bind(next) {\n target = next;\n return () => {\n if (target === next) target = null;\n };\n },\n };\n}\n\n/** A stable controller for a `G9EdgePanel`. */\nexport function useEdgePanel(): G9EdgePanelController {\n const ref = useRef<G9EdgePanelController | null>(null);\n if (ref.current === null) ref.current = createEdgePanelController();\n return ref.current;\n}\n\n/** Props of {@link G9EdgePanel} (MAUI bindable properties and events). */\nexport interface G9EdgePanelProps {\n /** Absolute edge (MAUI `Side`). Default `'left'`. */\n readonly side?: G9EdgeSide;\n /** Panel width as a share of the host width (MAUI `WidthRatio`). Default 0.35. */\n readonly widthRatio?: number;\n /** Distance from the top (MAUI `TopGap`). Default 112. */\n readonly topGap?: number;\n /** Absolute height cap; 0 = none (MAUI `MaxPanelHeight`). */\n readonly maxPanelHeight?: number;\n /** Height cap as a share of the host height (MAUI `MaxPanelHeightRatio`). Default 0.69. */\n readonly maxPanelHeightRatio?: number;\n /** Controlled open state (MAUI `IsOpen`, two-way). */\n readonly open?: boolean;\n readonly defaultOpen?: boolean;\n readonly onOpenChange?: (open: boolean) => void;\n /** Custom content (MAUI `PanelContent`); wins over `menuItems`. */\n readonly panelContent?: ReactNode;\n /** A navigable list menu (MAUI `MenuItems`). */\n readonly menuItems?: readonly G9EdgeMenuItem[] | null;\n readonly panelBackgroundColor?: string | null;\n readonly tabBackgroundColor?: string | null;\n /** Icon of the collapsed tab. Default: a chevron pointing into the screen. */\n readonly collapsedTabIcon?: G9IconInput;\n /** Sets both durations (MAUI `AnimationDuration`); the specific ones win. */\n readonly animationDuration?: number;\n /** Slide-in duration (MAUI `OpenAnimationDuration`). Default 450. */\n readonly openAnimationDuration?: number;\n /** Slide-out duration (MAUI `CloseAnimationDuration`). Default 450. */\n readonly closeAnimationDuration?: number;\n /** A backdrop tap closes the panel (needs `useBackdrop`). Default true. */\n readonly enableOutsideTapToClose?: boolean;\n /** Modal: a dimmed backdrop takes every tap outside the panel. Default true. Off = non-modal: only the panel and its tab take touches. */\n readonly useBackdrop?: boolean;\n /** Show the peek tab while closed. Default false. */\n readonly showCollapsedTab?: boolean;\n readonly contentFlowDirection?: G9EdgePanelContentDirection;\n readonly menuHeader?: G9EdgeMenuHeader | null;\n readonly menuHeaderAlignment?: G9EdgeMenuHeaderAlignment;\n readonly closeButtonPlacement?: G9EdgeCloseButtonPlacement;\n /** After the open slide (MAUI `Opened`). */\n readonly onOpened?: () => void;\n /** When the close slide starts (MAUI `Closing`). */\n readonly onClosing?: () => void;\n /** After the close slide (MAUI `Closed`). */\n readonly onClosed?: () => void;\n readonly controller?: G9EdgePanelController;\n}\n\nlet panelSequence = 0;\n\ntype Phase = 'closed' | 'entering' | 'opening' | 'open' | 'closing';\n\n/**\n * A panel that slides in from a screen edge (MAUI `G9EdgePanel`), mounted in the host's `edgePanel` layer whatever\n * its place in the tree. Modal by default (a dimmed backdrop that closes on tap); with `useBackdrop={false}` it is\n * non-modal: the page stays interactive and only the panel and its tab receive touches. Content is a custom view or a\n * list menu with nested levels (Back row, per-level header). Hardware back closes it.\n */\nexport function G9EdgePanel(props: G9EdgePanelProps): ReactNode {\n const keyRef = useRef<string | null>(null);\n if (keyRef.current === null) {\n panelSequence += 1;\n keyRef.current = `g9-edge-panel-${panelSequence}`;\n }\n const key = keyRef.current;\n const [isOpen, setOpen] = useControllableState<boolean>({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n name: 'G9EdgePanel.open',\n });\n const openMs = props.openAnimationDuration ?? props.animationDuration ?? M.defaultOpenAnimationDurationMs;\n const closeMs = props.closeAnimationDuration ?? props.animationDuration ?? M.defaultCloseAnimationDurationMs;\n const [phase, setPhase] = useState<Phase>(isOpen ? 'entering' : 'closed');\n const latest = useRef(props);\n latest.current = props;\n const openRef = useRef(isOpen);\n openRef.current = isOpen;\n\n useEffect(() => {\n if (isOpen) {\n setPhase((p) => (p === 'closed' ? 'entering' : 'opening'));\n const enter = startTimer(() => setPhase('opening'), 16);\n const done = startTimer(() => {\n setPhase('open');\n latest.current.onOpened?.();\n }, openMs + 16);\n return () => {\n stopTimer(enter);\n stopTimer(done);\n };\n }\n if (phase === 'closed') return;\n latest.current.onClosing?.();\n setPhase('closing');\n const done = startTimer(() => {\n setPhase('closed');\n latest.current.onClosed?.();\n }, closeMs);\n return () => stopTimer(done);\n }, [isOpen]);\n\n // List navigation: a new menuItems list or header resets to the root level.\n const navigator = useMemo(() => new G9EdgeMenuNavigator(), []);\n const [, setNavVersion] = useState(0);\n const renderNav = () => setNavVersion(navigator.version);\n const rootHeader = props.menuHeader ?? null;\n useMemo(() => navigator.setRoot(props.menuItems, rootHeader), [props.menuItems, rootHeader]);\n useEffect(\n () =>\n props.controller?.bind({\n setOpen: (open) => setOpen(open),\n isOpen: () => openRef.current,\n navigator,\n renderNav,\n }),\n [props.controller],\n );\n\n useG9Back(\n () => {\n setOpen(false);\n return true;\n },\n { enabled: isOpen, layer: 'edgePanel' },\n );\n\n // Shared debounce for tab and backdrop taps (MAUI InteractionDebounceMs: one physical tap can reach both).\n const core = useG9Core();\n const lastInteraction = useRef(Number.NEGATIVE_INFINITY);\n const accept = () => {\n const now = core.services.clock.monotonicNow();\n if (now - lastInteraction.current < M.interactionDebounceMs) return false;\n lastInteraction.current = now;\n return true;\n };\n const animating = phase === 'entering' || phase === 'opening' || phase === 'closing';\n const onTab = () => {\n if (animating || !accept()) return;\n setOpen(!openRef.current);\n };\n const useBackdrop = props.useBackdrop ?? true;\n const onBackdrop = () => {\n if (!accept()) return;\n if (useBackdrop && (props.enableOutsideTapToClose ?? true) && openRef.current) setOpen(false);\n };\n\n const overlay = (\n <EdgePanelOverlay\n props={props}\n phase={phase}\n openMs={openMs}\n closeMs={closeMs}\n navigator={navigator}\n navVersion={navigator.version}\n onTab={onTab}\n onBackdrop={onBackdrop}\n onNavigate={renderNav}\n onClose={() => setOpen(false)}\n />\n );\n const visible = phase !== 'closed' || props.showCollapsedTab === true;\n useG9LayerItem('edgePanel', key, overlay, { enabled: visible });\n return null;\n}\n\ninterface OverlayProps {\n readonly props: G9EdgePanelProps;\n readonly phase: Phase;\n readonly openMs: number;\n readonly closeMs: number;\n readonly navigator: G9EdgeMenuNavigator;\n readonly navVersion: number;\n readonly onTab: () => void;\n readonly onBackdrop: () => void;\n readonly onNavigate: () => void;\n readonly onClose: () => void;\n}\n\nfunction EdgePanelOverlay(o: OverlayProps): ReactNode {\n const p = o.props;\n const win = useG9Window();\n const appRtl = useG9Direction() === 'rtl';\n const glyphs = useG9Settings().glyphs;\n const left = (p.side ?? 'left') === 'left';\n const direction = p.contentFlowDirection ?? 'matchApplication';\n const contentRtl = direction === 'matchApplication' ? appRtl : direction === 'rightToLeft';\n const width = Math.max(win.width * (p.widthRatio ?? M.defaultWidthRatio), 0);\n const topGap = p.topGap ?? M.defaultTopGap;\n const maxHeight = resolveEdgePanelMaxHeight(\n win.height,\n topGap,\n p.maxPanelHeight ?? 0,\n p.maxPanelHeightRatio ?? M.defaultMaxPanelHeightRatio,\n );\n const shown = o.phase === 'opening' || o.phase === 'open';\n const cardRendered = o.phase !== 'closed';\n const hiddenOffset = (width + M.collapsedExtraOffset) * (left ? -1 : 1);\n const edge = left ? 'left' : 'right';\n const far = left ? 'right' : 'left';\n const useBackdrop = p.useBackdrop ?? true;\n const placement = p.closeButtonPlacement ?? 'inset';\n\n const closeStyle =\n placement === 'onCorner'\n ? { top: `${topGap - M.tabExpandedSize / 2}px`, [edge]: `${width - M.tabExpandedSize / 2}px` }\n : { top: `${topGap + M.tabTopInset}px`, [edge]: `${width - M.tabTopInset - M.tabExpandedSize}px` };\n const tabIcon = p.collapsedTabIcon ?? (left ? glyphs.chevronForward : glyphs.chevronBack);\n\n return (\n <view className=\"g9-edge-panel\">\n {useBackdrop && cardRendered ? (\n <view\n className=\"g9-edge-panel__backdrop\"\n style={{\n opacity: shown ? 1 : 0,\n transition: `opacity ${shown ? o.openMs : o.closeMs}ms ease-out`,\n backgroundColor: `rgba(0, 0, 0, ${M.backdropAlpha})`,\n }}\n bindtap={o.onBackdrop}\n />\n ) : null}\n {cardRendered ? (\n <view\n className={`g9-edge-panel__card g9-edge-panel__card--${edge}`}\n style={{\n [edge]: `${-M.wallOverlap}px`,\n top: `${topGap}px`,\n width: `${width + M.wallOverlap}px`,\n maxHeight: `${maxHeight}px`,\n backgroundColor: p.panelBackgroundColor ?? 'var(--g9-surface-container-high)',\n transform: `translateX(${shown ? 0 : hiddenOffset}px)`,\n transition:\n o.phase === 'entering'\n ? 'none'\n : `transform ${shown ? o.openMs : o.closeMs}ms ${shown ? 'cubic-bezier(0.215, 0.61, 0.355, 1)' : 'cubic-bezier(0.55, 0.055, 0.675, 0.19)'}`,\n }}\n >\n <PanelBody o={o} contentRtl={contentRtl} closeOnFar={far} />\n </view>\n ) : null}\n {cardRendered ? (\n <view\n className={`g9-edge-panel__close g9-edge-panel__close--${placement}`}\n style={{\n ...closeStyle,\n opacity: shown ? 1 : 0,\n transition: `opacity ${M.tabEntranceDurationMs}ms ease-out`,\n backgroundColor: p.tabBackgroundColor ?? 'var(--g9-surface-container-highest)',\n }}\n accessibility-element\n accessibility-traits=\"button\"\n bindtap={o.onTab}\n >\n <G9IconSlot icon={glyphs.clear} size={M.tabIconSize} color=\"var(--g9-on-surface)\" />\n </view>\n ) : p.showCollapsedTab ? (\n <view\n className={`g9-edge-panel__tab g9-edge-panel__tab--${edge}`}\n style={{\n [edge]: '0px',\n top: `${topGap + M.tabTopInset}px`,\n backgroundColor: p.tabBackgroundColor ?? 'var(--g9-surface-container-highest)',\n }}\n accessibility-element\n accessibility-traits=\"button\"\n bindtap={o.onTab}\n >\n <G9IconSlot icon={tabIcon} size={M.tabIconSize} color=\"var(--g9-on-surface)\" />\n </view>\n ) : null}\n </view>\n );\n}\n\nfunction headerText(header: G9EdgeMenuHeader, resolve: (key: string) => string | null): string {\n if (header.text) return header.text;\n const key = header.localizationKey as string;\n return resolve(key) ?? key;\n}\n\nfunction PanelBody(props: {\n readonly o: OverlayProps;\n readonly contentRtl: boolean;\n readonly closeOnFar: string;\n}): ReactNode {\n const { o, contentRtl } = props;\n const p = o.props;\n const strings = useG9Strings();\n const diagnostics = useG9Diagnostics();\n const glyphs = useG9Settings().glyphs;\n const resolve = (key: string) => strings.resolve(key);\n const nav = o.navigator;\n const frame = nav.frame;\n const header = p.panelContent != null ? (p.menuHeader ?? null) : (frame?.header ?? null);\n const alignment = p.menuHeaderAlignment ?? 'auto';\n const textAlign =\n alignment === 'center'\n ? 'center'\n : alignment === 'leftToRight'\n ? 'left'\n : alignment === 'rightToLeft'\n ? 'right'\n : contentRtl\n ? 'right'\n : 'left';\n const footprint = M.tabExpandedSize + M.tabTopInset;\n const headerPadding =\n alignment === 'center'\n ? { paddingLeft: `${footprint}px`, paddingRight: `${footprint}px` }\n : { [props.closeOnFar === 'right' ? 'paddingRight' : 'paddingLeft']: `${footprint}px` };\n\n // Directional entry of a new menu level (MAUI menu content slide, 220 ms).\n const [entered, setEntered] = useState(true);\n const version = o.navVersion;\n useEffect(() => {\n if (nav.transition === 'none') return;\n setEntered(false);\n const t = startTimer(() => setEntered(true), 16);\n return () => stopTimer(t);\n }, [version]);\n const sign = (nav.transition === 'forward' ? 1 : -1) * (contentRtl ? -1 : 1);\n\n const onRow = (item: G9EdgeMenuItem) => {\n if (item.isEnabled === false) return;\n try {\n item.onClick?.(item);\n item.command?.(item.commandParameter);\n } catch (error) {\n diagnostics.log({\n level: 'error',\n message: 'G9EdgePanel: menu item handler failed.',\n source: 'G9EdgePanel',\n error,\n });\n }\n if (item.nextList && item.nextList.length > 0) {\n nav.navigateToSubList(item.nextList, item.subMenuHeader ?? null);\n o.onNavigate();\n } else if (item.closeAfterClick) {\n o.onClose();\n }\n };\n\n const content =\n p.panelContent != null ? (\n p.panelContent\n ) : frame ? (\n <view\n key={`level-${version}`}\n className=\"g9-edge-panel__menu\"\n style={{\n transform: `translateX(${entered ? 0 : 24 * sign}px)`,\n opacity: entered ? 1 : 0,\n transition: entered\n ? `transform ${M.menuTransitionDurationMs}ms ease-out, opacity ${M.menuTransitionDurationMs}ms ease-out`\n : 'none',\n }}\n >\n {nav.isRoot ? null : (\n <view\n className=\"g9-edge-panel__back\"\n style={g9RowStyle(contentRtl ? 'rtl' : 'ltr')}\n accessibility-element\n accessibility-traits=\"button\"\n bindtap={() => {\n nav.back();\n o.onNavigate();\n }}\n >\n <G9IconSlot\n icon={contentRtl ? glyphs.chevronForward : glyphs.chevronBack}\n size={M.menuItemIconSize}\n color=\"var(--g9-on-surface)\"\n />\n <text className=\"g9-edge-panel__back-text\">{strings.get(G9StringKey.Back)}</text>\n </view>\n )}\n {frame.items.map((item, i) => (\n <view key={`${version}-${i}`} className=\"g9-edge-panel__row-wrap\">\n <view\n className={`g9-edge-panel__row${item.isEnabled === false ? ' g9-edge-panel__row--disabled' : ''}`}\n {...(item.automationId ? { id: item.automationId } : {})}\n style={{\n ...g9RowStyle(contentRtl ? 'rtl' : 'ltr'),\n backgroundColor: item.backgroundColor ?? 'transparent',\n opacity: item.isEnabled === false ? 0.5 : 1,\n }}\n accessibility-element\n accessibility-traits=\"button\"\n bindtap={item.isEnabled === false ? undefined : () => onRow(item)}\n >\n <G9IconSlot\n emoji={item.emoji}\n icon={item.icon}\n imagePath={item.imageSource}\n image={item.image}\n size={item.icon ? M.menuItemIconSize : item.emoji ? M.menuItemEmojiSize : M.menuItemImageSize}\n color={item.iconColor ?? 'var(--g9-on-surface-variant)'}\n />\n <text\n className=\"g9-edge-panel__row-text\"\n text-maxline=\"1\"\n style={{ color: item.textColor ?? 'var(--g9-on-surface)', ...g9TextStart(contentRtl ? 'rtl' : 'ltr') }}\n >\n {item.text ?? (item.localizedTextKey ? (resolve(item.localizedTextKey) ?? item.localizedTextKey) : '')}\n </text>\n {item.nextList && item.nextList.length > 0 ? (\n <G9IconSlot\n icon={contentRtl ? glyphs.chevronBack : glyphs.chevronForward}\n size={18}\n color=\"var(--g9-on-surface-variant)\"\n />\n ) : null}\n </view>\n {item.showDividerBelow ? <view className=\"g9-edge-panel__divider\" /> : null}\n </view>\n ))}\n </view>\n ) : null;\n\n return (\n <view className=\"g9-edge-panel__body\" style={{ direction: contentRtl ? 'rtl' : 'ltr' }}>\n {!isEdgeMenuHeaderEmpty(header) ? (\n <view className=\"g9-edge-panel__header\" style={headerPadding}>\n {(header as G9EdgeMenuHeader).view != null ? (\n (header as G9EdgeMenuHeader).view\n ) : (\n <text className=\"g9-edge-panel__title\" style={{ textAlign }}>\n {headerText(header as G9EdgeMenuHeader, resolve)}\n </text>\n )}\n </view>\n ) : null}\n <scroll-view className=\"g9-edge-panel__scroll\" scroll-orientation=\"vertical\">\n {content}\n </scroll-view>\n </view>\n );\n}\n"],"names":["createEdgePanelController","target","items","header","next","useEdgePanel","ref","useRef","panelSequence","G9EdgePanel","props","_props_defaultOpen","_ref","_ref1","_props_menuHeader","_props_useBackdrop","keyRef","key","isOpen","setOpen","useControllableState","openMs","M","closeMs","phase","setPhase","useState","latest","openRef","useEffect","_latest_current","p","enter","startTimer","done","stopTimer","navigator","useMemo","G9EdgeMenuNavigator","setNavVersion","renderNav","rootHeader","_props_controller","open","useG9Back","core","useG9Core","lastInteraction","Number","accept","now","animating","onTab","useBackdrop","onBackdrop","_props_enableOutsideTapToClose","overlay","EdgePanelOverlay","visible","useG9LayerItem","o","_p_side","_p_contentFlowDirection","_p_widthRatio","_p_topGap","_p_maxPanelHeight","_p_maxPanelHeightRatio","_p_useBackdrop","_p_closeButtonPlacement","_p_collapsedTabIcon","_p_panelBackgroundColor","_p_tabBackgroundColor","_p_tabBackgroundColor1","win","useG9Window","appRtl","useG9Direction","glyphs","useG9Settings","left","direction","contentRtl","width","Math","topGap","maxHeight","resolveEdgePanelMaxHeight","shown","cardRendered","hiddenOffset","edge","far","placement","closeStyle","tabIcon","view","PanelBody","G9IconSlot","headerText","resolve","_resolve","_p_menuHeader","_p_menuHeaderAlignment","strings","useG9Strings","diagnostics","useG9Diagnostics","nav","frame","alignment","textAlign","footprint","headerPadding","entered","setEntered","version","t","sign","onRow","item","error","_item_subMenuHeader","content","g9RowStyle","text","G9StringKey","i","_item_backgroundColor","_item_iconColor","_item_textColor","_item_text","undefined","g9TextStart","isEdgeMenuHeaderEmpty","scroll-view"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import './edge-panel.css';
2
+ import { type ReactNode } from '@lynx-js/react';
3
+ import { type G9HostHandle } from '../host/registry.js';
4
+ import { type G9EdgePanelController, type G9EdgePanelProps } from './edge-panel.js';
5
+ import { type G9EdgeMenuItem, type G9EdgePanelOptions } from './types.js';
6
+ /** The helper-managed panel service of a host (MAUI `G9EdgePanelHelper`). One helper panel at a time. */
7
+ export interface G9EdgePanelService {
8
+ /** Attaches a panel with custom content; only the peek tab shows unless `autoOpen` (MAUI `ShowCustomView`). */
9
+ showCustomView(content: ReactNode, options?: G9EdgePanelOptions): G9EdgePanelController;
10
+ /** Attaches a panel with a navigable list menu (MAUI `ShowListMenu`). */
11
+ showListMenu(items: readonly G9EdgeMenuItem[], options?: G9EdgePanelOptions): G9EdgePanelController;
12
+ /** Slides the active panel closed, then removes it (MAUI `Dismiss`). */
13
+ dismiss(): void;
14
+ /** The active helper panel, or `null` (MAUI `ActivePanel`). */
15
+ readonly activePanel: G9EdgePanelController | null;
16
+ /** Closes an open, mounted helper panel; `true` when the press was consumed (MAUI `HandleHardwareBackPressed`). */
17
+ handleHardwareBackPressed(): boolean;
18
+ }
19
+ /** Maps helper options onto panel props (MAUI `CreatePanel`): unset options keep the panel defaults. */
20
+ export declare function edgePanelPropsFromOptions(options?: G9EdgePanelOptions): G9EdgePanelProps;
21
+ /** The helper panel service of a host (created once as a host feature). */
22
+ export declare function edgePanelServiceOf(host: G9HostHandle): G9EdgePanelService;
23
+ /** The helper panels of the nearest `G9Host`. */
24
+ export declare function useG9EdgePanels(): G9EdgePanelService;
25
+ /** The helper panels of the active host, for code outside components. Throws `host-missing` without a host. */
26
+ export declare function g9EdgePanels(): G9EdgePanelService;
27
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/edge-panel/helper.tsx"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,gBAAgB,CAAC;AAGtE,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAsB,MAAM,SAAS,CAAC;AAE3F,yGAAyG;AACzG,MAAM,WAAW,kBAAkB;IACjC,+GAA+G;IAC/G,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;IACxF,yEAAyE;IACzE,YAAY,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;IACpG,wEAAwE;IACxE,OAAO,IAAI,IAAI,CAAC;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACnD,mHAAmH;IACnH,yBAAyB,IAAI,OAAO,CAAC;CACtC;AAiBD,wGAAwG;AACxG,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,kBAAuB,GAAG,gBAAgB,CA2B5F;AAuDD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,kBAAkB,CAGzE;AAED,iDAAiD;AACjD,wBAAgB,eAAe,IAAI,kBAAkB,CAEpD;AAED,+GAA+G;AAC/G,wBAAgB,YAAY,IAAI,kBAAkB,CAEjD"}
@@ -0,0 +1,118 @@
1
+ import "./edge-panel.css";
2
+ import { useSyncExternalStore } from "@lynx-js/react";
3
+ import { startTimer } from "../base/timers.jsx";
4
+ import { useG9Host } from "../host/hooks.jsx";
5
+ import { g9Hosts } from "../host/registry.jsx";
6
+ import { G9EdgePanel, createEdgePanelController } from "./edge-panel.jsx";
7
+ import { g9EdgePanelMetrics } from "./types.jsx";
8
+ const FEATURE = 'g9.edgePanels';
9
+ function edgePanelPropsFromOptions(options = {}) {
10
+ var _o_showCollapsedTab, _o_autoOpen;
11
+ const o = options;
12
+ const out = {
13
+ showCollapsedTab: null != (_o_showCollapsedTab = o.showCollapsedTab) ? _o_showCollapsedTab : true,
14
+ defaultOpen: null != (_o_autoOpen = o.autoOpen) ? _o_autoOpen : false
15
+ };
16
+ const copy = [
17
+ 'side',
18
+ 'widthRatio',
19
+ 'topGap',
20
+ 'maxPanelHeight',
21
+ 'maxPanelHeightRatio',
22
+ 'animationDuration',
23
+ 'openAnimationDuration',
24
+ 'closeAnimationDuration',
25
+ 'enableOutsideTapToClose',
26
+ 'useBackdrop',
27
+ 'panelBackgroundColor',
28
+ 'tabBackgroundColor',
29
+ 'contentFlowDirection',
30
+ 'menuHeader',
31
+ 'menuHeaderAlignment',
32
+ 'collapsedTabIcon',
33
+ 'closeButtonPlacement'
34
+ ];
35
+ for (const key of copy)if (void 0 !== o[key] && null !== o[key]) out[key] = o[key];
36
+ return out;
37
+ }
38
+ function HelperLayer(props) {
39
+ const active = useSyncExternalStore((listener)=>{
40
+ props.state.listeners.add(listener);
41
+ return ()=>props.state.listeners.delete(listener);
42
+ }, ()=>props.state.active);
43
+ if (!active) return null;
44
+ return <G9EdgePanel key={active.id} {...active.props} controller={active.controller}/>;
45
+ }
46
+ function createService(host) {
47
+ const state = {
48
+ active: null,
49
+ sequence: 0,
50
+ listeners: new Set(),
51
+ service: null
52
+ };
53
+ const publish = (active)=>{
54
+ state.active = active;
55
+ for (const listener of Array.from(state.listeners))listener();
56
+ };
57
+ const attach = (props)=>{
58
+ state.sequence += 1;
59
+ const controller = createEdgePanelController();
60
+ publish({
61
+ id: state.sequence,
62
+ controller,
63
+ props
64
+ });
65
+ return controller;
66
+ };
67
+ state.service = {
68
+ showCustomView: (content, options)=>attach({
69
+ ...edgePanelPropsFromOptions(options),
70
+ panelContent: content
71
+ }),
72
+ showListMenu: (items, options)=>attach({
73
+ ...edgePanelPropsFromOptions(options),
74
+ menuItems: items
75
+ }),
76
+ dismiss () {
77
+ var _ref, _active_props_closeAnimationDuration;
78
+ const active = state.active;
79
+ if (!active) return;
80
+ active.controller.close();
81
+ const close = null != (_ref = null != (_active_props_closeAnimationDuration = active.props.closeAnimationDuration) ? _active_props_closeAnimationDuration : active.props.animationDuration) ? _ref : g9EdgePanelMetrics.defaultCloseAnimationDurationMs;
82
+ startTimer(()=>{
83
+ if (state.active === active) publish(null);
84
+ }, close);
85
+ },
86
+ get activePanel () {
87
+ var _ref;
88
+ var _state_active;
89
+ return null != (_ref = null == (_state_active = state.active) ? void 0 : _state_active.controller) ? _ref : null;
90
+ },
91
+ handleHardwareBackPressed () {
92
+ var _state_active;
93
+ const controller = null == (_state_active = state.active) ? void 0 : _state_active.controller;
94
+ if (!(null == controller ? void 0 : controller.isMounted) || host.released) return false;
95
+ return controller.handleHardwareBackPressed();
96
+ }
97
+ };
98
+ host.attachFeature(FEATURE, state);
99
+ host.registerLayerItem('edgePanel', {
100
+ key: FEATURE,
101
+ element: <HelperLayer state={state}/>,
102
+ order: 1
103
+ });
104
+ return state;
105
+ }
106
+ function edgePanelServiceOf(host) {
107
+ const existing = host.getFeature(FEATURE);
108
+ return (null != existing ? existing : createService(host)).service;
109
+ }
110
+ function useG9EdgePanels() {
111
+ return edgePanelServiceOf(useG9Host());
112
+ }
113
+ function g9EdgePanels() {
114
+ return edgePanelServiceOf(g9Hosts.require());
115
+ }
116
+ export { edgePanelPropsFromOptions, edgePanelServiceOf, g9EdgePanels, useG9EdgePanels };
117
+
118
+ //# sourceMappingURL=helper.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge-panel/helper.jsx","sources":["../../src/edge-panel/helper.tsx"],"sourcesContent":["import './edge-panel.css';\nimport { type ReactNode, useSyncExternalStore } from '@lynx-js/react';\nimport { startTimer } from '../base/timers';\nimport { useG9Host } from '../host/hooks';\nimport { type G9HostHandle, g9Hosts } from '../host/registry';\nimport {\n createEdgePanelController,\n G9EdgePanel,\n type G9EdgePanelController,\n type G9EdgePanelProps,\n} from './edge-panel';\nimport { type G9EdgeMenuItem, type G9EdgePanelOptions, g9EdgePanelMetrics } from './types';\n\n/** The helper-managed panel service of a host (MAUI `G9EdgePanelHelper`). One helper panel at a time. */\nexport interface G9EdgePanelService {\n /** Attaches a panel with custom content; only the peek tab shows unless `autoOpen` (MAUI `ShowCustomView`). */\n showCustomView(content: ReactNode, options?: G9EdgePanelOptions): G9EdgePanelController;\n /** Attaches a panel with a navigable list menu (MAUI `ShowListMenu`). */\n showListMenu(items: readonly G9EdgeMenuItem[], options?: G9EdgePanelOptions): G9EdgePanelController;\n /** Slides the active panel closed, then removes it (MAUI `Dismiss`). */\n dismiss(): void;\n /** The active helper panel, or `null` (MAUI `ActivePanel`). */\n readonly activePanel: G9EdgePanelController | null;\n /** Closes an open, mounted helper panel; `true` when the press was consumed (MAUI `HandleHardwareBackPressed`). */\n handleHardwareBackPressed(): boolean;\n}\n\ninterface Active {\n readonly id: number;\n readonly controller: G9EdgePanelController;\n readonly props: G9EdgePanelProps;\n}\n\ninterface State {\n active: Active | null;\n sequence: number;\n readonly listeners: Set<() => void>;\n service: G9EdgePanelService;\n}\n\nconst FEATURE = 'g9.edgePanels';\n\n/** Maps helper options onto panel props (MAUI `CreatePanel`): unset options keep the panel defaults. */\nexport function edgePanelPropsFromOptions(options: G9EdgePanelOptions = {}): G9EdgePanelProps {\n const o = options;\n const out: Record<string, unknown> = {\n showCollapsedTab: o.showCollapsedTab ?? true,\n defaultOpen: o.autoOpen ?? false,\n };\n const copy: Array<keyof G9EdgePanelOptions & keyof G9EdgePanelProps> = [\n 'side',\n 'widthRatio',\n 'topGap',\n 'maxPanelHeight',\n 'maxPanelHeightRatio',\n 'animationDuration',\n 'openAnimationDuration',\n 'closeAnimationDuration',\n 'enableOutsideTapToClose',\n 'useBackdrop',\n 'panelBackgroundColor',\n 'tabBackgroundColor',\n 'contentFlowDirection',\n 'menuHeader',\n 'menuHeaderAlignment',\n 'collapsedTabIcon',\n 'closeButtonPlacement',\n ];\n for (const key of copy) if (o[key] !== undefined && o[key] !== null) out[key] = o[key];\n return out as G9EdgePanelProps;\n}\n\nfunction HelperLayer(props: { readonly state: State }): ReactNode {\n const active = useSyncExternalStore(\n (listener) => {\n props.state.listeners.add(listener);\n return () => props.state.listeners.delete(listener);\n },\n () => props.state.active,\n );\n if (!active) return null;\n return <G9EdgePanel key={active.id} {...active.props} controller={active.controller} />;\n}\n\nfunction createService(host: G9HostHandle): State {\n const state: State = { active: null, sequence: 0, listeners: new Set(), service: null as never };\n const publish = (active: Active | null) => {\n state.active = active;\n for (const listener of Array.from(state.listeners)) listener();\n };\n const attach = (props: G9EdgePanelProps): G9EdgePanelController => {\n state.sequence += 1;\n const controller = createEdgePanelController();\n publish({ id: state.sequence, controller, props });\n return controller;\n };\n state.service = {\n showCustomView: (content, options) => attach({ ...edgePanelPropsFromOptions(options), panelContent: content }),\n showListMenu: (items, options) => attach({ ...edgePanelPropsFromOptions(options), menuItems: items }),\n dismiss() {\n const active = state.active;\n if (!active) return;\n active.controller.close();\n const close =\n active.props.closeAnimationDuration ??\n active.props.animationDuration ??\n g9EdgePanelMetrics.defaultCloseAnimationDurationMs;\n startTimer(() => {\n if (state.active === active) publish(null);\n }, close);\n },\n get activePanel() {\n return state.active?.controller ?? null;\n },\n handleHardwareBackPressed() {\n const controller = state.active?.controller;\n if (!controller?.isMounted || host.released) return false;\n return controller.handleHardwareBackPressed();\n },\n };\n host.attachFeature(FEATURE, state);\n host.registerLayerItem('edgePanel', { key: FEATURE, element: <HelperLayer state={state} />, order: 1 });\n return state;\n}\n\n/** The helper panel service of a host (created once as a host feature). */\nexport function edgePanelServiceOf(host: G9HostHandle): G9EdgePanelService {\n const existing = host.getFeature(FEATURE) as State | undefined;\n return (existing ?? createService(host)).service;\n}\n\n/** The helper panels of the nearest `G9Host`. */\nexport function useG9EdgePanels(): G9EdgePanelService {\n return edgePanelServiceOf(useG9Host());\n}\n\n/** The helper panels of the active host, for code outside components. Throws `host-missing` without a host. */\nexport function g9EdgePanels(): G9EdgePanelService {\n return edgePanelServiceOf(g9Hosts.require());\n}\n"],"names":["FEATURE","edgePanelPropsFromOptions","options","_o_showCollapsedTab","_o_autoOpen","o","out","copy","key","undefined","HelperLayer","props","active","useSyncExternalStore","listener","G9EdgePanel","createService","host","state","Set","publish","Array","attach","controller","createEdgePanelController","content","items","_ref","close","g9EdgePanelMetrics","startTimer","_state_active","edgePanelServiceOf","existing","useG9EdgePanels","useG9Host","g9EdgePanels","g9Hosts"],"mappings":";;;;;;;AAwCA,MAAMA,UAAU;AAGT,SAASC,0BAA0BC,UAA8B,CAAC,CAAC;QAGpDC,qBACLC;IAHf,MAAMC,IAAIH;IACV,MAAMI,MAA+B;QACnC,kBAAkB,QAAAH,CAAAA,sBAAAA,EAAE,gBAAgB,AAAD,IAAjBA,sBAAsB;QACxC,aAAa,QAAAC,CAAAA,cAAAA,EAAE,QAAQ,AAAD,IAATA,cAAc;IAC7B;IACA,MAAMG,OAAiE;QACrE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD;IACD,KAAK,MAAMC,OAAOD,KAAM,IAAIF,AAAWI,WAAXJ,CAAC,CAACG,IAAI,IAAkBH,AAAW,SAAXA,CAAC,CAACG,IAAI,EAAWF,GAAG,CAACE,IAAI,GAAGH,CAAC,CAACG,IAAI;IACtF,OAAOF;AACT;AAEA,SAASI,YAAYC,KAAgC;IACnD,MAAMC,SAASC,qBACb,CAACC;QACCH,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAACG;QAC1B,OAAO,IAAMH,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAACG;IAC5C,GACA,IAAMH,MAAM,KAAK,CAAC,MAAM;IAE1B,IAAI,CAACC,QAAQ,OAAO;IACpB,QAAQG,YAAY,KAAKH,OAAO,EAAE,GAAG,GAAGA,OAAO,KAAK,EAAE,YAAYA,OAAO,UAAU;AACrF;AAEA,SAASI,cAAcC,IAAkB;IACvC,MAAMC,QAAe;QAAE,QAAQ;QAAM,UAAU;QAAG,WAAW,IAAIC;QAAO,SAAS;IAAc;IAC/F,MAAMC,UAAU,CAACR;QACfM,MAAM,MAAM,GAAGN;QACf,KAAK,MAAME,YAAYO,MAAM,IAAI,CAACH,MAAM,SAAS,EAAGJ;IACtD;IACA,MAAMQ,SAAS,CAACX;QACdO,MAAM,QAAQ,IAAI;QAClB,MAAMK,aAAaC;QACnBJ,QAAQ;YAAE,IAAIF,MAAM,QAAQ;YAAEK;YAAYZ;QAAM;QAChD,OAAOY;IACT;IACAL,MAAM,OAAO,GAAG;QACd,gBAAgB,CAACO,SAASvB,UAAYoB,OAAO;gBAAE,GAAGrB,0BAA0BC,QAAQ;gBAAE,cAAcuB;YAAQ;QAC5G,cAAc,CAACC,OAAOxB,UAAYoB,OAAO;gBAAE,GAAGrB,0BAA0BC,QAAQ;gBAAE,WAAWwB;YAAM;QACnG;gBAKIC,MAAAA;YAJF,MAAMf,SAASM,MAAM,MAAM;YAC3B,IAAI,CAACN,QAAQ;YACbA,OAAO,UAAU,CAAC,KAAK;YACvB,MAAMgB,QAAAA,QACJD,CAAAA,OAAAA,QAAAA,CAAAA,uCAAAA,OAAO,KAAK,CAAC,sBAAsB,AAAD,IAAlCA,uCACAf,OAAO,KAAK,CAAC,iBAAiB,AAAD,IAD7Be,OAEAE,mBAAmB,+BAA+B;YACpDC,WAAW;gBACT,IAAIZ,MAAM,MAAM,KAAKN,QAAQQ,QAAQ;YACvC,GAAGQ;QACL;QACA,IAAI;;gBACKG;YAAP,OAAO,QAAP,gBAAOA,CAAAA,gBAAAA,MAAM,MAAM,AAAD,IAAXA,KAAAA,IAAAA,cAAc,UAAU,AAAD,IAAC,OAAI;QACrC;QACA;gBACqBA;YAAnB,MAAMR,aAAa,QAAAQ,CAAAA,gBAAAA,MAAM,MAAM,AAAD,IAAXA,KAAAA,IAAAA,cAAc,UAAU;YAC3C,IAAI,CAACR,CAAAA,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,SAAS,AAAD,KAAKN,KAAK,QAAQ,EAAE,OAAO;YACpD,OAAOM,WAAW,yBAAyB;QAC7C;IACF;IACAN,KAAK,aAAa,CAACjB,SAASkB;IAC5BD,KAAK,iBAAiB,CAAC,aAAa;QAAE,KAAKjB;QAAS,UAAUU,YAAY,OAAOQ;QAAW,OAAO;IAAE;IACrG,OAAOA;AACT;AAGO,SAASc,mBAAmBf,IAAkB;IACnD,MAAMgB,WAAWhB,KAAK,UAAU,CAACjB;IACjC,OAAO,AAACiC,CAAAA,QAAAA,WAAAA,WAAYjB,cAAcC,KAAI,EAAG,OAAO;AAClD;AAGO,SAASiB;IACd,OAAOF,mBAAmBG;AAC5B;AAGO,SAASC;IACd,OAAOJ,mBAAmBK,QAAQ,OAAO;AAC3C"}
@@ -0,0 +1,4 @@
1
+ export { createEdgePanelController, G9EdgePanel, type G9EdgePanelController, type G9EdgePanelProps, useEdgePanel, } from './edge-panel.js';
2
+ export { edgePanelPropsFromOptions, edgePanelServiceOf, type G9EdgePanelService, g9EdgePanels, useG9EdgePanels, } from './helper.js';
3
+ export { type G9EdgeCloseButtonPlacement, type G9EdgeMenuFrame, type G9EdgeMenuHeader, type G9EdgeMenuHeaderAlignment, type G9EdgeMenuItem, G9EdgeMenuNavigator, type G9EdgeMenuTransition, type G9EdgePanelContentDirection, type G9EdgePanelOptions, type G9EdgeSide, g9EdgeMenuHeader, g9EdgeMenuItem, g9EdgePanelMetrics, isEdgeMenuHeaderEmpty, resolveEdgePanelMaxHeight, } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/edge-panel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,YAAY,EACZ,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,cAAc,EACnB,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { G9EdgePanel, createEdgePanelController, useEdgePanel } from "./edge-panel.jsx";
2
+ export { edgePanelPropsFromOptions, edgePanelServiceOf, g9EdgePanels, useG9EdgePanels } from "./helper.jsx";
3
+ export { G9EdgeMenuNavigator, g9EdgeMenuHeader, g9EdgeMenuItem, g9EdgePanelMetrics, isEdgeMenuHeaderEmpty, resolveEdgePanelMaxHeight } from "./types.jsx";