@marimo-team/islands 0.15.2 → 0.15.3

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 (189) hide show
  1. package/dist/{ConnectedDataExplorerComponent-C39nQwtD.js → ConnectedDataExplorerComponent-DfvW3rBn.js} +323 -328
  2. package/dist/{ImageComparisonComponent-BhkiyswP.js → ImageComparisonComponent-XaJshw7d.js} +13 -13
  3. package/dist/{_baseUniq-DdHL34FO.js → _baseUniq-dN9WKF9m.js} +67 -67
  4. package/dist/any-language-editor-CpFniVi-.js +27 -0
  5. package/dist/{arc-BXrety1g.js → arc-BOhn-m2C.js} +1 -1
  6. package/dist/{architectureDiagram-KFL7JDKH-BMy6ywCF.js → architectureDiagram-W76B3OCA-Bpg85ZKv.js} +144 -144
  7. package/dist/assets/{worker-COGufAQn.js → worker-Y-Q4G-N2.js} +30 -26
  8. package/dist/asterisk-DS281yxp.js +271 -0
  9. package/dist/{blockDiagram-ZYB65J3Q-DYT2-nlI.js → blockDiagram-QIGZ2CNN-DS1kOHlW.js} +10 -10
  10. package/dist/{c4Diagram-AAMF2YG6-ZiQzioe6.js → c4Diagram-FPNF74CW-CyRVKssw.js} +8 -8
  11. package/dist/{channel-CeuXqUAU.js → channel-BilGXox7.js} +1 -1
  12. package/dist/{chunk-ANTBXLJU-BvYnIrdq.js → chunk-4BX2VUAB-CZR39zCO.js} +1 -1
  13. package/dist/{chunk-WVR4S24B-DXj8yaUk.js → chunk-55IACEB6-BIH-MYov.js} +1 -1
  14. package/dist/{chunk-GLLZNHP4-CyFsosAe.js → chunk-FMBD7UC4-4PZXFZE8.js} +1 -1
  15. package/dist/{chunk-JBRWN2VN-DA_EEhy2.js → chunk-K7UQS3LO-CEvWKznk.js} +117 -117
  16. package/dist/{chunk-NRVI72HA-BYx2jMlI.js → chunk-QN33PNHL-D5LO5Jq_.js} +1 -1
  17. package/dist/{chunk-FHKO5MBM-DfCztBk8.js → chunk-QZHKN3VN-6gwUonWI.js} +1 -1
  18. package/dist/{chunk-LXBSTHXV-Se7vdY6J.js → chunk-TVAH2DTR-3gm06QdU.js} +7 -7
  19. package/dist/{chunk-OMD6QJNC-CqgcPMgL.js → chunk-TZMSLE5B-Cm8Iy9bO.js} +1 -1
  20. package/dist/{classDiagram-v2-QTMF73CY-B19A3G1l.js → classDiagram-KNZD7YFC-DC529O_z.js} +2 -2
  21. package/dist/{classDiagram-3BZAVTQC-B19A3G1l.js → classDiagram-v2-RKCZMP56-DC529O_z.js} +2 -2
  22. package/dist/{clone-78au0tn1.js → clone-CLoRX3j6.js} +1 -1
  23. package/dist/cose-bilkent-S5V4N54A-qf5DlS6Y.js +2609 -0
  24. package/dist/{cytoscape.esm-BYnVVhJX.js → cytoscape.esm-DfdJODL8.js} +34 -34
  25. package/dist/{dagre-2BBEFEWP-BfEn3ZUV.js → dagre-5GWH7T2D-Ceocls0m.js} +6 -6
  26. package/dist/{data-grid-overlay-editor-CH_qLkV2.js → data-grid-overlay-editor-AqDS_UKe.js} +11 -11
  27. package/dist/{diagram-4IRLE6MV-CL8xidnG.js → diagram-N5W7TBWH-CP66oSiv.js} +59 -60
  28. package/dist/{diagram-RP2FKANI-B1BPcUew.js → diagram-QEK2KX5R-_YD4kxxi.js} +15 -15
  29. package/dist/{diagram-GUPCWM2R-CZ5cfqlq.js → diagram-S2PKOQOG-Cnj8T-OP.js} +10 -10
  30. package/dist/dockerfile-Cm8cRYCN.js +194 -0
  31. package/dist/ebnf-DUPDuY4r.js +78 -0
  32. package/dist/{erDiagram-HZWUO2LU-BEAIww50.js → erDiagram-AWTI2OKA-CGnvoHx6.js} +8 -8
  33. package/dist/fcl-CPC2WYrI.js +103 -0
  34. package/dist/{flowDiagram-THRYKUMA-Czs2UAI2.js → flowDiagram-PVAE7QVJ-DG-pr9R9.js} +9 -9
  35. package/dist/{ganttDiagram-WV7ZQ7D5-ByYIAVFO.js → ganttDiagram-OWAHRB6G-JmChtxvn.js} +34 -34
  36. package/dist/{gitGraphDiagram-OJR772UL-BcpDsiyB.js → gitGraphDiagram-NY62KEGX-D8wLfOPd.js} +4 -4
  37. package/dist/{glide-data-editor-CmN6FVyi.js → glide-data-editor-9nC3iCIZ.js} +33 -33
  38. package/dist/{graph-77W6heli.js → graph-CoRe7vAN.js} +3 -3
  39. package/dist/http-D9LttvKF.js +44 -0
  40. package/dist/{index-Bfk9dnyS.js → index-6qYeHHjQ.js} +33090 -32892
  41. package/dist/{index-BOojn38D.js → index-BpzLh4Qe.js} +7711 -7711
  42. package/dist/{index-CmozKMxx.js → index-BthgsgYX.js} +6 -6
  43. package/dist/{index-pBmAzQJl.js → index-MCx5v1x0.js} +2 -2
  44. package/dist/index-jkm77Jrz.js +98 -0
  45. package/dist/{infoDiagram-6WOFNB3A-CfzLHHVP.js → infoDiagram-STP46IZ2-BlXxvOrR.js} +2 -2
  46. package/dist/{journeyDiagram-FFXJYRFH-ndAcpkGn.js → journeyDiagram-BIP6EPQ6-CNRYs_Fc.js} +24 -26
  47. package/dist/{kanban-definition-KOZQBZVT-DcQYzNvc.js → kanban-definition-6OIFK2YF-B9HeMAuP.js} +14 -14
  48. package/dist/{layout-XySVHJgD.js → layout-m2vOUiW1.js} +81 -81
  49. package/dist/{linear-PbooOqg7.js → linear-DU6Q5CX3.js} +35 -35
  50. package/dist/{main-B5yML0bw.js → main-BD2KGFpU.js} +74594 -68034
  51. package/dist/main.js +1 -1
  52. package/dist/{mermaid-Cg5IX6Nv.js → mermaid-HVCtvbyx.js} +6160 -7493
  53. package/dist/min-DcGMA4e_.js +80 -0
  54. package/dist/mindmap-definition-Q6HEUPPD-BW8UmIDQ.js +785 -0
  55. package/dist/nginx-zDPm3Z74.js +89 -0
  56. package/dist/{number-overlay-editor-DUhfZqtP.js → number-overlay-editor-D8Hl0Syo.js} +19 -19
  57. package/dist/{pieDiagram-DBDJKBY4-DTOlNsja.js → pieDiagram-ADFJNKIX-Bg-3zg5U.js} +17 -17
  58. package/dist/{quadrantDiagram-YPSRARAO-BX2d8VS-.js → quadrantDiagram-LMRXKWRM-BO4IG6Yz.js} +6 -6
  59. package/dist/{react-plotly-Dcyw-3Sa.js → react-plotly-dkvHVuRb.js} +3577 -3577
  60. package/dist/{requirementDiagram-EGVEC5DT-D1T5u-wG.js → requirementDiagram-4UW4RH46-5sdTguSM.js} +7 -7
  61. package/dist/{sankeyDiagram-HRAUVNP4-G6xDfnp-.js → sankeyDiagram-GR3RE2ED-Buhlv9OI.js} +5 -5
  62. package/dist/sequenceDiagram-C3RYC4MD-C3qsM2UP.js +2519 -0
  63. package/dist/{slides-component-BJLlPJSr.js → slides-component-D209A0-s.js} +66 -66
  64. package/dist/solr-BNlsLglM.js +41 -0
  65. package/dist/spreadsheet-C-cy4P5N.js +49 -0
  66. package/dist/{stateDiagram-UUKSUZ4H-CYXbjaom.js → stateDiagram-KXAO66HF-CopJ7G6P.js} +5 -5
  67. package/dist/{stateDiagram-v2-EYPG3UTE-Br1HYKT6.js → stateDiagram-v2-UMBNRL4Z-CejL8AKf.js} +2 -2
  68. package/dist/style.css +1 -1
  69. package/dist/tiddlywiki-5wqsXtSk.js +155 -0
  70. package/dist/tiki-__Kn3CeS.js +181 -0
  71. package/dist/{time-B9SZnSen.js → time-BwSBitlN.js} +58 -58
  72. package/dist/{timeline-definition-3HZDQTIS-DeK_ZRD0.js → timeline-definition-XQNQX7LJ-DzMNTX-C.js} +10 -12
  73. package/dist/{timer-BYwnU4DF.js → timer-B0-z63CM.js} +16 -16
  74. package/dist/{treemap-75Q7IDZK-CKP4vV_0.js → treemap-75Q7IDZK-zeJG07dk.js} +14 -14
  75. package/dist/{vega-component-CpgdqX2d.js → vega-component-CUkiTayd.js} +30 -30
  76. package/dist/{xychartDiagram-FDP5SA34-AMEPsx_R.js → xychartDiagram-6GGTOJPD-DiENNXMS.js} +7 -7
  77. package/package.json +39 -39
  78. package/src/__mocks__/notebook.ts +3 -0
  79. package/src/__mocks__/requests.ts +3 -0
  80. package/src/__tests__/__snapshots__/CellStatus.test.tsx.snap +12 -12
  81. package/src/__tests__/chat-utils.test.ts +26 -211
  82. package/src/components/ai/ai-model-dropdown.tsx +25 -9
  83. package/src/components/app-config/ai-config.tsx +7 -0
  84. package/src/components/chat/chat-components.tsx +71 -0
  85. package/src/components/chat/chat-panel.tsx +481 -291
  86. package/src/components/chat/chat-utils.ts +50 -0
  87. package/src/components/chat/markdown-renderer.tsx +3 -7
  88. package/src/components/chat/tool-call-accordion.tsx +5 -5
  89. package/src/components/datasources/__tests__/utils.test.ts +6 -0
  90. package/src/components/datasources/column-preview.tsx +1 -3
  91. package/src/components/editor/actions/useNotebookActions.tsx +1 -1
  92. package/src/components/editor/ai/add-cell-with-ai.tsx +20 -15
  93. package/src/components/editor/ai/ai-completion-editor.tsx +22 -3
  94. package/src/components/editor/ai/completion-handlers.tsx +2 -4
  95. package/src/components/editor/ai/completion-utils.ts +85 -11
  96. package/src/components/editor/alerts/startup-logs-alert.tsx +72 -0
  97. package/src/components/editor/chrome/panels/datasources-panel.tsx +3 -1
  98. package/src/components/editor/chrome/panels/dependency-graph-panel.tsx +3 -1
  99. package/src/components/editor/chrome/panels/documentation-panel.tsx +3 -1
  100. package/src/components/editor/chrome/panels/error-panel.tsx +3 -1
  101. package/src/components/editor/chrome/panels/file-explorer-panel.tsx +3 -1
  102. package/src/components/editor/chrome/panels/logs-panel.tsx +3 -1
  103. package/src/components/editor/chrome/panels/outline-panel.tsx +3 -1
  104. package/src/components/editor/chrome/panels/packages-panel.tsx +4 -2
  105. package/src/components/editor/chrome/panels/scratchpad-panel.tsx +3 -1
  106. package/src/components/editor/chrome/panels/secrets-panel.tsx +3 -1
  107. package/src/components/editor/chrome/panels/snippets-panel.tsx +3 -1
  108. package/src/components/editor/chrome/panels/tracing-panel.tsx +3 -1
  109. package/src/components/editor/chrome/panels/variable-panel.tsx +3 -1
  110. package/src/components/editor/chrome/wrapper/app-chrome.tsx +38 -28
  111. package/src/components/editor/controls/command-palette-button.tsx +1 -1
  112. package/src/components/editor/controls/command-palette.tsx +5 -4
  113. package/src/components/editor/controls/state.ts +4 -0
  114. package/src/components/editor/package-alert.tsx +108 -58
  115. package/src/components/editor/renderers/CellArray.tsx +2 -0
  116. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +0 -1
  117. package/src/components/pages/edit-page.tsx +7 -3
  118. package/src/core/ai/chat-utils.ts +26 -43
  119. package/src/core/ai/config.ts +1 -1
  120. package/src/core/ai/context/__tests__/registry.test.ts +277 -3
  121. package/src/core/ai/context/context.ts +11 -1
  122. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +378 -0
  123. package/src/core/ai/context/providers/__tests__/error.test.ts +3 -2
  124. package/src/core/ai/context/providers/__tests__/file.test.ts +119 -0
  125. package/src/core/ai/context/providers/cell-output.ts +349 -0
  126. package/src/core/ai/context/providers/common.ts +5 -1
  127. package/src/core/ai/context/providers/file.ts +287 -0
  128. package/src/core/ai/context/registry.ts +79 -0
  129. package/src/core/ai/state.ts +22 -5
  130. package/src/core/alerts/state.ts +71 -3
  131. package/src/core/cells/cell.ts +2 -2
  132. package/src/core/cells/cells.ts +1 -1
  133. package/src/core/cells/logs.ts +1 -1
  134. package/src/core/cells/runs.ts +6 -5
  135. package/src/core/codemirror/ai/resources.ts +47 -5
  136. package/src/core/codemirror/ai/state.ts +12 -0
  137. package/src/core/codemirror/language/__tests__/sql.test.ts +45 -0
  138. package/src/core/codemirror/markdown/__tests__/commands.test.ts +1 -0
  139. package/src/core/codemirror/theme/dark.ts +1 -1
  140. package/src/core/config/capabilities.ts +1 -1
  141. package/src/core/datasets/__tests__/data-source.test.ts +24 -0
  142. package/src/core/errors/__tests__/errors.test.ts +2 -0
  143. package/src/core/islands/bridge.ts +1 -0
  144. package/src/core/islands/main.ts +1 -0
  145. package/src/core/kernel/messages.ts +12 -6
  146. package/src/core/layout/layout.ts +3 -3
  147. package/src/core/network/requests-network.ts +8 -0
  148. package/src/core/network/requests-static.ts +1 -0
  149. package/src/core/network/requests-toasting.ts +1 -0
  150. package/src/core/network/types.ts +4 -1
  151. package/src/core/wasm/bridge.ts +18 -2
  152. package/src/core/wasm/worker/bootstrap.ts +3 -1
  153. package/src/core/wasm/worker/getMarimoWheel.ts +3 -8
  154. package/src/core/wasm/worker/types.ts +3 -0
  155. package/src/core/websocket/useMarimoWebSocket.tsx +7 -1
  156. package/src/css/app/Cell.css +42 -21
  157. package/src/css/app/codemirror.css +5 -1
  158. package/src/css/globals.css +3 -0
  159. package/src/css/md.css +1 -1
  160. package/src/plugins/impl/MicrophonePlugin.tsx +2 -2
  161. package/src/plugins/impl/chat/ChatPlugin.tsx +2 -9
  162. package/src/plugins/impl/chat/chat-ui.tsx +129 -110
  163. package/src/plugins/impl/chat/types.ts +5 -8
  164. package/src/plugins/impl/code/__tests__/language.test.ts +15 -0
  165. package/src/plugins/impl/code/any-language-editor.tsx +11 -8
  166. package/src/plugins/layout/MimeRenderPlugin.tsx +3 -6
  167. package/src/stories/cell.stories.tsx +6 -0
  168. package/src/stories/layout/vertical/one-column.stories.tsx +215 -0
  169. package/src/theme/useTheme.ts +11 -6
  170. package/src/utils/__tests__/blob.test.ts +37 -0
  171. package/src/utils/arrays.ts +13 -0
  172. package/src/utils/fileToBase64.ts +21 -6
  173. package/src/utils/json/base64.ts +5 -2
  174. package/src/utils/numbers.ts +9 -7
  175. package/dist/any-language-editor-DC5170DQ.js +0 -45
  176. package/dist/asn1-jKiBa2Ya.js +0 -95
  177. package/dist/clojure-CCKyeQKf.js +0 -800
  178. package/dist/css-BkF-NPzE.js +0 -1553
  179. package/dist/index-5ZH_qS8j.js +0 -288
  180. package/dist/index-U4yn89qO.js +0 -341
  181. package/dist/javascript-C2yteZeJ.js +0 -691
  182. package/dist/min-DS5Jz-hg.js +0 -80
  183. package/dist/mindmap-definition-LNHGMQRG-0aOVaMR8.js +0 -3234
  184. package/dist/mllike-BSnXJBGA.js +0 -272
  185. package/dist/pug-CwAQJzGR.js +0 -248
  186. package/dist/python-BkR3uSy8.js +0 -313
  187. package/dist/rpm-IznJm2Xc.js +0 -57
  188. package/dist/sequenceDiagram-WFGC7UMF-DMhHzllb.js +0 -2284
  189. package/dist/ttcn-cfg-Bac_acMi.js +0 -88
@@ -1,6 +1,6 @@
1
- import { p as k } from "./chunk-ANTBXLJU-BvYnIrdq.js";
2
- import { _ as l, s as R, g as F, t as I, q as _, a as E, b as D, K as G, z, F as y, G as C, H as P, l as H, M as V } from "./mermaid-Cg5IX6Nv.js";
3
- import { p as W } from "./treemap-75Q7IDZK-CKP4vV_0.js";
1
+ import { _ as l, s as k, g as R, t as F, q as I, a as _, b as E, K as D, z as G, F as y, G as C, H as z, l as P, M as H } from "./mermaid-HVCtvbyx.js";
2
+ import { p as V } from "./chunk-4BX2VUAB-CZR39zCO.js";
3
+ import { p as W } from "./treemap-75Q7IDZK-zeJG07dk.js";
4
4
  var x = {
5
5
  showLegend: true,
6
6
  ticks: 5,
@@ -11,7 +11,7 @@ var x = {
11
11
  axes: [],
12
12
  curves: [],
13
13
  options: x
14
- }, h = structuredClone(w), B = P.radar, j = /* @__PURE__ */ l(() => y({
14
+ }, h = structuredClone(w), B = z.radar, j = /* @__PURE__ */ l(() => y({
15
15
  ...B,
16
16
  ...C().radar
17
17
  }), "getConfig"), b = /* @__PURE__ */ l(() => h.axes, "getAxes"), q = /* @__PURE__ */ l(() => h.curves, "getCurves"), K = /* @__PURE__ */ l(() => h.options, "getOptions"), N = /* @__PURE__ */ l((a) => {
@@ -54,7 +54,7 @@ var x = {
54
54
  graticule: ((_e = t.graticule) == null ? void 0 : _e.value) ?? x.graticule
55
55
  };
56
56
  }, "setOptions"), Z = /* @__PURE__ */ l(() => {
57
- z(), h = structuredClone(w);
57
+ G(), h = structuredClone(w);
58
58
  }, "clear"), $ = {
59
59
  getAxes: b,
60
60
  getCurves: q,
@@ -64,23 +64,23 @@ var x = {
64
64
  setOptions: Y,
65
65
  getConfig: j,
66
66
  clear: Z,
67
- setAccTitle: D,
68
- getAccTitle: E,
69
- setDiagramTitle: _,
70
- getDiagramTitle: I,
71
- getAccDescription: F,
72
- setAccDescription: R
67
+ setAccTitle: E,
68
+ getAccTitle: _,
69
+ setDiagramTitle: I,
70
+ getDiagramTitle: F,
71
+ getAccDescription: R,
72
+ setAccDescription: k
73
73
  }, J = /* @__PURE__ */ l((a) => {
74
- k(a, $);
74
+ V(a, $);
75
75
  const { axes: t, curves: e, options: r } = a;
76
76
  $.setAxes(t), $.setCurves(e), $.setOptions(r);
77
77
  }, "populate"), Q = {
78
78
  parse: /* @__PURE__ */ l(async (a) => {
79
79
  const t = await W("radar", a);
80
- H.debug(t), J(t);
80
+ P.debug(t), J(t);
81
81
  }, "parse")
82
82
  }, tt = /* @__PURE__ */ l((a, t, e, r) => {
83
- const s = r.db, o = s.getAxes(), i = s.getCurves(), n = s.getOptions(), c = s.getConfig(), d = s.getDiagramTitle(), p = G(t), u = et(p, c), g = n.max ?? Math.max(...i.map((f) => Math.max(...f.entries))), m = n.min, v = Math.min(c.width, c.height) / 2;
83
+ const s = r.db, o = s.getAxes(), i = s.getCurves(), n = s.getOptions(), c = s.getConfig(), d = s.getDiagramTitle(), p = D(t), u = et(p, c), g = n.max ?? Math.max(...i.map((f) => Math.max(...f.entries))), m = n.min, v = Math.min(c.width, c.height) / 2;
84
84
  at(u, o, v, n.ticks, n.graticule), rt(u, o, v, c), M(u, o, i, m, g, n.graticule, c), T(u, i, n.showLegend, c), u.append("text").attr("class", "radarTitle").text(d).attr("x", 0).attr("y", -c.height / 2 - c.marginTop);
85
85
  }, "draw"), et = /* @__PURE__ */ l((a, t) => {
86
86
  const e = t.width + t.marginLeft + t.marginRight, r = t.height + t.marginTop + t.marginBottom, s = {
@@ -176,7 +176,7 @@ var st = { draw: tt }, nt = /* @__PURE__ */ l((a, t) => {
176
176
  }
177
177
  return e;
178
178
  }, "genIndexStyles"), ot = /* @__PURE__ */ l((a) => {
179
- const t = V(), e = C(), r = y(t, e.themeVariables), s = y(r.radar, a);
179
+ const t = H(), e = C(), r = y(t, e.themeVariables), s = y(r.radar, a);
180
180
  return { themeVariables: r, radarOptions: s };
181
181
  }, "buildRadarStyleOptions"), it = /* @__PURE__ */ l(({ radar: a } = {}) => {
182
182
  const { themeVariables: t, radarOptions: e } = ot(a);
@@ -1,15 +1,15 @@
1
1
  var _a;
2
- import { p as $ } from "./chunk-ANTBXLJU-BvYnIrdq.js";
3
- import { _ as b, F as u, K as B, e as C, l as m, b as S, a as D, q as T, t as z, g as F, s as P, G as E, H as A, z as W } from "./mermaid-Cg5IX6Nv.js";
4
- import { p as _ } from "./treemap-75Q7IDZK-CKP4vV_0.js";
5
- var N = A.packet, w = (_a = class {
2
+ import { _ as b, F as u, K as $, e as B, l as m, b as C, a as S, q as D, t as T, g as z, s as F, G as P, H as E, z as A } from "./mermaid-HVCtvbyx.js";
3
+ import { p as W } from "./chunk-4BX2VUAB-CZR39zCO.js";
4
+ import { p as _ } from "./treemap-75Q7IDZK-zeJG07dk.js";
5
+ var N = E.packet, w = (_a = class {
6
6
  constructor() {
7
- this.packet = [], this.setAccTitle = S, this.getAccTitle = D, this.setDiagramTitle = T, this.getDiagramTitle = z, this.getAccDescription = F, this.setAccDescription = P;
7
+ this.packet = [], this.setAccTitle = C, this.getAccTitle = S, this.setDiagramTitle = D, this.getDiagramTitle = T, this.getAccDescription = z, this.setAccDescription = F;
8
8
  }
9
9
  getConfig() {
10
10
  const t = u({
11
11
  ...N,
12
- ...E().packet
12
+ ...P().packet
13
13
  });
14
14
  return t.showBits && (t.paddingY += 10), t;
15
15
  }
@@ -20,10 +20,10 @@ var N = A.packet, w = (_a = class {
20
20
  t.length > 0 && this.packet.push(t);
21
21
  }
22
22
  clear() {
23
- W(), this.packet = [];
23
+ A(), this.packet = [];
24
24
  }
25
25
  }, b(_a, "PacketDB"), _a), L = 1e4, M = /* @__PURE__ */ b((t, e) => {
26
- $(t, e);
26
+ W(t, e);
27
27
  let r = -1, s = [], n = 1;
28
28
  const { bitsPerRow: l } = e.getConfig();
29
29
  for (let { start: a, end: i, bits: d, label: c } of t.blocks) {
@@ -80,8 +80,8 @@ var N = A.packet, w = (_a = class {
80
80
  m.debug(e), M(e, r);
81
81
  }, "parse")
82
82
  }, G = /* @__PURE__ */ b((t, e, r, s) => {
83
- const n = s.db, l = n.getConfig(), { rowHeight: a, paddingY: i, bitWidth: d, bitsPerRow: c } = l, p = n.getPacket(), o = n.getDiagramTitle(), h = a + i, g = h * (p.length + 1) - (o ? 0 : a), k = d * c + 2, f = B(e);
84
- f.attr("viewbox", `0 0 ${k} ${g}`), C(f, g, k, l.useMaxWidth);
83
+ const n = s.db, l = n.getConfig(), { rowHeight: a, paddingY: i, bitWidth: d, bitsPerRow: c } = l, p = n.getPacket(), o = n.getDiagramTitle(), h = a + i, g = h * (p.length + 1) - (o ? 0 : a), k = d * c + 2, f = $(e);
84
+ f.attr("viewbox", `0 0 ${k} ${g}`), B(f, g, k, l.useMaxWidth);
85
85
  for (const [x, y] of p.entries())
86
86
  H(f, y, x, l);
87
87
  f.append("text").text(o).attr("x", k / 2).attr("y", g - h / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("class", "packetTitle");
@@ -0,0 +1,194 @@
1
+ import { s as o } from "./main-BD2KGFpU.js";
2
+ var e = "from", s = new RegExp("^(\\s*)\\b(" + e + ")\\b", "i"), n = ["run", "cmd", "entrypoint", "shell"], l = new RegExp("^(\\s*)(" + n.join("|") + ")(\\s+\\[)", "i"), t = "expose", x = new RegExp("^(\\s*)(" + t + ")(\\s+)", "i"), g = [
3
+ "arg",
4
+ "from",
5
+ "maintainer",
6
+ "label",
7
+ "env",
8
+ "add",
9
+ "copy",
10
+ "volume",
11
+ "user",
12
+ "workdir",
13
+ "onbuild",
14
+ "stopsignal",
15
+ "healthcheck",
16
+ "shell"
17
+ ], u = [e, t].concat(n).concat(g), r = "(" + u.join("|") + ")", a = new RegExp("^(\\s*)" + r + "(\\s*)(#.*)?$", "i"), k = new RegExp("^(\\s*)" + r + "(\\s+)", "i");
18
+ const m = o({
19
+ start: [
20
+ // Block comment: This is a line starting with a comment
21
+ {
22
+ regex: /^\s*#.*$/,
23
+ sol: true,
24
+ token: "comment"
25
+ },
26
+ {
27
+ regex: s,
28
+ token: [null, "keyword"],
29
+ sol: true,
30
+ next: "from"
31
+ },
32
+ // Highlight an instruction without any arguments (for convenience)
33
+ {
34
+ regex: a,
35
+ token: [null, "keyword", null, "error"],
36
+ sol: true
37
+ },
38
+ {
39
+ regex: l,
40
+ token: [null, "keyword", null],
41
+ sol: true,
42
+ next: "array"
43
+ },
44
+ {
45
+ regex: x,
46
+ token: [null, "keyword", null],
47
+ sol: true,
48
+ next: "expose"
49
+ },
50
+ // Highlight an instruction followed by arguments
51
+ {
52
+ regex: k,
53
+ token: [null, "keyword", null],
54
+ sol: true,
55
+ next: "arguments"
56
+ },
57
+ {
58
+ regex: /./,
59
+ token: null
60
+ }
61
+ ],
62
+ from: [
63
+ {
64
+ regex: /\s*$/,
65
+ token: null,
66
+ next: "start"
67
+ },
68
+ {
69
+ // Line comment without instruction arguments is an error
70
+ regex: /(\s*)(#.*)$/,
71
+ token: [null, "error"],
72
+ next: "start"
73
+ },
74
+ {
75
+ regex: /(\s*\S+\s+)(as)/i,
76
+ token: [null, "keyword"],
77
+ next: "start"
78
+ },
79
+ // Fail safe return to start
80
+ {
81
+ token: null,
82
+ next: "start"
83
+ }
84
+ ],
85
+ single: [
86
+ {
87
+ regex: /(?:[^\\']|\\.)/,
88
+ token: "string"
89
+ },
90
+ {
91
+ regex: /'/,
92
+ token: "string",
93
+ pop: true
94
+ }
95
+ ],
96
+ double: [
97
+ {
98
+ regex: /(?:[^\\"]|\\.)/,
99
+ token: "string"
100
+ },
101
+ {
102
+ regex: /"/,
103
+ token: "string",
104
+ pop: true
105
+ }
106
+ ],
107
+ array: [
108
+ {
109
+ regex: /\]/,
110
+ token: null,
111
+ next: "start"
112
+ },
113
+ {
114
+ regex: /"(?:[^\\"]|\\.)*"?/,
115
+ token: "string"
116
+ }
117
+ ],
118
+ expose: [
119
+ {
120
+ regex: /\d+$/,
121
+ token: "number",
122
+ next: "start"
123
+ },
124
+ {
125
+ regex: /[^\d]+$/,
126
+ token: null,
127
+ next: "start"
128
+ },
129
+ {
130
+ regex: /\d+/,
131
+ token: "number"
132
+ },
133
+ {
134
+ regex: /[^\d]+/,
135
+ token: null
136
+ },
137
+ // Fail safe return to start
138
+ {
139
+ token: null,
140
+ next: "start"
141
+ }
142
+ ],
143
+ arguments: [
144
+ {
145
+ regex: /^\s*#.*$/,
146
+ sol: true,
147
+ token: "comment"
148
+ },
149
+ {
150
+ regex: /"(?:[^\\"]|\\.)*"?$/,
151
+ token: "string",
152
+ next: "start"
153
+ },
154
+ {
155
+ regex: /"/,
156
+ token: "string",
157
+ push: "double"
158
+ },
159
+ {
160
+ regex: /'(?:[^\\']|\\.)*'?$/,
161
+ token: "string",
162
+ next: "start"
163
+ },
164
+ {
165
+ regex: /'/,
166
+ token: "string",
167
+ push: "single"
168
+ },
169
+ {
170
+ regex: /[^#"']+[\\`]$/,
171
+ token: null
172
+ },
173
+ {
174
+ regex: /[^#"']+$/,
175
+ token: null,
176
+ next: "start"
177
+ },
178
+ {
179
+ regex: /[^#"']+/,
180
+ token: null
181
+ },
182
+ // Fail safe return to start
183
+ {
184
+ token: null,
185
+ next: "start"
186
+ }
187
+ ],
188
+ languageData: {
189
+ commentTokens: { line: "#" }
190
+ }
191
+ });
192
+ export {
193
+ m as dockerFile
194
+ };
@@ -0,0 +1,78 @@
1
+ var i = { slash: 0, parenthesis: 1 }, n = { comment: 0, _string: 1, characterClass: 2 };
2
+ const l = {
3
+ name: "ebnf",
4
+ startState: function() {
5
+ return {
6
+ stringType: null,
7
+ commentType: null,
8
+ braced: 0,
9
+ lhs: true,
10
+ localState: null,
11
+ stack: [],
12
+ inDefinition: false
13
+ };
14
+ },
15
+ token: function(e, c) {
16
+ if (e) {
17
+ switch (c.stack.length === 0 && (e.peek() == '"' || e.peek() == "'" ? (c.stringType = e.peek(), e.next(), c.stack.unshift(n._string)) : e.match("/*") ? (c.stack.unshift(n.comment), c.commentType = i.slash) : e.match("(*") && (c.stack.unshift(n.comment), c.commentType = i.parenthesis)), c.stack[0]) {
18
+ case n._string:
19
+ for (; c.stack[0] === n._string && !e.eol(); )
20
+ e.peek() === c.stringType ? (e.next(), c.stack.shift()) : e.peek() === "\\" ? (e.next(), e.next()) : e.match(/^.[^\\\"\']*/);
21
+ return c.lhs ? "property" : "string";
22
+ // Token style
23
+ case n.comment:
24
+ for (; c.stack[0] === n.comment && !e.eol(); )
25
+ c.commentType === i.slash && e.match("*/") || c.commentType === i.parenthesis && e.match("*)") ? (c.stack.shift(), c.commentType = null) : e.match(/^.[^\*]*/);
26
+ return "comment";
27
+ case n.characterClass:
28
+ for (; c.stack[0] === n.characterClass && !e.eol(); )
29
+ e.match(/^[^\]\\]+/) || e.match(".") || c.stack.shift();
30
+ return "operator";
31
+ }
32
+ var t = e.peek();
33
+ switch (t) {
34
+ case "[":
35
+ return e.next(), c.stack.unshift(n.characterClass), "bracket";
36
+ case ":":
37
+ case "|":
38
+ case ";":
39
+ return e.next(), "operator";
40
+ case "%":
41
+ if (e.match("%%"))
42
+ return "header";
43
+ if (e.match(/[%][A-Za-z]+/))
44
+ return "keyword";
45
+ if (e.match(/[%][}]/))
46
+ return "bracket";
47
+ break;
48
+ case "/":
49
+ if (e.match(/[\/][A-Za-z]+/))
50
+ return "keyword";
51
+ case "\\":
52
+ if (e.match(/[\][a-z]+/))
53
+ return "string.special";
54
+ case ".":
55
+ if (e.match("."))
56
+ return "atom";
57
+ case "*":
58
+ case "-":
59
+ case "+":
60
+ case "^":
61
+ if (e.match(t))
62
+ return "atom";
63
+ case "$":
64
+ if (e.match("$$"))
65
+ return "builtin";
66
+ if (e.match(/[$][0-9]+/))
67
+ return "variableName.special";
68
+ case "<":
69
+ if (e.match(/<<[a-zA-Z_]+>>/))
70
+ return "builtin";
71
+ }
72
+ return e.match("//") ? (e.skipToEnd(), "comment") : e.match("return") ? "operator" : e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/) ? e.match(/(?=[\(.])/) ? "variable" : e.match(/(?=[\s\n]*[:=])/) ? "def" : "variableName.special" : ["[", "]", "(", ")"].indexOf(e.peek()) != -1 ? (e.next(), "bracket") : (e.eatSpace() || e.next(), null);
73
+ }
74
+ }
75
+ };
76
+ export {
77
+ l as ebnf
78
+ };
@@ -1,9 +1,9 @@
1
1
  var _a;
2
- import { g as vt } from "./chunk-WVR4S24B-DXj8yaUk.js";
3
- import { s as Dt } from "./chunk-NRVI72HA-BYx2jMlI.js";
4
- import { _ as o, b as wt, a as Vt, s as Lt, g as Mt, q as Bt, t as Ft, c as $, l as D, z as Yt, y as Pt, B as zt, D as Gt, p as Kt, r as Zt, d as Ut, u as jt } from "./mermaid-Cg5IX6Nv.js";
5
- import { c as Wt } from "./channel-CeuXqUAU.js";
6
- var ut = function() {
2
+ import { g as vt } from "./chunk-55IACEB6-BIH-MYov.js";
3
+ import { s as Dt } from "./chunk-QN33PNHL-D5LO5Jq_.js";
4
+ import { _ as o, b as wt, a as Vt, s as Lt, g as Mt, q as Bt, t as Ft, c as $, l as D, z as Yt, y as Pt, B as zt, D as Gt, p as Kt, r as Zt, d as Ut, u as jt } from "./mermaid-HVCtvbyx.js";
5
+ import { c as Wt } from "./channel-BilGXox7.js";
6
+ var ut = (function() {
7
7
  var e = /* @__PURE__ */ o(function(N, n, a, c) {
8
8
  for (a = a || {}, c = N.length; c--; a[N[c]] = n) ;
9
9
  return a;
@@ -267,7 +267,7 @@ Expecting ` + J.join(", ") + ", got '" + (this.terminals_[y] || y) + "'" : ht =
267
267
  }
268
268
  return true;
269
269
  }, "parse")
270
- }, Nt = /* @__PURE__ */ function() {
270
+ }, Nt = /* @__PURE__ */ (function() {
271
271
  var N = {
272
272
  EOF: 1,
273
273
  parseError: /* @__PURE__ */ o(function(a, c) {
@@ -597,13 +597,13 @@ Expecting ` + J.join(", ") + ", got '" + (this.terminals_[y] || y) + "'" : ht =
597
597
  conditions: { style: { rules: [34, 35, 36, 37, 38, 69, 70], inclusive: false }, acc_descr_multiline: { rules: [5, 6], inclusive: false }, acc_descr: { rules: [3], inclusive: false }, acc_title: { rules: [1], inclusive: false }, block: { rules: [23, 24, 25, 26, 27, 28, 29, 30], inclusive: false }, INITIAL: { rules: [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 31, 32, 33, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73, 74], inclusive: true } }
598
598
  };
599
599
  return N;
600
- }();
600
+ })();
601
601
  at.lexer = Nt;
602
602
  function X() {
603
603
  this.yy = {};
604
604
  }
605
605
  return o(X, "Parser"), X.prototype = at, at.Parser = X, new X();
606
- }();
606
+ })();
607
607
  ut.parser = ut;
608
608
  var Qt = ut, Xt = (_a = class {
609
609
  constructor() {
@@ -0,0 +1,103 @@
1
+ var d = {
2
+ term: true,
3
+ method: true,
4
+ accu: true,
5
+ rule: true,
6
+ then: true,
7
+ is: true,
8
+ and: true,
9
+ or: true,
10
+ if: true,
11
+ default: true
12
+ }, f = {
13
+ var_input: true,
14
+ var_output: true,
15
+ fuzzify: true,
16
+ defuzzify: true,
17
+ function_block: true,
18
+ ruleblock: true
19
+ }, o = {
20
+ end_ruleblock: true,
21
+ end_defuzzify: true,
22
+ end_function_block: true,
23
+ end_fuzzify: true,
24
+ end_var: true
25
+ }, p = {
26
+ true: true,
27
+ false: true,
28
+ nan: true,
29
+ real: true,
30
+ min: true,
31
+ max: true,
32
+ cog: true,
33
+ cogs: true
34
+ }, l = /[+\-*&^%:=<>!|\/]/;
35
+ function i(e, n) {
36
+ var t = e.next();
37
+ if (/[\d\.]/.test(t))
38
+ return t == "." ? e.match(/^[0-9]+([eE][\-+]?[0-9]+)?/) : t == "0" ? e.match(/^[xX][0-9a-fA-F]+/) || e.match(/^0[0-7]+/) : e.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/), "number";
39
+ if (t == "/" || t == "(") {
40
+ if (e.eat("*"))
41
+ return n.tokenize = c, c(e, n);
42
+ if (e.eat("/"))
43
+ return e.skipToEnd(), "comment";
44
+ }
45
+ if (l.test(t))
46
+ return e.eatWhile(l), "operator";
47
+ e.eatWhile(/[\w\$_\xa1-\uffff]/);
48
+ var r = e.current().toLowerCase();
49
+ return d.propertyIsEnumerable(r) || f.propertyIsEnumerable(r) || o.propertyIsEnumerable(r) ? "keyword" : p.propertyIsEnumerable(r) ? "atom" : "variable";
50
+ }
51
+ function c(e, n) {
52
+ for (var t = false, r; r = e.next(); ) {
53
+ if ((r == "/" || r == ")") && t) {
54
+ n.tokenize = i;
55
+ break;
56
+ }
57
+ t = r == "*";
58
+ }
59
+ return "comment";
60
+ }
61
+ function a(e, n, t, r, u) {
62
+ this.indented = e, this.column = n, this.type = t, this.align = r, this.prev = u;
63
+ }
64
+ function k(e, n, t) {
65
+ return e.context = new a(e.indented, n, t, null, e.context);
66
+ }
67
+ function v(e) {
68
+ if (e.context.prev) {
69
+ var n = e.context.type;
70
+ return n == "end_block" && (e.indented = e.context.indented), e.context = e.context.prev;
71
+ }
72
+ }
73
+ const x = {
74
+ name: "fcl",
75
+ startState: function(e) {
76
+ return {
77
+ tokenize: null,
78
+ context: new a(-e, 0, "top", false),
79
+ indented: 0,
80
+ startOfLine: true
81
+ };
82
+ },
83
+ token: function(e, n) {
84
+ var t = n.context;
85
+ if (e.sol() && (t.align == null && (t.align = false), n.indented = e.indentation(), n.startOfLine = true), e.eatSpace()) return null;
86
+ var r = (n.tokenize || i)(e, n);
87
+ if (r == "comment") return r;
88
+ t.align == null && (t.align = true);
89
+ var u = e.current().toLowerCase();
90
+ return f.propertyIsEnumerable(u) ? k(n, e.column(), "end_block") : o.propertyIsEnumerable(u) && v(n), n.startOfLine = false, r;
91
+ },
92
+ indent: function(e, n, t) {
93
+ if (e.tokenize != i && e.tokenize != null) return 0;
94
+ var r = e.context, u = o.propertyIsEnumerable(n);
95
+ return r.align ? r.column + (u ? 0 : 1) : r.indented + (u ? 0 : t.unit);
96
+ },
97
+ languageData: {
98
+ commentTokens: { line: "//", block: { open: "(*", close: "*)" } }
99
+ }
100
+ };
101
+ export {
102
+ x as fcl
103
+ };
@@ -1,9 +1,9 @@
1
1
  var _a;
2
- import { g as Yt } from "./chunk-GLLZNHP4-CyFsosAe.js";
3
- import { _ as A, o as Pt, l as $, c as g1, d as E1, p as qt, r as Ht, u as st, b as Xt, s as Qt, q as Jt, a as Zt, g as $t, t as te, k as ee, v as se, J as ie, x as re, y as et, z as ae, A as ne, B as ue } from "./mermaid-Cg5IX6Nv.js";
4
- import { g as oe } from "./chunk-WVR4S24B-DXj8yaUk.js";
5
- import { s as le } from "./chunk-NRVI72HA-BYx2jMlI.js";
6
- import { c as ce } from "./channel-CeuXqUAU.js";
2
+ import { g as Yt } from "./chunk-FMBD7UC4-4PZXFZE8.js";
3
+ import { _ as A, o as Pt, l as $, c as g1, d as E1, p as qt, r as Ht, u as st, b as Xt, s as Qt, q as Jt, a as Zt, g as $t, t as te, k as ee, v as se, J as ie, x as re, y as et, z as ae, A as ne, B as ue } from "./mermaid-HVCtvbyx.js";
4
+ import { g as oe } from "./chunk-55IACEB6-BIH-MYov.js";
5
+ import { s as le } from "./chunk-QN33PNHL-D5LO5Jq_.js";
6
+ import { c as ce } from "./channel-BilGXox7.js";
7
7
  var he = "flowchart-", de = (_a = class {
8
8
  // cspell:ignore funs
9
9
  constructor() {
@@ -631,7 +631,7 @@ You have to call mermaid.initialize.`
631
631
  }, "draw"), ge = {
632
632
  getClasses: pe,
633
633
  draw: fe
634
- }, it = function() {
634
+ }, it = (function() {
635
635
  var t = /* @__PURE__ */ A(function(f1, c, h, f) {
636
636
  for (h = h || {}, f = f1.length; f--; h[f1[f]] = c) ;
637
637
  return h;
@@ -1016,7 +1016,7 @@ Expecting ` + H1.join(", ") + ", got '" + (this.terminals_[Y] || Y) + "'" : tt =
1016
1016
  }
1017
1017
  return true;
1018
1018
  }, "parse")
1019
- }, Ut = /* @__PURE__ */ function() {
1019
+ }, Ut = /* @__PURE__ */ (function() {
1020
1020
  var f1 = {
1021
1021
  EOF: 1,
1022
1022
  parseError: /* @__PURE__ */ A(function(h, f) {
@@ -1448,13 +1448,13 @@ Expecting ` + H1.join(", ") + ", got '" + (this.terminals_[Y] || Y) + "'" : tt =
1448
1448
  conditions: { shapeDataEndBracket: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, shapeDataStr: { rules: [9, 10, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, shapeData: { rules: [8, 11, 12, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, callbackargs: { rules: [17, 18, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, callbackname: { rules: [14, 15, 16, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, href: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, click: { rules: [21, 24, 33, 34, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, dottedEdgeText: { rules: [21, 24, 74, 76, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, thickEdgeText: { rules: [21, 24, 71, 73, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, edgeText: { rules: [21, 24, 68, 70, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, trapText: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 91, 92, 93, 94, 95, 108, 110, 112, 114], inclusive: false }, ellipseText: { rules: [21, 24, 77, 78, 79, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, text: { rules: [21, 24, 77, 80, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 107, 108, 109, 110, 111, 112, 113, 114, 115], inclusive: false }, vertex: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, dir: { rules: [21, 24, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, acc_descr_multiline: { rules: [5, 6, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, acc_descr: { rules: [3, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, acc_title: { rules: [1, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, md_string: { rules: [19, 20, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, string: { rules: [21, 22, 23, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: false }, INITIAL: { rules: [0, 2, 4, 7, 13, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 74, 75, 77, 80, 82, 84, 85, 86, 88, 90, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 114, 116, 117, 118, 119], inclusive: true } }
1449
1449
  };
1450
1450
  return f1;
1451
- }();
1451
+ })();
1452
1452
  Q1.lexer = Ut;
1453
1453
  function Y1() {
1454
1454
  this.yy = {};
1455
1455
  }
1456
1456
  return A(Y1, "Parser"), Y1.prototype = Q1, Q1.Parser = Y1, new Y1();
1457
- }();
1457
+ })();
1458
1458
  it.parser = it;
1459
1459
  var Ot = it, Mt = Object.assign({}, Ot);
1460
1460
  Mt.parse = (t) => {