@luckydraw/blex 0.1.1 → 0.1.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.
- package/dist/blex.min.global.js +11 -11
- package/dist/blex.min.global.js.map +1 -1
- package/dist/esm/{calendar-HUZDQQN2.js → calendar-PNRNENA4.js} +24 -6
- package/dist/esm/calendar-PNRNENA4.js.map +1 -0
- package/dist/esm/{chunk-SBTGKDKX.js → chunk-JEYTN6MT.js} +92 -16
- package/dist/esm/chunk-JEYTN6MT.js.map +1 -0
- package/dist/esm/{gallery-ISM7FZA3.js → gallery-FCVFZFE7.js} +9 -3
- package/dist/esm/gallery-FCVFZFE7.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/{kanban-XUXVTRX2.js → kanban-FLEZGRIE.js} +51 -4
- package/dist/esm/kanban-FLEZGRIE.js.map +1 -0
- package/dist/esm/react/index.js +1 -1
- package/dist/esm/render.d.ts.map +1 -1
- package/dist/esm/renderers/calendar.d.ts +2 -1
- package/dist/esm/renderers/calendar.d.ts.map +1 -1
- package/dist/esm/renderers/code.d.ts +3 -1
- package/dist/esm/renderers/code.d.ts.map +1 -1
- package/dist/esm/renderers/confirm.d.ts.map +1 -1
- package/dist/esm/renderers/diff.d.ts.map +1 -1
- package/dist/esm/renderers/file-tree.d.ts +3 -1
- package/dist/esm/renderers/file-tree.d.ts.map +1 -1
- package/dist/esm/renderers/form.d.ts.map +1 -1
- package/dist/esm/renderers/gallery.d.ts +2 -1
- package/dist/esm/renderers/gallery.d.ts.map +1 -1
- package/dist/esm/renderers/kanban.d.ts +5 -1
- package/dist/esm/renderers/kanban.d.ts.map +1 -1
- package/dist/esm/renderers/poll.d.ts.map +1 -1
- package/dist/esm/renderers/svg.d.ts.map +1 -1
- package/dist/esm/renderers/table.d.ts +2 -1
- package/dist/esm/renderers/table.d.ts.map +1 -1
- package/dist/esm/renderers/terminal.d.ts.map +1 -1
- package/dist/esm/{types-C42V92x6.d.ts → types-CUQTmRQn.d.ts} +15 -0
- package/dist/esm/types.d.ts +15 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/esm/calendar-HUZDQQN2.js.map +0 -1
- package/dist/esm/chunk-SBTGKDKX.js.map +0 -1
- package/dist/esm/gallery-ISM7FZA3.js.map +0 -1
- package/dist/esm/kanban-XUXVTRX2.js.map +0 -1
|
@@ -42,6 +42,8 @@ var CalendarRenderer = class extends BaseRenderer {
|
|
|
42
42
|
this.buildCalendar(block);
|
|
43
43
|
container.setAttribute("data-blex-ready", "true");
|
|
44
44
|
}
|
|
45
|
+
revertInteraction(_interaction) {
|
|
46
|
+
}
|
|
45
47
|
update(block) {
|
|
46
48
|
if (!this.container) return;
|
|
47
49
|
this.currentBlock = block;
|
|
@@ -191,7 +193,11 @@ var CalendarRenderer = class extends BaseRenderer {
|
|
|
191
193
|
blockId: block.id,
|
|
192
194
|
type: "slot-click",
|
|
193
195
|
payload: { start, end },
|
|
194
|
-
serialized: `Selected time slot: ${start} - ${end}
|
|
196
|
+
serialized: `Selected time slot: ${start} - ${end}`,
|
|
197
|
+
summary: `Selected slot: ${start}`,
|
|
198
|
+
icon: "\u{1F4C5}",
|
|
199
|
+
immediate: false,
|
|
200
|
+
revertable: true
|
|
195
201
|
});
|
|
196
202
|
}));
|
|
197
203
|
grid.appendChild(cell);
|
|
@@ -228,7 +234,11 @@ var CalendarRenderer = class extends BaseRenderer {
|
|
|
228
234
|
blockId: block.id,
|
|
229
235
|
type: "slot-click",
|
|
230
236
|
payload: { start: slotStart, end: slotEnd },
|
|
231
|
-
serialized: `Selected time slot: ${slotStart} - ${slotEnd}
|
|
237
|
+
serialized: `Selected time slot: ${slotStart} - ${slotEnd}`,
|
|
238
|
+
summary: `Selected slot: ${slotStart}`,
|
|
239
|
+
icon: "\u{1F4C5}",
|
|
240
|
+
immediate: false,
|
|
241
|
+
revertable: true
|
|
232
242
|
});
|
|
233
243
|
}));
|
|
234
244
|
col.appendChild(slot);
|
|
@@ -263,7 +273,11 @@ var CalendarRenderer = class extends BaseRenderer {
|
|
|
263
273
|
blockId: block.id,
|
|
264
274
|
type: "slot-click",
|
|
265
275
|
payload: { start: slotStart, end: slotEnd },
|
|
266
|
-
serialized: `Selected time slot: ${slotStart} - ${slotEnd}
|
|
276
|
+
serialized: `Selected time slot: ${slotStart} - ${slotEnd}`,
|
|
277
|
+
summary: `Selected slot: ${slotStart}`,
|
|
278
|
+
icon: "\u{1F4C5}",
|
|
279
|
+
immediate: false,
|
|
280
|
+
revertable: true
|
|
267
281
|
});
|
|
268
282
|
}));
|
|
269
283
|
col.appendChild(slot);
|
|
@@ -292,7 +306,11 @@ var CalendarRenderer = class extends BaseRenderer {
|
|
|
292
306
|
blockId: block.id,
|
|
293
307
|
type: "select",
|
|
294
308
|
payload: { eventId: event.id },
|
|
295
|
-
serialized: `Selected event: ${event.title}
|
|
309
|
+
serialized: `Selected event: ${event.title}`,
|
|
310
|
+
summary: `Viewed "${event.title}"`,
|
|
311
|
+
icon: "\u{1F4C5}",
|
|
312
|
+
immediate: false,
|
|
313
|
+
revertable: true
|
|
296
314
|
});
|
|
297
315
|
}));
|
|
298
316
|
return el;
|
|
@@ -310,5 +328,5 @@ function createCalendarRenderer() {
|
|
|
310
328
|
}
|
|
311
329
|
|
|
312
330
|
export { CalendarRenderer, createCalendarRenderer };
|
|
313
|
-
//# sourceMappingURL=calendar-
|
|
314
|
-
//# sourceMappingURL=calendar-
|
|
331
|
+
//# sourceMappingURL=calendar-PNRNENA4.js.map
|
|
332
|
+
//# sourceMappingURL=calendar-PNRNENA4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/renderers/calendar.ts"],"names":[],"mappings":"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","file":"calendar-PNRNENA4.js","sourcesContent":["import { BaseRenderer } from '../base-renderer.js';\nimport type { ContentBlock, BlockInteraction } from '../types.js';\n\nexport interface CalendarEvent {\n id: string;\n title: string;\n start: string;\n end: string;\n color?: string;\n}\n\nexport type CalendarView = 'month' | 'week' | 'day';\n\nexport interface CalendarData {\n events: CalendarEvent[];\n view?: CalendarView;\n initialDate?: string;\n}\n\nconst DAY_NAMES = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nconst MONTH_NAMES = [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n];\n\n/** Format a Date as \"YYYY-MM-DD\". */\nfunction formatDate(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const d = String(date.getDate()).padStart(2, '0');\n return `${y}-${m}-${d}`;\n}\n\n/** Return the first day (Sunday) of the week containing date. */\nfunction getWeekStart(date: Date): Date {\n const d = new Date(date);\n d.setDate(d.getDate() - d.getDay());\n return d;\n}\n\nexport class CalendarRenderer extends BaseRenderer<CalendarData> {\n private currentBlock: ContentBlock<CalendarData> | null = null;\n private viewDate: Date = new Date();\n private currentView: CalendarView = 'month';\n\n render(block: ContentBlock<CalendarData>, container: HTMLElement): void {\n this.container = container;\n this.currentBlock = block;\n this.currentView = block.data.view ?? 'month';\n this.viewDate = block.data.initialDate\n ? new Date(block.data.initialDate)\n : new Date();\n this.buildCalendar(block);\n container.setAttribute('data-blex-ready', 'true');\n }\n\n revertInteraction(_interaction: BlockInteraction): void {\n // Calendar interactions (select, slot-click) don't mutate local state,\n // so revert is a no-op on the renderer side. The consumer just removes the chip.\n }\n\n update(block: ContentBlock<CalendarData>): void {\n if (!this.container) return;\n this.currentBlock = block;\n if (block.data.view) {\n this.currentView = block.data.view;\n }\n this.container.innerHTML = '';\n this.buildCalendar(block);\n }\n\n // ---------------------------------------------------------------------------\n // Top-level builder\n // ---------------------------------------------------------------------------\n\n private buildCalendar(block: ContentBlock<CalendarData>): void {\n const container = this.container!;\n\n const root = document.createElement('div');\n root.className = 'blex-calendar';\n root.setAttribute('data-testid', `blex-calendar-${block.id}`);\n\n root.appendChild(this.buildViewToggle(block));\n root.appendChild(this.buildNav(block));\n\n const grid = document.createElement('div');\n grid.className = 'blex-calendar__grid';\n\n if (this.currentView === 'month') {\n this.buildMonthGrid(grid, block);\n } else if (this.currentView === 'week') {\n this.buildWeekGrid(grid, block);\n } else {\n this.buildDayGrid(grid, block);\n }\n\n root.appendChild(grid);\n container.appendChild(root);\n }\n\n // ---------------------------------------------------------------------------\n // View toggle\n // ---------------------------------------------------------------------------\n\n private buildViewToggle(block: ContentBlock<CalendarData>): HTMLElement {\n const bar = document.createElement('div');\n bar.className = 'blex-calendar__view-toggle';\n\n const views: CalendarView[] = ['month', 'week', 'day'];\n for (const v of views) {\n const btn = document.createElement('button');\n btn.className = 'blex-calendar__view-btn';\n btn.setAttribute('data-testid', `blex-calendar-view-${v}`);\n btn.textContent = v.charAt(0).toUpperCase() + v.slice(1);\n if (v === this.currentView) {\n btn.setAttribute('aria-pressed', 'true');\n }\n\n this.addListener(btn, 'click', (() => {\n this.currentView = v;\n this.container!.innerHTML = '';\n this.buildCalendar(block);\n }) as EventListener);\n\n bar.appendChild(btn);\n }\n\n return bar;\n }\n\n // ---------------------------------------------------------------------------\n // Navigation bar\n // ---------------------------------------------------------------------------\n\n private buildNav(block: ContentBlock<CalendarData>): HTMLElement {\n const nav = document.createElement('div');\n nav.className = 'blex-calendar__nav';\n\n const prev = document.createElement('button');\n prev.className = 'blex-calendar__nav-btn';\n prev.setAttribute('data-testid', `blex-calendar-prev-${block.id}`);\n prev.textContent = '‹';\n this.addListener(prev, 'click', (() => {\n this.navigate(-1);\n }) as EventListener);\n\n const title = document.createElement('span');\n title.className = 'blex-calendar__title';\n title.textContent = this.getHeaderTitle();\n\n const next = document.createElement('button');\n next.className = 'blex-calendar__nav-btn';\n next.setAttribute('data-testid', `blex-calendar-next-${block.id}`);\n next.textContent = '›';\n this.addListener(next, 'click', (() => {\n this.navigate(1);\n }) as EventListener);\n\n nav.appendChild(prev);\n nav.appendChild(title);\n nav.appendChild(next);\n return nav;\n }\n\n private getHeaderTitle(): string {\n if (this.currentView === 'month') {\n return `${MONTH_NAMES[this.viewDate.getMonth()]} ${this.viewDate.getFullYear()}`;\n } else if (this.currentView === 'week') {\n const start = getWeekStart(this.viewDate);\n const end = new Date(start);\n end.setDate(end.getDate() + 6);\n return `${MONTH_NAMES[start.getMonth()]} ${start.getDate()} – ${end.getDate()}, ${start.getFullYear()}`;\n } else {\n return `${MONTH_NAMES[this.viewDate.getMonth()]} ${this.viewDate.getDate()}, ${this.viewDate.getFullYear()}`;\n }\n }\n\n private navigate(direction: number): void {\n if (this.currentView === 'month') {\n this.viewDate.setMonth(this.viewDate.getMonth() + direction);\n } else if (this.currentView === 'week') {\n this.viewDate.setDate(this.viewDate.getDate() + direction * 7);\n } else {\n this.viewDate.setDate(this.viewDate.getDate() + direction);\n }\n this.container!.innerHTML = '';\n this.buildCalendar(this.currentBlock!);\n }\n\n // ---------------------------------------------------------------------------\n // Month grid\n // ---------------------------------------------------------------------------\n\n private buildMonthGrid(grid: HTMLElement, block: ContentBlock<CalendarData>): void {\n const year = this.viewDate.getFullYear();\n const month = this.viewDate.getMonth();\n\n // Day-of-week header row\n for (const name of DAY_NAMES) {\n const hdr = document.createElement('div');\n hdr.className = 'blex-calendar__day-header';\n hdr.textContent = name;\n grid.appendChild(hdr);\n }\n\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n\n // Blank cells before the 1st\n for (let i = 0; i < firstDay; i++) {\n const blank = document.createElement('div');\n blank.className = 'blex-calendar__day blex-calendar__day--filler';\n grid.appendChild(blank);\n }\n\n // Day cells\n for (let day = 1; day <= daysInMonth; day++) {\n const mm = String(month + 1).padStart(2, '0');\n const dd = String(day).padStart(2, '0');\n const dateStr = `${year}-${mm}-${dd}`;\n const cell = document.createElement('div');\n cell.className = 'blex-calendar__day';\n cell.setAttribute('data-testid', `blex-calendar-day-${dateStr}`);\n cell.setAttribute('data-date', dateStr);\n\n const dayNum = document.createElement('span');\n dayNum.className = 'blex-calendar__day-number';\n dayNum.textContent = String(day);\n cell.appendChild(dayNum);\n\n // Events inside this day cell\n const dayEvents = this.getEventsForDate(block.data.events, dateStr);\n for (const event of dayEvents) {\n cell.appendChild(this.buildEventEl(event, block));\n }\n\n // Clicking on the day cell (not on an event) emits slot-click\n this.addListener(cell, 'click', ((e: MouseEvent) => {\n if ((e.target as HTMLElement).closest('.blex-calendar__event')) return;\n const start = `${dateStr}T00:00`;\n const end = `${dateStr}T23:59`;\n this.emit({\n blockId: block.id,\n type: 'slot-click',\n payload: { start, end },\n serialized: `Selected time slot: ${start} - ${end}`,\n summary: `Selected slot: ${start}`,\n icon: '📅',\n immediate: false,\n revertable: true,\n });\n }) as EventListener);\n\n grid.appendChild(cell);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Week grid (structural)\n // ---------------------------------------------------------------------------\n\n private buildWeekGrid(grid: HTMLElement, block: ContentBlock<CalendarData>): void {\n const weekStart = getWeekStart(this.viewDate);\n\n for (let i = 0; i < 7; i++) {\n const day = new Date(weekStart);\n day.setDate(weekStart.getDate() + i);\n const dateStr = formatDate(day);\n\n const col = document.createElement('div');\n col.className = 'blex-calendar__day';\n col.setAttribute('data-testid', `blex-calendar-day-${dateStr}`);\n col.setAttribute('data-date', dateStr);\n\n const hdr = document.createElement('div');\n hdr.className = 'blex-calendar__day-header';\n hdr.textContent = `${DAY_NAMES[day.getDay()]} ${day.getDate()}`;\n col.appendChild(hdr);\n\n // Hourly slots\n for (let hour = 0; hour < 24; hour++) {\n const hourStr = String(hour).padStart(2, '0');\n const slotStart = `${dateStr}T${hourStr}:00`;\n const slotEnd = `${dateStr}T${hourStr}:59`;\n\n const slot = document.createElement('div');\n slot.className = 'blex-calendar__slot';\n slot.setAttribute('data-start', slotStart);\n slot.setAttribute('data-end', slotEnd);\n slot.textContent = `${hourStr}:00`;\n\n this.addListener(slot, 'click', (() => {\n this.emit({\n blockId: block.id,\n type: 'slot-click',\n payload: { start: slotStart, end: slotEnd },\n serialized: `Selected time slot: ${slotStart} - ${slotEnd}`,\n summary: `Selected slot: ${slotStart}`,\n icon: '📅',\n immediate: false,\n revertable: true,\n });\n }) as EventListener);\n\n col.appendChild(slot);\n }\n\n // Events for this day\n const dayEvents = this.getEventsForDate(block.data.events, dateStr);\n for (const event of dayEvents) {\n col.appendChild(this.buildEventEl(event, block));\n }\n\n grid.appendChild(col);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Day grid (structural)\n // ---------------------------------------------------------------------------\n\n private buildDayGrid(grid: HTMLElement, block: ContentBlock<CalendarData>): void {\n const dateStr = formatDate(this.viewDate);\n\n const col = document.createElement('div');\n col.className = 'blex-calendar__day';\n col.setAttribute('data-testid', `blex-calendar-day-${dateStr}`);\n col.setAttribute('data-date', dateStr);\n\n // Hourly slots\n for (let hour = 0; hour < 24; hour++) {\n const hourStr = String(hour).padStart(2, '0');\n const slotStart = `${dateStr}T${hourStr}:00`;\n const slotEnd = `${dateStr}T${hourStr}:59`;\n\n const slot = document.createElement('div');\n slot.className = 'blex-calendar__slot';\n slot.setAttribute('data-start', slotStart);\n slot.setAttribute('data-end', slotEnd);\n slot.textContent = `${hourStr}:00`;\n\n this.addListener(slot, 'click', (() => {\n this.emit({\n blockId: block.id,\n type: 'slot-click',\n payload: { start: slotStart, end: slotEnd },\n serialized: `Selected time slot: ${slotStart} - ${slotEnd}`,\n summary: `Selected slot: ${slotStart}`,\n icon: '📅',\n immediate: false,\n revertable: true,\n });\n }) as EventListener);\n\n col.appendChild(slot);\n }\n\n // Events for this day\n const dayEvents = this.getEventsForDate(block.data.events, dateStr);\n for (const event of dayEvents) {\n col.appendChild(this.buildEventEl(event, block));\n }\n\n grid.appendChild(col);\n }\n\n // ---------------------------------------------------------------------------\n // Shared helpers\n // ---------------------------------------------------------------------------\n\n private buildEventEl(event: CalendarEvent, block: ContentBlock<CalendarData>): HTMLElement {\n const el = document.createElement('div');\n el.className = 'blex-calendar__event';\n el.setAttribute('data-testid', `blex-calendar-event-${event.id}`);\n el.setAttribute('data-event-id', event.id);\n el.textContent = event.title;\n\n if (event.color) {\n el.style.backgroundColor = event.color;\n }\n\n this.addListener(el, 'click', ((e: MouseEvent) => {\n e.stopPropagation();\n this.emit({\n blockId: block.id,\n type: 'select',\n payload: { eventId: event.id },\n serialized: `Selected event: ${event.title}`,\n summary: `Viewed \"${event.title}\"`,\n icon: '📅',\n immediate: false,\n revertable: true,\n });\n }) as EventListener);\n\n return el;\n }\n\n private getEventsForDate(events: CalendarEvent[], dateStr: string): CalendarEvent[] {\n return events.filter((event) => {\n const eventStart = event.start.slice(0, 10);\n const eventEnd = event.end.slice(0, 10);\n return dateStr >= eventStart && dateStr <= eventEnd;\n });\n }\n}\n\nexport function createCalendarRenderer(): CalendarRenderer {\n return new CalendarRenderer();\n}\n"]}
|
|
@@ -563,6 +563,11 @@ async function renderBlock(block, container, options) {
|
|
|
563
563
|
renderer.onInteraction(callback);
|
|
564
564
|
}
|
|
565
565
|
},
|
|
566
|
+
revertInteraction(interaction) {
|
|
567
|
+
if (renderer?.revertInteraction) {
|
|
568
|
+
renderer.revertInteraction(interaction);
|
|
569
|
+
}
|
|
570
|
+
},
|
|
566
571
|
destroy() {
|
|
567
572
|
renderer?.destroy();
|
|
568
573
|
renderer = null;
|
|
@@ -611,7 +616,10 @@ var ConfirmRenderer = class extends BaseRenderer {
|
|
|
611
616
|
blockId: block.id,
|
|
612
617
|
type: "click",
|
|
613
618
|
payload: { button: label },
|
|
614
|
-
serialized: `User confirmed: ${data.message} \u2192 ${label}
|
|
619
|
+
serialized: `User confirmed: ${data.message} \u2192 ${label}`,
|
|
620
|
+
summary: `Confirmed: ${label}`,
|
|
621
|
+
icon: "\u2713",
|
|
622
|
+
immediate: true
|
|
615
623
|
});
|
|
616
624
|
});
|
|
617
625
|
btnGroup.appendChild(btn);
|
|
@@ -713,11 +721,15 @@ Selected: ${selectedLabels.join(", ")}`;
|
|
|
713
721
|
serialized += `
|
|
714
722
|
Write-in: ${this.writeInValue}`;
|
|
715
723
|
}
|
|
724
|
+
const summary = selectedLabels.length > 0 ? `Voted: ${selectedLabels.join(", ")}${this.writeInValue ? ` + "${this.writeInValue}"` : ""}` : `Write-in: ${this.writeInValue}`;
|
|
716
725
|
this.emit({
|
|
717
726
|
blockId: block.id,
|
|
718
727
|
type: "submit",
|
|
719
728
|
payload,
|
|
720
|
-
serialized
|
|
729
|
+
serialized,
|
|
730
|
+
summary,
|
|
731
|
+
icon: "\u{1F5F3}",
|
|
732
|
+
immediate: true
|
|
721
733
|
});
|
|
722
734
|
});
|
|
723
735
|
wrapper.appendChild(submitBtn);
|
|
@@ -943,7 +955,10 @@ var SvgRenderer = class extends BaseRenderer {
|
|
|
943
955
|
blockId: block.id,
|
|
944
956
|
type: "click",
|
|
945
957
|
payload: { action: "download" },
|
|
946
|
-
serialized: `Downloaded SVG${title ? `: ${title}` : ""}
|
|
958
|
+
serialized: `Downloaded SVG${title ? `: ${title}` : ""}`,
|
|
959
|
+
summary: `Downloaded SVG${title ? `: ${title}` : ""}`,
|
|
960
|
+
icon: "\u2B07",
|
|
961
|
+
immediate: true
|
|
947
962
|
});
|
|
948
963
|
});
|
|
949
964
|
actions.appendChild(downloadBtn);
|
|
@@ -957,7 +972,10 @@ var SvgRenderer = class extends BaseRenderer {
|
|
|
957
972
|
blockId: block.id,
|
|
958
973
|
type: "click",
|
|
959
974
|
payload: { action: "copy" },
|
|
960
|
-
serialized: `Copied SVG${title ? `: ${title}` : ""}
|
|
975
|
+
serialized: `Copied SVG${title ? `: ${title}` : ""}`,
|
|
976
|
+
summary: `Copied SVG${title ? `: ${title}` : ""}`,
|
|
977
|
+
icon: "\u{1F4CB}",
|
|
978
|
+
immediate: true
|
|
961
979
|
});
|
|
962
980
|
});
|
|
963
981
|
actions.appendChild(copyBtn);
|
|
@@ -985,6 +1003,13 @@ var TableRenderer = class extends BaseRenderer {
|
|
|
985
1003
|
this._build(block);
|
|
986
1004
|
container.setAttribute("data-blex-ready", "true");
|
|
987
1005
|
}
|
|
1006
|
+
revertInteraction(interaction) {
|
|
1007
|
+
if (!this.container || !this.currentBlock) return;
|
|
1008
|
+
if (interaction.type !== "select") return;
|
|
1009
|
+
this.selectedRows.clear();
|
|
1010
|
+
this.container.innerHTML = "";
|
|
1011
|
+
this._build(this.currentBlock);
|
|
1012
|
+
}
|
|
988
1013
|
update(block) {
|
|
989
1014
|
if (!this.container) return;
|
|
990
1015
|
this.currentBlock = block;
|
|
@@ -1094,6 +1119,7 @@ var TableRenderer = class extends BaseRenderer {
|
|
|
1094
1119
|
separatorLine,
|
|
1095
1120
|
...dataLines
|
|
1096
1121
|
].join("\n");
|
|
1122
|
+
const count = selectedIndices.length;
|
|
1097
1123
|
this.emit({
|
|
1098
1124
|
blockId: block.id,
|
|
1099
1125
|
type: "select",
|
|
@@ -1101,7 +1127,11 @@ var TableRenderer = class extends BaseRenderer {
|
|
|
1101
1127
|
selectedRows: selectedIndices,
|
|
1102
1128
|
columns
|
|
1103
1129
|
},
|
|
1104
|
-
serialized
|
|
1130
|
+
serialized,
|
|
1131
|
+
summary: `Selected ${count} row${count !== 1 ? "s" : ""}`,
|
|
1132
|
+
icon: "\u2610",
|
|
1133
|
+
immediate: false,
|
|
1134
|
+
revertable: true
|
|
1105
1135
|
});
|
|
1106
1136
|
}
|
|
1107
1137
|
};
|
|
@@ -1115,14 +1145,25 @@ var CodeRenderer = class extends BaseRenderer {
|
|
|
1115
1145
|
super(...arguments);
|
|
1116
1146
|
this.selectedLines = /* @__PURE__ */ new Set();
|
|
1117
1147
|
this.lastClickedLine = null;
|
|
1148
|
+
this.currentBlock = null;
|
|
1149
|
+
}
|
|
1150
|
+
revertInteraction(interaction) {
|
|
1151
|
+
if (!this.container || !this.currentBlock) return;
|
|
1152
|
+
if (interaction.type !== "select") return;
|
|
1153
|
+
this.selectedLines.clear();
|
|
1154
|
+
this.lastClickedLine = null;
|
|
1155
|
+
this.container.innerHTML = "";
|
|
1156
|
+
this._build(this.currentBlock);
|
|
1118
1157
|
}
|
|
1119
1158
|
render(block, container) {
|
|
1159
|
+
this.currentBlock = block;
|
|
1120
1160
|
this.container = container;
|
|
1121
1161
|
this._build(block);
|
|
1122
1162
|
container.setAttribute("data-blex-ready", "true");
|
|
1123
1163
|
}
|
|
1124
1164
|
update(block) {
|
|
1125
1165
|
if (!this.container) return;
|
|
1166
|
+
this.currentBlock = block;
|
|
1126
1167
|
const lines = block.data.code.split("\n");
|
|
1127
1168
|
for (const lineNum of Array.from(this.selectedLines)) {
|
|
1128
1169
|
if (lineNum > lines.length) this.selectedLines.delete(lineNum);
|
|
@@ -1217,6 +1258,7 @@ var CodeRenderer = class extends BaseRenderer {
|
|
|
1217
1258
|
const serialized = `\`\`\`${langTag}
|
|
1218
1259
|
${selectedCode}
|
|
1219
1260
|
\`\`\``;
|
|
1261
|
+
const lineRange = sortedLines.length === 1 ? `line ${sortedLines[0]}` : `lines ${sortedLines[0]}-${sortedLines[sortedLines.length - 1]}`;
|
|
1220
1262
|
this.emit({
|
|
1221
1263
|
blockId: block.id,
|
|
1222
1264
|
type: "select",
|
|
@@ -1224,7 +1266,11 @@ ${selectedCode}
|
|
|
1224
1266
|
lines: sortedLines,
|
|
1225
1267
|
...language !== void 0 && { language }
|
|
1226
1268
|
},
|
|
1227
|
-
serialized
|
|
1269
|
+
serialized,
|
|
1270
|
+
summary: `Selected ${lineRange}`,
|
|
1271
|
+
icon: "< >",
|
|
1272
|
+
immediate: false,
|
|
1273
|
+
revertable: true
|
|
1228
1274
|
});
|
|
1229
1275
|
}
|
|
1230
1276
|
};
|
|
@@ -1313,7 +1359,10 @@ var DiffRenderer = class extends BaseRenderer {
|
|
|
1313
1359
|
blockId: block.id,
|
|
1314
1360
|
type: "apply",
|
|
1315
1361
|
payload: { hunks },
|
|
1316
|
-
serialized: `Applied diff to ${filename ?? "file"}
|
|
1362
|
+
serialized: `Applied diff to ${filename ?? "file"}`,
|
|
1363
|
+
summary: `Applied diff${filename ? `: ${filename}` : ""}`,
|
|
1364
|
+
icon: "\u2705",
|
|
1365
|
+
immediate: true
|
|
1317
1366
|
});
|
|
1318
1367
|
});
|
|
1319
1368
|
actions.appendChild(applyBtn);
|
|
@@ -1326,7 +1375,10 @@ var DiffRenderer = class extends BaseRenderer {
|
|
|
1326
1375
|
blockId: block.id,
|
|
1327
1376
|
type: "reject",
|
|
1328
1377
|
payload: { hunks },
|
|
1329
|
-
serialized: `Rejected diff to ${filename ?? "file"}
|
|
1378
|
+
serialized: `Rejected diff to ${filename ?? "file"}`,
|
|
1379
|
+
summary: `Rejected diff${filename ? `: ${filename}` : ""}`,
|
|
1380
|
+
icon: "\u274C",
|
|
1381
|
+
immediate: true
|
|
1330
1382
|
});
|
|
1331
1383
|
});
|
|
1332
1384
|
actions.appendChild(rejectBtn);
|
|
@@ -1344,8 +1396,10 @@ var FileTreeRenderer = class extends BaseRenderer {
|
|
|
1344
1396
|
super(...arguments);
|
|
1345
1397
|
this.expandedPaths = /* @__PURE__ */ new Set();
|
|
1346
1398
|
this.selectedPaths = /* @__PURE__ */ new Set();
|
|
1399
|
+
this.currentBlock = null;
|
|
1347
1400
|
}
|
|
1348
1401
|
render(block, container) {
|
|
1402
|
+
this.currentBlock = block;
|
|
1349
1403
|
this.container = container;
|
|
1350
1404
|
if (block.data.expanded) {
|
|
1351
1405
|
for (const p of block.data.expanded) this.expandedPaths.add(p);
|
|
@@ -1353,8 +1407,16 @@ var FileTreeRenderer = class extends BaseRenderer {
|
|
|
1353
1407
|
this.buildTree(block);
|
|
1354
1408
|
container.setAttribute("data-blex-ready", "true");
|
|
1355
1409
|
}
|
|
1410
|
+
revertInteraction(interaction) {
|
|
1411
|
+
if (!this.container || !this.currentBlock) return;
|
|
1412
|
+
if (interaction.type !== "select") return;
|
|
1413
|
+
this.selectedPaths.clear();
|
|
1414
|
+
this.container.innerHTML = "";
|
|
1415
|
+
this.buildTree(this.currentBlock);
|
|
1416
|
+
}
|
|
1356
1417
|
update(block) {
|
|
1357
1418
|
if (!this.container) return;
|
|
1419
|
+
this.currentBlock = block;
|
|
1358
1420
|
this.container.innerHTML = "";
|
|
1359
1421
|
this.buildTree(block);
|
|
1360
1422
|
}
|
|
@@ -1426,12 +1488,19 @@ var FileTreeRenderer = class extends BaseRenderer {
|
|
|
1426
1488
|
}
|
|
1427
1489
|
emitSelection(block) {
|
|
1428
1490
|
const paths = Array.from(this.selectedPaths).sort();
|
|
1491
|
+
const count = paths.length;
|
|
1492
|
+
const lastPath = paths[paths.length - 1] ?? "";
|
|
1493
|
+
const fileName = lastPath.split("/").pop() ?? lastPath;
|
|
1429
1494
|
this.emit({
|
|
1430
1495
|
blockId: block.id,
|
|
1431
1496
|
type: "select",
|
|
1432
1497
|
payload: { paths },
|
|
1433
1498
|
serialized: `Selected files:
|
|
1434
|
-
${paths.join("\n")}
|
|
1499
|
+
${paths.join("\n")}`,
|
|
1500
|
+
summary: count === 1 ? `Selected ${fileName}` : `Selected ${count} files`,
|
|
1501
|
+
icon: "\u{1F4C1}",
|
|
1502
|
+
immediate: false,
|
|
1503
|
+
revertable: true
|
|
1435
1504
|
});
|
|
1436
1505
|
}
|
|
1437
1506
|
formatSize(bytes) {
|
|
@@ -1476,12 +1545,16 @@ var FormRenderer = class extends BaseRenderer {
|
|
|
1476
1545
|
e.preventDefault();
|
|
1477
1546
|
if (this.validate(fields)) {
|
|
1478
1547
|
const serializedPairs = Object.entries(this.values).map(([k, v]) => `${k}: ${v}`).join("\n");
|
|
1548
|
+
const fieldCount = Object.keys(this.values).length;
|
|
1479
1549
|
this.emit({
|
|
1480
1550
|
blockId: block.id,
|
|
1481
1551
|
type: "submit",
|
|
1482
1552
|
payload: { ...this.values },
|
|
1483
1553
|
serialized: `Form submission${title ? ` (${title})` : ""}:
|
|
1484
|
-
${serializedPairs}
|
|
1554
|
+
${serializedPairs}`,
|
|
1555
|
+
summary: `Submitted${title ? `: ${title}` : ` form (${fieldCount} fields)`}`,
|
|
1556
|
+
icon: "\u{1F4CB}",
|
|
1557
|
+
immediate: true
|
|
1485
1558
|
});
|
|
1486
1559
|
} else {
|
|
1487
1560
|
this.container.innerHTML = "";
|
|
@@ -1743,7 +1816,10 @@ var TerminalRenderer = class extends BaseRenderer {
|
|
|
1743
1816
|
blockId: block.id,
|
|
1744
1817
|
type: "click",
|
|
1745
1818
|
payload: { action: "copy" },
|
|
1746
|
-
serialized: `Copied terminal output${command ? ` from: ${command}` : ""}
|
|
1819
|
+
serialized: `Copied terminal output${command ? ` from: ${command}` : ""}`,
|
|
1820
|
+
summary: `Copied output${command ? `: ${command}` : ""}`,
|
|
1821
|
+
icon: "\u{1F4CB}",
|
|
1822
|
+
immediate: true
|
|
1747
1823
|
});
|
|
1748
1824
|
});
|
|
1749
1825
|
wrapper.appendChild(copyBtn);
|
|
@@ -1910,15 +1986,15 @@ function registerDefaults() {
|
|
|
1910
1986
|
return createChartRenderer;
|
|
1911
1987
|
});
|
|
1912
1988
|
registerLazyBlockType("kanban", async () => {
|
|
1913
|
-
const { createKanbanRenderer } = await import('./kanban-
|
|
1989
|
+
const { createKanbanRenderer } = await import('./kanban-FLEZGRIE.js');
|
|
1914
1990
|
return createKanbanRenderer;
|
|
1915
1991
|
});
|
|
1916
1992
|
registerLazyBlockType("calendar", async () => {
|
|
1917
|
-
const { createCalendarRenderer } = await import('./calendar-
|
|
1993
|
+
const { createCalendarRenderer } = await import('./calendar-PNRNENA4.js');
|
|
1918
1994
|
return createCalendarRenderer;
|
|
1919
1995
|
});
|
|
1920
1996
|
registerLazyBlockType("gallery", async () => {
|
|
1921
|
-
const { createGalleryRenderer } = await import('./gallery-
|
|
1997
|
+
const { createGalleryRenderer } = await import('./gallery-FCVFZFE7.js');
|
|
1922
1998
|
return createGalleryRenderer;
|
|
1923
1999
|
});
|
|
1924
2000
|
const builtIns = [
|
|
@@ -1949,5 +2025,5 @@ function registerDefaults() {
|
|
|
1949
2025
|
}
|
|
1950
2026
|
|
|
1951
2027
|
export { getRegisteredTypes, hasBlockType, isBuiltIn, registerBlockType, registerDefaults, registerLazyBlockType, renderBlock, unregisterBlockType };
|
|
1952
|
-
//# sourceMappingURL=chunk-
|
|
1953
|
-
//# sourceMappingURL=chunk-
|
|
2028
|
+
//# sourceMappingURL=chunk-JEYTN6MT.js.map
|
|
2029
|
+
//# sourceMappingURL=chunk-JEYTN6MT.js.map
|