@bpmnkit/plugins 0.0.8

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 (140) hide show
  1. package/README.md +153 -0
  2. package/dist/ai-bridge/css.d.ts +2 -0
  3. package/dist/ai-bridge/css.js +366 -0
  4. package/dist/ai-bridge/index.d.ts +44 -0
  5. package/dist/ai-bridge/index.js +132 -0
  6. package/dist/ai-bridge/panel.d.ts +27 -0
  7. package/dist/ai-bridge/panel.js +715 -0
  8. package/dist/ascii-view/css.d.ts +4 -0
  9. package/dist/ascii-view/css.js +83 -0
  10. package/dist/ascii-view/index.d.ts +25 -0
  11. package/dist/ascii-view/index.js +92 -0
  12. package/dist/command-palette/css.d.ts +4 -0
  13. package/dist/command-palette/css.js +157 -0
  14. package/dist/command-palette/index.d.ts +53 -0
  15. package/dist/command-palette/index.js +378 -0
  16. package/dist/command-palette-editor/index.d.ts +35 -0
  17. package/dist/command-palette-editor/index.js +60 -0
  18. package/dist/config-panel/css.d.ts +4 -0
  19. package/dist/config-panel/css.js +719 -0
  20. package/dist/config-panel/index.d.ts +36 -0
  21. package/dist/config-panel/index.js +73 -0
  22. package/dist/config-panel/renderer.d.ts +127 -0
  23. package/dist/config-panel/renderer.js +1162 -0
  24. package/dist/config-panel/types.d.ts +118 -0
  25. package/dist/config-panel/types.js +2 -0
  26. package/dist/config-panel-bpmn/index.d.ts +58 -0
  27. package/dist/config-panel-bpmn/index.js +1320 -0
  28. package/dist/config-panel-bpmn/template-engine.d.ts +17 -0
  29. package/dist/config-panel-bpmn/template-engine.js +307 -0
  30. package/dist/config-panel-bpmn/template-to-service-task.d.ts +30 -0
  31. package/dist/config-panel-bpmn/template-to-service-task.js +92 -0
  32. package/dist/config-panel-bpmn/template-types.d.ts +126 -0
  33. package/dist/config-panel-bpmn/template-types.js +6 -0
  34. package/dist/config-panel-bpmn/templates/generated.d.ts +3 -0
  35. package/dist/config-panel-bpmn/templates/generated.js +57865 -0
  36. package/dist/config-panel-bpmn/util.d.ts +46 -0
  37. package/dist/config-panel-bpmn/util.js +195 -0
  38. package/dist/dmn-editor/css.d.ts +3 -0
  39. package/dist/dmn-editor/css.js +667 -0
  40. package/dist/dmn-editor/dmn-editor.d.ts +34 -0
  41. package/dist/dmn-editor/dmn-editor.js +646 -0
  42. package/dist/dmn-editor/drd-canvas.d.ts +85 -0
  43. package/dist/dmn-editor/drd-canvas.js +1087 -0
  44. package/dist/dmn-editor/index.d.ts +3 -0
  45. package/dist/dmn-editor/index.js +2 -0
  46. package/dist/dmn-viewer/css.d.ts +3 -0
  47. package/dist/dmn-viewer/css.js +151 -0
  48. package/dist/dmn-viewer/dmn-viewer.d.ts +30 -0
  49. package/dist/dmn-viewer/dmn-viewer.js +160 -0
  50. package/dist/dmn-viewer/feel.d.ts +3 -0
  51. package/dist/dmn-viewer/feel.js +2 -0
  52. package/dist/dmn-viewer/index.d.ts +14 -0
  53. package/dist/dmn-viewer/index.js +12 -0
  54. package/dist/element-docs/content.d.ts +20 -0
  55. package/dist/element-docs/content.js +1032 -0
  56. package/dist/element-docs/index.d.ts +7 -0
  57. package/dist/element-docs/index.js +643 -0
  58. package/dist/feel-playground/css.d.ts +4 -0
  59. package/dist/feel-playground/css.js +292 -0
  60. package/dist/feel-playground/index.d.ts +4 -0
  61. package/dist/feel-playground/index.js +3 -0
  62. package/dist/feel-playground/playground-plugin.d.ts +14 -0
  63. package/dist/feel-playground/playground-plugin.js +292 -0
  64. package/dist/form-editor/css.d.ts +3 -0
  65. package/dist/form-editor/css.js +703 -0
  66. package/dist/form-editor/form-editor.d.ts +48 -0
  67. package/dist/form-editor/form-editor.js +1039 -0
  68. package/dist/form-editor/index.d.ts +3 -0
  69. package/dist/form-editor/index.js +2 -0
  70. package/dist/form-viewer/css.d.ts +3 -0
  71. package/dist/form-viewer/css.js +303 -0
  72. package/dist/form-viewer/form-viewer.d.ts +29 -0
  73. package/dist/form-viewer/form-viewer.js +376 -0
  74. package/dist/form-viewer/index.d.ts +12 -0
  75. package/dist/form-viewer/index.js +11 -0
  76. package/dist/history/checkpoint.d.ts +10 -0
  77. package/dist/history/checkpoint.js +92 -0
  78. package/dist/history/css.d.ts +2 -0
  79. package/dist/history/css.js +130 -0
  80. package/dist/history/history-panel.d.ts +12 -0
  81. package/dist/history/history-panel.js +142 -0
  82. package/dist/history/index.d.ts +5 -0
  83. package/dist/history/index.js +3 -0
  84. package/dist/main-menu/css.d.ts +4 -0
  85. package/dist/main-menu/css.js +272 -0
  86. package/dist/main-menu/index.d.ts +59 -0
  87. package/dist/main-menu/index.js +285 -0
  88. package/dist/minimap/css.d.ts +10 -0
  89. package/dist/minimap/css.js +54 -0
  90. package/dist/minimap/index.d.ts +38 -0
  91. package/dist/minimap/index.js +69 -0
  92. package/dist/minimap/minimap.d.ts +35 -0
  93. package/dist/minimap/minimap.js +166 -0
  94. package/dist/optimize/index.d.ts +21 -0
  95. package/dist/optimize/index.js +304 -0
  96. package/dist/process-runner/css.d.ts +2 -0
  97. package/dist/process-runner/css.js +467 -0
  98. package/dist/process-runner/index.d.ts +56 -0
  99. package/dist/process-runner/index.js +549 -0
  100. package/dist/storage/auto-save.d.ts +11 -0
  101. package/dist/storage/auto-save.js +44 -0
  102. package/dist/storage/css.d.ts +2 -0
  103. package/dist/storage/css.js +2 -0
  104. package/dist/storage/db.d.ts +99 -0
  105. package/dist/storage/db.js +116 -0
  106. package/dist/storage/dialog.d.ts +15 -0
  107. package/dist/storage/dialog.js +201 -0
  108. package/dist/storage/export.d.ts +3 -0
  109. package/dist/storage/export.js +137 -0
  110. package/dist/storage/index.d.ts +44 -0
  111. package/dist/storage/index.js +201 -0
  112. package/dist/storage/sidebar.d.ts +2 -0
  113. package/dist/storage/sidebar.js +2 -0
  114. package/dist/storage/storage-api.d.ts +76 -0
  115. package/dist/storage/storage-api.js +342 -0
  116. package/dist/storage/types.d.ts +44 -0
  117. package/dist/storage/types.js +2 -0
  118. package/dist/storage-tabs-bridge/index.d.ts +96 -0
  119. package/dist/storage-tabs-bridge/index.js +502 -0
  120. package/dist/tabs/css.d.ts +3 -0
  121. package/dist/tabs/css.js +642 -0
  122. package/dist/tabs/file-resolver.d.ts +71 -0
  123. package/dist/tabs/file-resolver.js +46 -0
  124. package/dist/tabs/index.d.ts +15 -0
  125. package/dist/tabs/index.js +13 -0
  126. package/dist/tabs/tabs-plugin.d.ts +250 -0
  127. package/dist/tabs/tabs-plugin.js +1119 -0
  128. package/dist/token-highlight/css.d.ts +2 -0
  129. package/dist/token-highlight/css.js +81 -0
  130. package/dist/token-highlight/index.d.ts +44 -0
  131. package/dist/token-highlight/index.js +164 -0
  132. package/dist/watermark/css.d.ts +10 -0
  133. package/dist/watermark/css.js +54 -0
  134. package/dist/watermark/index.d.ts +48 -0
  135. package/dist/watermark/index.js +64 -0
  136. package/dist/zoom-controls/css.d.ts +4 -0
  137. package/dist/zoom-controls/css.js +48 -0
  138. package/dist/zoom-controls/index.d.ts +36 -0
  139. package/dist/zoom-controls/index.js +111 -0
  140. package/package.json +121 -0
@@ -0,0 +1,21 @@
1
+ import type { BpmnDefinitions } from "@bpmnkit/core";
2
+ export interface OptimizePluginOptions {
3
+ /** Returns the current diagram definitions, or null if no diagram is loaded. */
4
+ getDefinitions: () => BpmnDefinitions | null;
5
+ /** Reloads the editor with the given XML. */
6
+ reload: (xml: string) => void;
7
+ /** Opens a new BPMN tab with the given XML and name. */
8
+ openTab: (xml: string, name: string) => void;
9
+ }
10
+ /**
11
+ * Creates an optimize plugin that provides a button for triggering
12
+ * the two-phase diagram optimization dialog.
13
+ *
14
+ * The returned `button` should be passed to `initEditorHud` as `optimizeButton`.
15
+ */
16
+ export declare function createOptimizePlugin(options: OptimizePluginOptions): {
17
+ name: string;
18
+ install(): void;
19
+ button: HTMLButtonElement;
20
+ };
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,304 @@
1
+ import { Bpmn, optimize } from "@bpmnkit/core";
2
+ // ── Styles ────────────────────────────────────────────────────────────────────
3
+ const STYLE_ID = "opt-dialog-styles";
4
+ function injectStyles() {
5
+ if (document.getElementById(STYLE_ID))
6
+ return;
7
+ const style = document.createElement("style");
8
+ style.id = STYLE_ID;
9
+ style.textContent = `
10
+ .opt-overlay {
11
+ position: fixed; inset: 0; z-index: 200;
12
+ background: rgba(0,0,0,0.5);
13
+ display: flex; align-items: center; justify-content: center;
14
+ }
15
+ .opt-panel {
16
+ background: rgba(22, 22, 30, 0.97);
17
+ border: 1px solid rgba(255,255,255,0.12);
18
+ border-radius: 10px;
19
+ width: 540px; max-width: 95vw; max-height: 80vh;
20
+ display: flex; flex-direction: column;
21
+ color: rgba(255,255,255,0.85);
22
+ font-family: system-ui, -apple-system, sans-serif;
23
+ font-size: 13px;
24
+ box-shadow: 0 16px 48px rgba(0,0,0,0.6);
25
+ overflow: hidden;
26
+ }
27
+ .opt-header {
28
+ padding: 16px 18px 12px;
29
+ border-bottom: 1px solid rgba(255,255,255,0.08);
30
+ flex-shrink: 0;
31
+ }
32
+ .opt-title {
33
+ font-size: 15px; font-weight: 600;
34
+ color: rgba(255,255,255,0.95);
35
+ margin: 0 0 2px;
36
+ }
37
+ .opt-subtitle {
38
+ font-size: 12px; color: rgba(255,255,255,0.45);
39
+ margin: 0;
40
+ }
41
+ .opt-body {
42
+ flex: 1; overflow-y: auto; padding: 8px 0;
43
+ }
44
+ .opt-finding {
45
+ display: flex; align-items: flex-start; gap: 10px;
46
+ padding: 8px 18px;
47
+ border-bottom: 1px solid rgba(255,255,255,0.05);
48
+ }
49
+ .opt-finding:last-child { border-bottom: none; }
50
+ .opt-finding-cb { margin-top: 2px; flex-shrink: 0; cursor: pointer; }
51
+ .opt-badge {
52
+ flex-shrink: 0; font-size: 10px; font-weight: 700;
53
+ letter-spacing: 0.04em; text-transform: uppercase;
54
+ padding: 2px 5px; border-radius: 4px;
55
+ margin-top: 1px;
56
+ }
57
+ .opt-badge-error { background: rgba(220,50,50,0.25); color: #f88; }
58
+ .opt-badge-warning{ background: rgba(220,160,30,0.25); color: #fda; }
59
+ .opt-badge-info { background: rgba(60,140,220,0.25); color: #8bf; }
60
+ .opt-finding-body { flex: 1; min-width: 0; }
61
+ .opt-finding-msg { color: rgba(255,255,255,0.85); line-height: 1.4; word-break: break-word; }
62
+ .opt-finding-sug { color: rgba(255,255,255,0.4); font-size: 11.5px; margin-top: 2px; line-height: 1.4; }
63
+ .opt-empty {
64
+ padding: 32px; text-align: center;
65
+ color: rgba(255,255,255,0.4);
66
+ }
67
+ .opt-result {
68
+ display: flex; align-items: flex-start; gap: 10px;
69
+ padding: 8px 18px;
70
+ border-bottom: 1px solid rgba(255,255,255,0.05);
71
+ }
72
+ .opt-result:last-child { border-bottom: none; }
73
+ .opt-result-icon { flex-shrink: 0; margin-top: 1px; color: #8f8; font-size: 14px; }
74
+ .opt-result-body { flex: 1; min-width: 0; }
75
+ .opt-result-desc { color: rgba(255,255,255,0.8); line-height: 1.4; }
76
+ .opt-result-open {
77
+ margin-top: 6px; font-size: 12px;
78
+ background: rgba(60,120,220,0.3); border: 1px solid rgba(60,120,220,0.5);
79
+ color: #9cf; border-radius: 5px; padding: 3px 8px;
80
+ cursor: pointer;
81
+ }
82
+ .opt-result-open:hover { background: rgba(60,120,220,0.45); }
83
+ .opt-footer {
84
+ padding: 12px 18px;
85
+ border-top: 1px solid rgba(255,255,255,0.08);
86
+ display: flex; gap: 8px; justify-content: flex-end;
87
+ flex-shrink: 0;
88
+ }
89
+ .opt-btn {
90
+ font-size: 13px; padding: 6px 14px; border-radius: 6px;
91
+ cursor: pointer; font-weight: 500;
92
+ border: 1px solid rgba(255,255,255,0.12);
93
+ background: rgba(255,255,255,0.06);
94
+ color: rgba(255,255,255,0.8);
95
+ }
96
+ .opt-btn:hover:not(:disabled) { background: rgba(255,255,255,0.1); }
97
+ .opt-btn:disabled { opacity: 0.35; cursor: default; }
98
+ .opt-btn-primary {
99
+ background: rgba(60,120,220,0.5);
100
+ border-color: rgba(60,120,220,0.7);
101
+ color: #fff;
102
+ }
103
+ .opt-btn-primary:hover:not(:disabled) { background: rgba(60,120,220,0.65); }
104
+ /* Light theme */
105
+ [data-bpmnkit-hud-theme="light"] .opt-panel {
106
+ background: rgba(252,252,254,0.98);
107
+ border-color: rgba(0,0,0,0.1);
108
+ color: rgba(0,0,0,0.8);
109
+ box-shadow: 0 8px 32px rgba(0,0,0,0.15);
110
+ }
111
+ [data-bpmnkit-hud-theme="light"] .opt-header { border-bottom-color: rgba(0,0,0,0.08); }
112
+ [data-bpmnkit-hud-theme="light"] .opt-title { color: rgba(0,0,0,0.88); }
113
+ [data-bpmnkit-hud-theme="light"] .opt-subtitle { color: rgba(0,0,0,0.4); }
114
+ [data-bpmnkit-hud-theme="light"] .opt-finding { border-bottom-color: rgba(0,0,0,0.05); }
115
+ [data-bpmnkit-hud-theme="light"] .opt-badge-error { background: rgba(220,50,50,0.1); color: #c00; }
116
+ [data-bpmnkit-hud-theme="light"] .opt-badge-warning { background: rgba(200,130,0,0.12); color: #a60; }
117
+ [data-bpmnkit-hud-theme="light"] .opt-badge-info { background: rgba(0,80,200,0.1); color: #05c; }
118
+ [data-bpmnkit-hud-theme="light"] .opt-finding-msg { color: rgba(0,0,0,0.78); }
119
+ [data-bpmnkit-hud-theme="light"] .opt-finding-sug { color: rgba(0,0,0,0.42); }
120
+ [data-bpmnkit-hud-theme="light"] .opt-empty { color: rgba(0,0,0,0.35); }
121
+ [data-bpmnkit-hud-theme="light"] .opt-result { border-bottom-color: rgba(0,0,0,0.05); }
122
+ [data-bpmnkit-hud-theme="light"] .opt-result-desc { color: rgba(0,0,0,0.75); }
123
+ [data-bpmnkit-hud-theme="light"] .opt-result-open {
124
+ background: rgba(0,80,200,0.08); border-color: rgba(0,80,200,0.25); color: #05c;
125
+ }
126
+ [data-bpmnkit-hud-theme="light"] .opt-result-open:hover { background: rgba(0,80,200,0.14); }
127
+ [data-bpmnkit-hud-theme="light"] .opt-footer { border-top-color: rgba(0,0,0,0.08); }
128
+ [data-bpmnkit-hud-theme="light"] .opt-btn {
129
+ border-color: rgba(0,0,0,0.12); background: rgba(0,0,0,0.04); color: rgba(0,0,0,0.7);
130
+ }
131
+ [data-bpmnkit-hud-theme="light"] .opt-btn:hover:not(:disabled) { background: rgba(0,0,0,0.08); }
132
+ [data-bpmnkit-hud-theme="light"] .opt-btn-primary {
133
+ background: rgba(0,80,200,0.85); border-color: rgba(0,80,200,0.9); color: #fff;
134
+ }
135
+ [data-bpmnkit-hud-theme="light"] .opt-btn-primary:hover:not(:disabled) { background: rgba(0,80,200,1); }
136
+ `;
137
+ document.head.appendChild(style);
138
+ }
139
+ // ── Dialog helpers ────────────────────────────────────────────────────────────
140
+ function makeHeader(title, subtitle) {
141
+ const header = document.createElement("div");
142
+ header.className = "opt-header";
143
+ const h = document.createElement("div");
144
+ h.className = "opt-title";
145
+ h.textContent = title;
146
+ const s = document.createElement("div");
147
+ s.className = "opt-subtitle";
148
+ s.textContent = subtitle;
149
+ header.append(h, s);
150
+ return header;
151
+ }
152
+ function makeFooter(...buttons) {
153
+ const footer = document.createElement("div");
154
+ footer.className = "opt-footer";
155
+ footer.append(...buttons);
156
+ return footer;
157
+ }
158
+ function makeBtn(label, primary = false) {
159
+ const btn = document.createElement("button");
160
+ btn.className = primary ? "opt-btn opt-btn-primary" : "opt-btn";
161
+ btn.textContent = label;
162
+ return btn;
163
+ }
164
+ // ── Dialog ────────────────────────────────────────────────────────────────────
165
+ function showOptimizeDialog(defs, reload, openTab) {
166
+ injectStyles();
167
+ const report = optimize(defs);
168
+ const findings = report.findings;
169
+ const overlay = document.createElement("div");
170
+ overlay.className = "opt-overlay";
171
+ overlay.addEventListener("click", (e) => {
172
+ if (e.target === overlay)
173
+ overlay.remove();
174
+ });
175
+ const panel = document.createElement("div");
176
+ panel.className = "opt-panel";
177
+ function showPhase1() {
178
+ panel.innerHTML = "";
179
+ const fixableCount = findings.filter((f) => f.applyFix !== undefined).length;
180
+ const subtitleText = findings.length === 0
181
+ ? "No issues found"
182
+ : `${findings.length} finding${findings.length !== 1 ? "s" : ""} · ${fixableCount} auto-fixable`;
183
+ panel.append(makeHeader("Optimize Diagram", subtitleText));
184
+ const body = document.createElement("div");
185
+ body.className = "opt-body";
186
+ const checkboxes = new Map();
187
+ if (findings.length === 0) {
188
+ const empty = document.createElement("div");
189
+ empty.className = "opt-empty";
190
+ empty.textContent = "✓ No optimization opportunities found.";
191
+ body.append(empty);
192
+ }
193
+ else {
194
+ for (const finding of findings) {
195
+ const row = document.createElement("div");
196
+ row.className = "opt-finding";
197
+ const cb = document.createElement("input");
198
+ cb.type = "checkbox";
199
+ cb.className = "opt-finding-cb";
200
+ cb.checked = finding.applyFix !== undefined;
201
+ cb.disabled = finding.applyFix === undefined;
202
+ checkboxes.set(finding, cb);
203
+ const badge = document.createElement("span");
204
+ badge.className = `opt-badge opt-badge-${finding.severity}`;
205
+ badge.textContent = finding.severity;
206
+ const fbody = document.createElement("div");
207
+ fbody.className = "opt-finding-body";
208
+ const msg = document.createElement("div");
209
+ msg.className = "opt-finding-msg";
210
+ msg.textContent = finding.message;
211
+ const sug = document.createElement("div");
212
+ sug.className = "opt-finding-sug";
213
+ sug.textContent = finding.suggestion;
214
+ fbody.append(msg, sug);
215
+ row.append(cb, badge, fbody);
216
+ body.append(row);
217
+ }
218
+ }
219
+ const btnClose = makeBtn("Close");
220
+ btnClose.addEventListener("click", () => overlay.remove());
221
+ const btnApply = makeBtn(`Apply ${fixableCount} Fix${fixableCount !== 1 ? "es" : ""}`, true);
222
+ btnApply.disabled = fixableCount === 0;
223
+ btnApply.addEventListener("click", () => {
224
+ const selected = findings.filter((f) => {
225
+ const cb = checkboxes.get(f);
226
+ return f.applyFix !== undefined && cb?.checked === true;
227
+ });
228
+ if (selected.length === 0)
229
+ return;
230
+ const results = [];
231
+ for (const finding of selected) {
232
+ if (!finding.applyFix)
233
+ continue;
234
+ results.push(finding.applyFix(defs));
235
+ }
236
+ reload(Bpmn.export(defs));
237
+ showPhase2(results);
238
+ });
239
+ panel.append(body, makeFooter(btnClose, btnApply));
240
+ }
241
+ function showPhase2(results) {
242
+ panel.innerHTML = "";
243
+ const subtitle = `${results.length} fix${results.length !== 1 ? "es" : ""} applied successfully`;
244
+ panel.append(makeHeader("Fixes Applied", subtitle));
245
+ const body = document.createElement("div");
246
+ body.className = "opt-body";
247
+ for (const result of results) {
248
+ const row = document.createElement("div");
249
+ row.className = "opt-result";
250
+ const icon = document.createElement("div");
251
+ icon.className = "opt-result-icon";
252
+ icon.textContent = "✓";
253
+ const rbody = document.createElement("div");
254
+ rbody.className = "opt-result-body";
255
+ const desc = document.createElement("div");
256
+ desc.className = "opt-result-desc";
257
+ desc.textContent = result.description;
258
+ rbody.append(desc);
259
+ if (result.generated) {
260
+ const gen = result.generated;
261
+ const openBtn = document.createElement("button");
262
+ openBtn.className = "opt-result-open";
263
+ openBtn.textContent = "Open generated process in new tab";
264
+ openBtn.addEventListener("click", () => {
265
+ openTab(Bpmn.export(gen), "Extracted Process");
266
+ });
267
+ rbody.append(openBtn);
268
+ }
269
+ row.append(icon, rbody);
270
+ body.append(row);
271
+ }
272
+ const btnDone = makeBtn("Done", true);
273
+ btnDone.addEventListener("click", () => overlay.remove());
274
+ panel.append(body, makeFooter(btnDone));
275
+ }
276
+ showPhase1();
277
+ overlay.append(panel);
278
+ document.body.append(overlay);
279
+ }
280
+ // ── Plugin ────────────────────────────────────────────────────────────────────
281
+ const OPTIMIZE_ICON = `<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 14L8 7"/><path d="M11 2l.75 2.25L14 5l-2.25.75L11 8l-.75-2.25L8 5l2.25-.75z"/></svg>`;
282
+ /**
283
+ * Creates an optimize plugin that provides a button for triggering
284
+ * the two-phase diagram optimization dialog.
285
+ *
286
+ * The returned `button` should be passed to `initEditorHud` as `optimizeButton`.
287
+ */
288
+ export function createOptimizePlugin(options) {
289
+ const button = document.createElement("button");
290
+ button.title = "Optimize";
291
+ button.innerHTML = OPTIMIZE_ICON;
292
+ button.addEventListener("click", () => {
293
+ const defs = options.getDefinitions();
294
+ if (!defs)
295
+ return;
296
+ showOptimizeDialog(defs, options.reload, options.openTab);
297
+ });
298
+ return {
299
+ name: "optimize",
300
+ install() { },
301
+ button,
302
+ };
303
+ }
304
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export declare function injectProcessRunnerStyles(): void;
2
+ //# sourceMappingURL=css.d.ts.map