@mieweb/ui 0.11.0-dev.44 → 0.11.0-dev.45
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/ag-grid.cjs +2 -2
- package/dist/ag-grid.js +1 -1
- package/dist/{chunk-AHYDJN4H.cjs → chunk-2XHPPOXY.cjs} +32 -32
- package/dist/{chunk-AHYDJN4H.cjs.map → chunk-2XHPPOXY.cjs.map} +1 -1
- package/dist/{chunk-3IKIRGHI.cjs → chunk-3H6BQV2D.cjs} +6 -6
- package/dist/{chunk-3IKIRGHI.cjs.map → chunk-3H6BQV2D.cjs.map} +1 -1
- package/dist/{chunk-IIV5GNSK.cjs → chunk-3PT4B4JT.cjs} +4 -4
- package/dist/{chunk-IIV5GNSK.cjs.map → chunk-3PT4B4JT.cjs.map} +1 -1
- package/dist/{chunk-GLG6UE2H.cjs → chunk-3SEQVGLH.cjs} +4 -4
- package/dist/{chunk-GLG6UE2H.cjs.map → chunk-3SEQVGLH.cjs.map} +1 -1
- package/dist/{chunk-JUY2JLFL.js → chunk-3XDU7XIC.js} +3 -3
- package/dist/{chunk-JUY2JLFL.js.map → chunk-3XDU7XIC.js.map} +1 -1
- package/dist/{chunk-LQ22CY7X.js → chunk-46ZUORUE.js} +5 -5
- package/dist/{chunk-LQ22CY7X.js.map → chunk-46ZUORUE.js.map} +1 -1
- package/dist/{chunk-CKECOCYJ.js → chunk-4IOIDS2Z.js} +3 -3
- package/dist/{chunk-CKECOCYJ.js.map → chunk-4IOIDS2Z.js.map} +1 -1
- package/dist/{chunk-F7SZSOB3.js → chunk-6PCA5H47.js} +3 -3
- package/dist/{chunk-F7SZSOB3.js.map → chunk-6PCA5H47.js.map} +1 -1
- package/dist/{chunk-ULEX7OOJ.js → chunk-6Y6W5DUY.js} +4 -4
- package/dist/{chunk-ULEX7OOJ.js.map → chunk-6Y6W5DUY.js.map} +1 -1
- package/dist/{chunk-S7AMZ4RD.cjs → chunk-7K6SW4VB.cjs} +4 -4
- package/dist/{chunk-S7AMZ4RD.cjs.map → chunk-7K6SW4VB.cjs.map} +1 -1
- package/dist/{chunk-KY67AMQ5.cjs → chunk-7MF3O3BU.cjs} +4 -4
- package/dist/{chunk-KY67AMQ5.cjs.map → chunk-7MF3O3BU.cjs.map} +1 -1
- package/dist/{chunk-Z3WMDVMR.cjs → chunk-7QNBPB7F.cjs} +9 -5
- package/dist/chunk-7QNBPB7F.cjs.map +1 -0
- package/dist/{chunk-YFWDS6MX.js → chunk-AB24H2RM.js} +3 -3
- package/dist/{chunk-YFWDS6MX.js.map → chunk-AB24H2RM.js.map} +1 -1
- package/dist/{chunk-DIIXY6EB.js → chunk-AQBZEN43.js} +5 -5
- package/dist/{chunk-DIIXY6EB.js.map → chunk-AQBZEN43.js.map} +1 -1
- package/dist/{chunk-2W73UQ3T.js → chunk-BPYI7BDC.js} +3 -3
- package/dist/{chunk-2W73UQ3T.js.map → chunk-BPYI7BDC.js.map} +1 -1
- package/dist/{chunk-7U7SONM5.js → chunk-CVCUQ2MZ.js} +3 -3
- package/dist/{chunk-7U7SONM5.js.map → chunk-CVCUQ2MZ.js.map} +1 -1
- package/dist/{chunk-PWXDRFJL.cjs → chunk-DHEOWRIE.cjs} +6 -6
- package/dist/{chunk-PWXDRFJL.cjs.map → chunk-DHEOWRIE.cjs.map} +1 -1
- package/dist/{chunk-OYUIEJPN.js → chunk-GTRYDFMT.js} +38 -10
- package/dist/chunk-GTRYDFMT.js.map +1 -0
- package/dist/{chunk-2FZYZ4HT.cjs → chunk-HDSYYQYM.cjs} +4 -4
- package/dist/{chunk-2FZYZ4HT.cjs.map → chunk-HDSYYQYM.cjs.map} +1 -1
- package/dist/{chunk-HH7PWD5I.cjs → chunk-HOE2U27V.cjs} +21 -21
- package/dist/{chunk-HH7PWD5I.cjs.map → chunk-HOE2U27V.cjs.map} +1 -1
- package/dist/{chunk-JCIQIR5V.js → chunk-IGUDEWIW.js} +4 -4
- package/dist/{chunk-JCIQIR5V.js.map → chunk-IGUDEWIW.js.map} +1 -1
- package/dist/{chunk-2KK4WZ7Y.cjs → chunk-IKHK4GTF.cjs} +4 -4
- package/dist/{chunk-2KK4WZ7Y.cjs.map → chunk-IKHK4GTF.cjs.map} +1 -1
- package/dist/{chunk-YVKBXNPK.js → chunk-JBNQ2L3K.js} +10 -6
- package/dist/chunk-JBNQ2L3K.js.map +1 -0
- package/dist/{chunk-GU6TPVXF.cjs → chunk-JK2IWOI7.cjs} +6 -6
- package/dist/{chunk-GU6TPVXF.cjs.map → chunk-JK2IWOI7.cjs.map} +1 -1
- package/dist/{chunk-TZKBW4GA.cjs → chunk-K76UNS22.cjs} +6 -6
- package/dist/{chunk-TZKBW4GA.cjs.map → chunk-K76UNS22.cjs.map} +1 -1
- package/dist/{chunk-DAAJ3B2T.js → chunk-KP72MDFB.js} +4 -4
- package/dist/{chunk-DAAJ3B2T.js.map → chunk-KP72MDFB.js.map} +1 -1
- package/dist/{chunk-MLCIINXT.js → chunk-LBUXS6FJ.js} +4 -4
- package/dist/{chunk-MLCIINXT.js.map → chunk-LBUXS6FJ.js.map} +1 -1
- package/dist/{chunk-GG3IK5TL.cjs → chunk-MQK2D6I6.cjs} +9 -9
- package/dist/{chunk-GG3IK5TL.cjs.map → chunk-MQK2D6I6.cjs.map} +1 -1
- package/dist/{chunk-IPHJQ6CF.js → chunk-MQSGJB2B.js} +5 -5
- package/dist/{chunk-IPHJQ6CF.js.map → chunk-MQSGJB2B.js.map} +1 -1
- package/dist/{chunk-2GBVJHWN.cjs → chunk-NH5JOZLG.cjs} +13 -13
- package/dist/{chunk-2GBVJHWN.cjs.map → chunk-NH5JOZLG.cjs.map} +1 -1
- package/dist/{chunk-NWU634SO.cjs → chunk-O2EAHOXM.cjs} +4 -4
- package/dist/{chunk-NWU634SO.cjs.map → chunk-O2EAHOXM.cjs.map} +1 -1
- package/dist/{chunk-JUYBJLPI.cjs → chunk-O7Y56J4R.cjs} +4 -4
- package/dist/{chunk-JUYBJLPI.cjs.map → chunk-O7Y56J4R.cjs.map} +1 -1
- package/dist/{chunk-EAAVFTKI.cjs → chunk-OJ2NCQ2R.cjs} +14 -14
- package/dist/{chunk-EAAVFTKI.cjs.map → chunk-OJ2NCQ2R.cjs.map} +1 -1
- package/dist/{chunk-GLRKXJCR.js → chunk-OX32ITWC.js} +3 -3
- package/dist/{chunk-GLRKXJCR.js.map → chunk-OX32ITWC.js.map} +1 -1
- package/dist/{chunk-L4APW65W.cjs → chunk-PJ4XEBMU.cjs} +4 -4
- package/dist/{chunk-L4APW65W.cjs.map → chunk-PJ4XEBMU.cjs.map} +1 -1
- package/dist/{chunk-OZKJYLN6.js → chunk-PSCSU63K.js} +3 -3
- package/dist/{chunk-OZKJYLN6.js.map → chunk-PSCSU63K.js.map} +1 -1
- package/dist/{chunk-EI4JU5JF.js → chunk-RKM4VGAN.js} +3 -3
- package/dist/{chunk-EI4JU5JF.js.map → chunk-RKM4VGAN.js.map} +1 -1
- package/dist/{chunk-ME7EVT6F.js → chunk-RYGVILUR.js} +3 -3
- package/dist/{chunk-ME7EVT6F.js.map → chunk-RYGVILUR.js.map} +1 -1
- package/dist/{chunk-EGPDT7SM.js → chunk-S7NJV335.js} +3 -3
- package/dist/{chunk-EGPDT7SM.js.map → chunk-S7NJV335.js.map} +1 -1
- package/dist/{chunk-AHT2HRHC.cjs → chunk-TNRANQVI.cjs} +16 -16
- package/dist/{chunk-AHT2HRHC.cjs.map → chunk-TNRANQVI.cjs.map} +1 -1
- package/dist/{chunk-TERHGQ73.cjs → chunk-U7XWWU5H.cjs} +5 -5
- package/dist/{chunk-TERHGQ73.cjs.map → chunk-U7XWWU5H.cjs.map} +1 -1
- package/dist/{chunk-G35LXI2A.js → chunk-UIFN2LYT.js} +3 -3
- package/dist/{chunk-G35LXI2A.js.map → chunk-UIFN2LYT.js.map} +1 -1
- package/dist/{chunk-L3CAWGBU.js → chunk-UQAWXY6R.js} +3 -3
- package/dist/{chunk-L3CAWGBU.js.map → chunk-UQAWXY6R.js.map} +1 -1
- package/dist/{chunk-ZULFKL3C.js → chunk-VOPRL4RF.js} +7 -7
- package/dist/{chunk-ZULFKL3C.js.map → chunk-VOPRL4RF.js.map} +1 -1
- package/dist/{chunk-KB2PLV5Q.js → chunk-VQGRMCVT.js} +4 -4
- package/dist/{chunk-KB2PLV5Q.js.map → chunk-VQGRMCVT.js.map} +1 -1
- package/dist/{chunk-MD55WRGN.cjs → chunk-X6THHGTZ.cjs} +37 -37
- package/dist/{chunk-MD55WRGN.cjs.map → chunk-X6THHGTZ.cjs.map} +1 -1
- package/dist/{chunk-Q6QLGCL7.cjs → chunk-XCCH5KHW.cjs} +9 -9
- package/dist/{chunk-Q6QLGCL7.cjs.map → chunk-XCCH5KHW.cjs.map} +1 -1
- package/dist/{chunk-KQXD6BFO.cjs → chunk-XM3D4KAF.cjs} +9 -9
- package/dist/{chunk-KQXD6BFO.cjs.map → chunk-XM3D4KAF.cjs.map} +1 -1
- package/dist/{chunk-PINIBEIU.cjs → chunk-XRXOGMMG.cjs} +39 -11
- package/dist/chunk-XRXOGMMG.cjs.map +1 -0
- package/dist/{chunk-XPWFIDZM.cjs → chunk-XU3X2AUL.cjs} +4 -4
- package/dist/{chunk-XPWFIDZM.cjs.map → chunk-XU3X2AUL.cjs.map} +1 -1
- package/dist/{chunk-3A4N5E6P.js → chunk-XZ65FX6T.js} +3 -3
- package/dist/{chunk-3A4N5E6P.js.map → chunk-XZ65FX6T.js.map} +1 -1
- package/dist/{chunk-CRR7AE5D.js → chunk-Z6I4XFPC.js} +3 -3
- package/dist/{chunk-CRR7AE5D.js.map → chunk-Z6I4XFPC.js.map} +1 -1
- package/dist/{chunk-LTCHD3K5.cjs → chunk-Z7ZOSENN.cjs} +5 -5
- package/dist/{chunk-LTCHD3K5.cjs.map → chunk-Z7ZOSENN.cjs.map} +1 -1
- package/dist/{chunk-NZUQL42A.cjs → chunk-ZDA6FEKA.cjs} +5 -5
- package/dist/{chunk-NZUQL42A.cjs.map → chunk-ZDA6FEKA.cjs.map} +1 -1
- package/dist/{chunk-UY2EZYIC.js → chunk-ZSBG6C3P.js} +3 -3
- package/dist/{chunk-UY2EZYIC.js.map → chunk-ZSBG6C3P.js.map} +1 -1
- package/dist/{chunk-KAQNYX7B.js → chunk-ZVRJVUFX.js} +3 -3
- package/dist/{chunk-KAQNYX7B.js.map → chunk-ZVRJVUFX.js.map} +1 -1
- package/dist/components/AudioPlayer/index.cjs +7 -7
- package/dist/components/AudioPlayer/index.js +2 -2
- package/dist/components/BoardView/index.cjs +5 -5
- package/dist/components/BoardView/index.js +2 -2
- package/dist/components/CollabStatus/index.cjs +5 -5
- package/dist/components/CollabStatus/index.js +2 -2
- package/dist/components/Dropdown/index.cjs +9 -9
- package/dist/components/Dropdown/index.d.cts +6 -1
- package/dist/components/Dropdown/index.d.ts +6 -1
- package/dist/components/Dropdown/index.js +2 -2
- package/dist/components/EmailEditor/index.cjs +16 -16
- package/dist/components/EmailEditor/index.js +7 -7
- package/dist/components/MediaEditor/index.cjs +10 -10
- package/dist/components/MediaEditor/index.js +5 -5
- package/dist/components/MediaFeed/index.cjs +6 -6
- package/dist/components/MediaFeed/index.js +5 -5
- package/dist/components/MediaPlayer/index.cjs +8 -8
- package/dist/components/MediaPlayer/index.js +4 -4
- package/dist/components/MegaMenu/index.cjs +5 -5
- package/dist/components/MegaMenu/index.js +2 -2
- package/dist/components/RecordHeader/index.cjs +5 -5
- package/dist/components/RecordHeader/index.js +3 -3
- package/dist/components/RecordLayout/index.cjs +5 -5
- package/dist/components/RecordLayout/index.js +3 -3
- package/dist/components/RichTextEditor/index.cjs +6 -6
- package/dist/components/RichTextEditor/index.js +3 -3
- package/dist/components/Slider/index.cjs +6 -6
- package/dist/components/Slider/index.js +2 -2
- package/dist/components/SliderCalculator/index.cjs +5 -5
- package/dist/components/SliderCalculator/index.js +3 -3
- package/dist/components/SuperChat/index.cjs +23 -23
- package/dist/components/SuperChat/index.js +8 -8
- package/dist/components/SuperChat/plugins/index.cjs +5 -5
- package/dist/components/SuperChat/plugins/index.js +4 -4
- package/dist/components/Tabs/index.cjs +8 -8
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Textarea/index.cjs +8 -8
- package/dist/components/Textarea/index.js +5 -5
- package/dist/components/ThemeProvider/index.cjs +9 -9
- package/dist/components/ThemeProvider/index.js +3 -3
- package/dist/components/Tooltip/index.cjs +3 -3
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/ViewSet/index.cjs +5 -5
- package/dist/components/ViewSet/index.js +4 -4
- package/dist/components/ViewSwitcher/index.cjs +4 -4
- package/dist/components/ViewSwitcher/index.js +2 -2
- package/dist/deck.cjs +3 -3
- package/dist/deck.js +1 -1
- package/dist/esheet.cjs +107 -107
- package/dist/esheet.js +10 -10
- package/dist/hooks/index.cjs +5 -5
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +284 -284
- package/dist/index.d.cts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +40 -40
- package/dist/kerebron.cjs +6 -6
- package/dist/kerebron.js +4 -4
- package/dist/{model-5PB6KNYH.cjs → model-2TISYEYF.cjs} +20 -20
- package/dist/{model-5PB6KNYH.cjs.map → model-2TISYEYF.cjs.map} +1 -1
- package/dist/{model-OGWTZEXR.js → model-BCS5BUK3.js} +6 -6
- package/dist/{model-OGWTZEXR.js.map → model-BCS5BUK3.js.map} +1 -1
- package/dist/org-chart.cjs +2 -2
- package/dist/org-chart.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-OYUIEJPN.js.map +0 -1
- package/dist/chunk-PINIBEIU.cjs.map +0 -1
- package/dist/chunk-YVKBXNPK.js.map +0 -1
- package/dist/chunk-Z3WMDVMR.cjs.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var chunk4NCDU5IG_cjs = require('./chunk-4NCDU5IG.cjs');
|
|
4
4
|
var chunkXXVUHLQN_cjs = require('./chunk-XXVUHLQN.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunk7QNBPB7F_cjs = require('./chunk-7QNBPB7F.cjs');
|
|
6
6
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var core = require('@dnd-kit/core');
|
|
@@ -311,7 +311,7 @@ function BoardView({
|
|
|
311
311
|
};
|
|
312
312
|
const onCardKeyDown = (event, id, columnIndex) => {
|
|
313
313
|
if (!onMove || !(event.ctrlKey || event.metaKey)) return;
|
|
314
|
-
const rtl =
|
|
314
|
+
const rtl = chunk7QNBPB7F_cjs.isRtl(event.currentTarget);
|
|
315
315
|
let delta = 0;
|
|
316
316
|
if (event.key === "ArrowRight") delta = rtl ? -1 : 1;
|
|
317
317
|
else if (event.key === "ArrowLeft") delta = rtl ? 1 : -1;
|
|
@@ -450,5 +450,5 @@ function BoardView({
|
|
|
450
450
|
exports.BoardView = BoardView;
|
|
451
451
|
exports.cardVariants = cardVariants;
|
|
452
452
|
exports.defaultBoardLabels = defaultBoardLabels;
|
|
453
|
-
//# sourceMappingURL=chunk-
|
|
454
|
-
//# sourceMappingURL=chunk-
|
|
453
|
+
//# sourceMappingURL=chunk-HDSYYQYM.cjs.map
|
|
454
|
+
//# sourceMappingURL=chunk-HDSYYQYM.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/BoardView/BoardView.tsx"],"names":["defaultViewLabels","cva","useDraggable","jsxs","jsx","cn","accentClasses","useDroppable","React","useSensors","useSensor","PointerSensor","isRtl","Spinner","DndContext","pointerWithin","DragOverlay"],"mappings":"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","file":"chunk-2FZYZ4HT.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n DndContext,\n DragOverlay,\n PointerSensor,\n pointerWithin,\n useDraggable,\n useDroppable,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragStartEvent,\n} from '@dnd-kit/core';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { isRtl } from '../../hooks/useDirection';\nimport { cn } from '../../utils/cn';\nimport { Spinner } from '../Spinner';\nimport {\n accentClasses,\n defaultViewLabels,\n type Accent,\n type Stage,\n type ViewBaseProps,\n type ViewLabels,\n} from '../../views/types';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type BoardViewSlot =\n | 'column'\n | 'columnHeader'\n | 'card'\n | 'selectedCard'\n | 'state';\n\nexport interface BoardLabels extends ViewLabels {\n /** Accessible name of the scrollable board region. */\n board: string;\n /** Announced when a card starts moving. `{item}` and `{stage}` are substituted. */\n moved: string;\n /** Announced when `onMove` rejects. */\n moveFailed: string;\n /** Hint on a focusable card describing the keyboard move. */\n moveHint: string;\n}\n\nexport const defaultBoardLabels: BoardLabels = {\n ...defaultViewLabels,\n empty: 'Nothing in this stage',\n board: 'Board',\n moved: '{item} moved to {stage}',\n moveFailed: 'Could not move {item}',\n moveHint: 'Press Control with the arrow keys to move between stages',\n};\n\nexport interface BoardViewProps<T>\n extends ViewBaseProps<T>, VariantProps<typeof cardVariants> {\n /** Columns, in order. A board without stages has nothing to draw. */\n stages: readonly Stage[];\n /**\n * Commits a move. The board shows the card in its new column while this is\n * pending and puts it back if the promise rejects, so the caller never has to\n * re-render it home.\n */\n onMove?: (id: string, toStage: string, item: T) => void | Promise<void>;\n labels?: Partial<BoardLabels>;\n classNames?: Partial<Record<BoardViewSlot, string>>;\n /** Heading level for column headers, under the page's own heading. */\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\n// =============================================================================\n// Variants\n// =============================================================================\n\nconst cardVariants = cva(\n [\n 'w-full rounded-md border border-border bg-card p-2 text-start',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n density: {\n comfortable: 'p-3',\n compact: 'p-2',\n },\n interactive: { true: 'hover:border-primary-500/40', false: '' },\n selected: { true: 'ring-2 ring-primary-500/50', false: '' },\n pending: { true: 'opacity-60', false: '' },\n },\n defaultVariants: {\n density: 'comfortable',\n interactive: false,\n selected: false,\n pending: false,\n },\n }\n);\n\nconst fill = (template: string, values: Record<string, string>) =>\n template.replace(/\\{(\\w+)\\}/g, (_, key) => values[key] ?? '');\n\n// =============================================================================\n// Card\n// =============================================================================\n\ninterface CardProps {\n id: string;\n title: string;\n subtitle?: string;\n accent?: Accent;\n selected: boolean;\n pending: boolean;\n draggable: boolean;\n hint?: string;\n href?: string;\n className?: string;\n children?: React.ReactNode;\n onOpen?: () => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n}\n\nfunction BoardCard({\n id,\n title,\n subtitle,\n accent,\n selected,\n pending,\n draggable,\n hint,\n href,\n className,\n children,\n onOpen,\n onKeyDown,\n}: CardProps) {\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id,\n disabled: !draggable,\n });\n\n const body = children ?? (\n <span className=\"flex items-start gap-2\">\n {accent && (\n <span\n aria-hidden\n className={cn(\n 'mt-1.5 size-2 shrink-0 rounded-full',\n accentClasses[accent].marker\n )}\n />\n )}\n <span className=\"min-w-0 flex-1\">\n <span className=\"text-foreground block text-sm font-medium\">\n {title}\n </span>\n {subtitle && (\n <span className=\"text-muted-foreground block truncate text-xs\">\n {subtitle}\n </span>\n )}\n </span>\n </span>\n );\n\n const onCardKeyDown = (event: React.KeyboardEvent) => {\n if (onOpen && !href && (event.key === 'Enter' || event.key === ' ')) {\n // Space is dnd-kit's pick-up key only while dragging; here the card is at\n // rest, so it activates like any other button.\n if (!event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n onOpen();\n return;\n }\n }\n onKeyDown?.(event);\n };\n\n const shared = {\n ref: setNodeRef,\n // Only the pointer listeners are shared. dnd-kit's `attributes` carry\n // `role=\"button\"` and a `tabIndex`, which on an `<a href>` would override\n // the native link role — the card would announce as a button, and the\n // middle-click / \"copy link\" affordance this branch exists to preserve\n // would no longer be what assistive tech describes. The non-link card takes\n // them below, where button semantics are the correct answer.\n ...(draggable ? listeners : {}),\n 'aria-current': selected ? ('true' as const) : undefined,\n 'aria-describedby': hint,\n 'aria-busy': pending || undefined,\n 'data-slot': 'board-view-card',\n className: cn(className, isDragging && 'opacity-40'),\n };\n\n return (\n <li>\n {href ? (\n // An anchor, like every other view: the card stays middle-clickable and\n // \"copy link\" works. dnd-kit's listeners still own the drag.\n <a\n {...shared}\n href={href}\n onKeyDown={onCardKeyDown}\n onClick={(event) => {\n if (\n !onOpen ||\n event.defaultPrevented ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.button !== 0\n )\n return;\n event.preventDefault();\n onOpen();\n }}\n >\n {body}\n </a>\n ) : (\n <div\n {...shared}\n {...(draggable ? attributes : {})}\n role={onOpen ? 'button' : undefined}\n tabIndex={draggable || onOpen ? 0 : undefined}\n onKeyDown={onCardKeyDown}\n onClick={onOpen}\n >\n {body}\n </div>\n )}\n </li>\n );\n}\n\n// =============================================================================\n// Column\n// =============================================================================\n\nfunction BoardColumn({\n stage,\n headerId,\n count,\n headingLevel: Heading,\n droppable,\n classNames,\n children,\n}: {\n stage: Stage;\n droppable: boolean;\n headerId: string;\n count: number;\n headingLevel: 'h2' | 'h3' | 'h4';\n classNames?: BoardViewProps<unknown>['classNames'];\n children: React.ReactNode;\n}) {\n const { setNodeRef, isOver } = useDroppable({\n id: stage.id,\n disabled: !droppable,\n });\n const accent = stage.accent ?? 'neutral';\n return (\n <section\n ref={setNodeRef}\n data-slot=\"board-view-column\"\n data-over={isOver || undefined}\n className={cn(\n 'bg-muted/40 flex min-w-0 flex-col rounded-lg border',\n isOver ? accentClasses[accent].border : 'border-border',\n 'sm:w-72 sm:shrink-0',\n classNames?.column\n )}\n >\n <Heading>\n <span\n id={headerId}\n data-slot=\"board-view-column-header\"\n className={cn(\n 'border-border text-muted-foreground flex items-center gap-2 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase',\n classNames?.columnHeader\n )}\n >\n <span\n aria-hidden\n className={cn(\n 'size-2 shrink-0 rounded-full',\n accentClasses[accent].marker\n )}\n />\n <span>{stage.label}</span>\n <span className=\"ms-auto font-normal tabular-nums\">{count}</span>\n </span>\n </Heading>\n {children}\n </section>\n );\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport function BoardView<T>({\n items,\n accessors,\n stages,\n loading = false,\n error = null,\n selectedId = null,\n onOpen,\n getHref,\n onMove,\n renderItem,\n emptyState,\n labels,\n density,\n className,\n classNames,\n headingLevel = 'h3',\n}: BoardViewProps<T>) {\n const text = { ...defaultBoardLabels, ...labels };\n const hintId = React.useId();\n // Ids come from position, not from the stage id: two distinct statuses can\n // normalise to the same string, and a duplicate id makes `aria-labelledby`\n // resolve to the wrong heading.\n const baseId = React.useId();\n const [announcement, setAnnouncement] = React.useState('');\n const [draggingId, setDraggingId] = React.useState<string | null>(null);\n // Where a card is shown while its move is in flight, so the column it landed\n // in is the one the user sees before the caller's data catches up.\n // A Map, not an object. Ids come from the caller's `getId` and are only\n // typed `string`, so a collection keyed by user data can legitimately produce\n // `toString`, `constructor` or `__proto__`. On a plain object `'toString' in\n // pending` is true before anything is pending, which would pin that card as\n // permanently in-flight and make it impossible to move.\n const [pending, setPending] = React.useState<Map<string, string>>(\n () => new Map()\n );\n\n const byId = React.useMemo(() => {\n const map = new Map<string, T>();\n for (const item of items) map.set(accessors.getId(item), item);\n return map;\n }, [items, accessors]);\n\n const stageOf = React.useCallback(\n (item: T) =>\n pending.get(accessors.getId(item)) ?? accessors.getStatus?.(item),\n [pending, accessors]\n );\n\n const columns = React.useMemo(() => {\n const buckets = new Map<string, T[]>(stages.map((s) => [s.id, []]));\n const extra = new Map<string, T[]>();\n for (const item of items) {\n const key = stageOf(item) ?? '';\n const bucket = buckets.get(key);\n if (bucket) bucket.push(item);\n else {\n const spill = extra.get(key);\n if (spill) spill.push(item);\n else extra.set(key, [item]);\n }\n }\n return [\n ...stages.map((stage) => ({\n stage,\n declared: true,\n items: buckets.get(stage.id) ?? [],\n })),\n // Never silently drop a record whose status matches no stage. These are\n // shown so the record stays visible, but they are not drop targets: their\n // ids were never declared, and `onMove` promises a named stage.\n ...[...extra].map(([key, bucket]) => ({\n stage: { id: key, label: key || text.ungrouped } as Stage,\n declared: false,\n items: bucket,\n })),\n ];\n }, [items, stages, stageOf, text.ungrouped]);\n\n const commit = React.useCallback(\n async (id: string, toStage: string) => {\n const item = byId.get(id);\n if (!item || !onMove) return;\n // One move per card at a time: a second would overwrite the first's\n // pending stage, and the first `finally` would then clear it, snapping\n // the card home while the second mutation is still in flight.\n if (pending.has(id)) return;\n const stage = stages.find((s) => s.id === toStage);\n // `onMove` promises a move to a stage the caller declared. Columns\n // synthesized for unknown statuses exist so a record is never silently\n // dropped, not as somewhere to put things — accepting a drop there would\n // hand back an id that was never in `stages`.\n if (!stage) return;\n const from = accessors.getStatus?.(item);\n if (from === toStage) return;\n const title = accessors.getTitle(item);\n\n setPending((prev) => new Map(prev).set(id, toStage));\n setAnnouncement(\n fill(text.moved, { item: title, stage: stage.label ?? toStage })\n );\n try {\n await onMove(id, toStage, item);\n } catch {\n setAnnouncement(fill(text.moveFailed, { item: title }));\n } finally {\n setPending((prev) => {\n const next = new Map(prev);\n next.delete(id);\n return next;\n });\n }\n },\n [byId, onMove, pending, accessors, stages, text.moved, text.moveFailed]\n );\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } })\n );\n\n const onDragStart = (event: DragStartEvent) =>\n setDraggingId(String(event.active.id));\n\n const onDragEnd = (event: DragEndEvent) => {\n setDraggingId(null);\n if (event.over) void commit(String(event.active.id), String(event.over.id));\n };\n\n // Pointer drag has no keyboard equivalent that is pleasant to use, so moving\n // by keyboard is its own command on the focused card rather than a simulated\n // drag: Ctrl/Cmd with the arrow keys steps it between adjacent stages.\n const onCardKeyDown = (\n event: React.KeyboardEvent,\n id: string,\n columnIndex: number\n ) => {\n if (!onMove || !(event.ctrlKey || event.metaKey)) return;\n const rtl = isRtl(event.currentTarget);\n let delta = 0;\n if (event.key === 'ArrowRight') delta = rtl ? -1 : 1;\n else if (event.key === 'ArrowLeft') delta = rtl ? 1 : -1;\n else return;\n // Step to the next *declared* stage. A fallback column is not a move\n // target, so stopping on one would strand the card there; skipping it\n // keeps arrowing continuous and still lets a card leave one.\n let target;\n for (\n let i = columnIndex + delta;\n i >= 0 && i < columns.length;\n i += delta\n ) {\n if (columns[i].declared) {\n target = columns[i];\n break;\n }\n }\n if (!target) return;\n event.preventDefault();\n void commit(id, target.stage.id);\n };\n\n const state = (content: React.ReactNode) => (\n <div\n data-slot=\"board-view-state\"\n className={cn(\n 'border-border bg-card text-muted-foreground flex flex-col items-center justify-center gap-2 rounded-lg border px-4 py-10 text-center text-sm',\n classNames?.state\n )}\n >\n {content}\n </div>\n );\n\n if (error) {\n return state(\n <p role=\"alert\" className=\"text-destructive\">\n {text.error}\n </p>\n );\n }\n if (loading) {\n return state(\n <span className=\"flex items-center gap-2\">\n <Spinner size=\"sm\" label={text.loading} />\n <span aria-hidden>{text.loading}</span>\n </span>\n );\n }\n if (items.length === 0 && emptyState) return <>{emptyState}</>;\n\n const draggingItem = draggingId ? byId.get(draggingId) : undefined;\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={pointerWithin}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onDragCancel={() => setDraggingId(null)}\n >\n <div\n data-slot=\"board-view\"\n // Scrollable content must be keyboard operable (WCAG 2.1.1), which axe\n // enforces as scrollable-region-focusable. jsx-a11y disagrees for\n // non-interactive elements; the success criterion wins.\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n role=\"group\"\n aria-label={text.board}\n className={cn(\n // Columns on one scrolling row once there is room; stacked below it,\n // because five 288px columns on a phone is a horizontal maze.\n 'flex flex-col gap-3 sm:flex-row sm:overflow-x-auto sm:pb-2',\n className\n )}\n >\n {columns.map((column, columnIndex) => (\n <BoardColumn\n key={column.stage.id}\n stage={column.stage}\n droppable={column.declared && Boolean(onMove)}\n headerId={`${baseId}-col-${columnIndex}`}\n count={column.items.length}\n headingLevel={headingLevel}\n classNames={classNames}\n >\n <ul\n aria-labelledby={`${baseId}-col-${columnIndex}`}\n className=\"flex flex-1 flex-col gap-2 p-2\"\n >\n {column.items.map((item) => {\n const id = accessors.getId(item);\n return (\n <BoardCard\n key={id}\n id={id}\n title={accessors.getTitle(item)}\n subtitle={accessors.getSubtitle?.(item)}\n accent={accessors.getAccent?.(item)}\n selected={id === selectedId}\n pending={pending.has(id)}\n draggable={Boolean(onMove)}\n hint={onMove ? hintId : undefined}\n href={getHref?.(id, item)}\n className={cn(\n cardVariants({\n density,\n interactive: Boolean(onOpen),\n selected: id === selectedId,\n pending: pending.has(id),\n }),\n classNames?.card,\n id === selectedId && classNames?.selectedCard\n )}\n onOpen={onOpen ? () => onOpen(id, item) : undefined}\n onKeyDown={(event) => onCardKeyDown(event, id, columnIndex)}\n >\n {renderItem?.(item, { view: 'board' })}\n </BoardCard>\n );\n })}\n {column.items.length === 0 && (\n <li className=\"text-muted-foreground px-1 py-2 text-xs\">\n {text.empty}\n </li>\n )}\n </ul>\n </BoardColumn>\n ))}\n </div>\n\n {onMove && (\n <span id={hintId} className=\"sr-only\">\n {text.moveHint}\n </span>\n )}\n {/* Separate from dnd-kit's own drag live region: this announces moves\n made by keyboard command, which are not drags. */}\n <span\n data-slot=\"board-view-announcer\"\n role=\"status\"\n aria-live=\"polite\"\n className=\"sr-only\"\n >\n {announcement}\n </span>\n\n <DragOverlay>\n {draggingItem && (\n <div className={cn(cardVariants({ density }), 'shadow-lg')}>\n <span className=\"text-foreground block text-sm font-medium\">\n {accessors.getTitle(draggingItem)}\n </span>\n </div>\n )}\n </DragOverlay>\n </DndContext>\n );\n}\n\nexport { cardVariants as boardViewCardVariants };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/BoardView/BoardView.tsx"],"names":["defaultViewLabels","cva","useDraggable","jsxs","jsx","cn","accentClasses","useDroppable","React","useSensors","useSensor","PointerSensor","isRtl","Spinner","DndContext","pointerWithin","DragOverlay"],"mappings":"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","file":"chunk-HDSYYQYM.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport {\n DndContext,\n DragOverlay,\n PointerSensor,\n pointerWithin,\n useDraggable,\n useDroppable,\n useSensor,\n useSensors,\n type DragEndEvent,\n type DragStartEvent,\n} from '@dnd-kit/core';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { isRtl } from '../../hooks/useDirection';\nimport { cn } from '../../utils/cn';\nimport { Spinner } from '../Spinner';\nimport {\n accentClasses,\n defaultViewLabels,\n type Accent,\n type Stage,\n type ViewBaseProps,\n type ViewLabels,\n} from '../../views/types';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type BoardViewSlot =\n | 'column'\n | 'columnHeader'\n | 'card'\n | 'selectedCard'\n | 'state';\n\nexport interface BoardLabels extends ViewLabels {\n /** Accessible name of the scrollable board region. */\n board: string;\n /** Announced when a card starts moving. `{item}` and `{stage}` are substituted. */\n moved: string;\n /** Announced when `onMove` rejects. */\n moveFailed: string;\n /** Hint on a focusable card describing the keyboard move. */\n moveHint: string;\n}\n\nexport const defaultBoardLabels: BoardLabels = {\n ...defaultViewLabels,\n empty: 'Nothing in this stage',\n board: 'Board',\n moved: '{item} moved to {stage}',\n moveFailed: 'Could not move {item}',\n moveHint: 'Press Control with the arrow keys to move between stages',\n};\n\nexport interface BoardViewProps<T>\n extends ViewBaseProps<T>, VariantProps<typeof cardVariants> {\n /** Columns, in order. A board without stages has nothing to draw. */\n stages: readonly Stage[];\n /**\n * Commits a move. The board shows the card in its new column while this is\n * pending and puts it back if the promise rejects, so the caller never has to\n * re-render it home.\n */\n onMove?: (id: string, toStage: string, item: T) => void | Promise<void>;\n labels?: Partial<BoardLabels>;\n classNames?: Partial<Record<BoardViewSlot, string>>;\n /** Heading level for column headers, under the page's own heading. */\n headingLevel?: 'h2' | 'h3' | 'h4';\n}\n\n// =============================================================================\n// Variants\n// =============================================================================\n\nconst cardVariants = cva(\n [\n 'w-full rounded-md border border-border bg-card p-2 text-start',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n ],\n {\n variants: {\n density: {\n comfortable: 'p-3',\n compact: 'p-2',\n },\n interactive: { true: 'hover:border-primary-500/40', false: '' },\n selected: { true: 'ring-2 ring-primary-500/50', false: '' },\n pending: { true: 'opacity-60', false: '' },\n },\n defaultVariants: {\n density: 'comfortable',\n interactive: false,\n selected: false,\n pending: false,\n },\n }\n);\n\nconst fill = (template: string, values: Record<string, string>) =>\n template.replace(/\\{(\\w+)\\}/g, (_, key) => values[key] ?? '');\n\n// =============================================================================\n// Card\n// =============================================================================\n\ninterface CardProps {\n id: string;\n title: string;\n subtitle?: string;\n accent?: Accent;\n selected: boolean;\n pending: boolean;\n draggable: boolean;\n hint?: string;\n href?: string;\n className?: string;\n children?: React.ReactNode;\n onOpen?: () => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n}\n\nfunction BoardCard({\n id,\n title,\n subtitle,\n accent,\n selected,\n pending,\n draggable,\n hint,\n href,\n className,\n children,\n onOpen,\n onKeyDown,\n}: CardProps) {\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id,\n disabled: !draggable,\n });\n\n const body = children ?? (\n <span className=\"flex items-start gap-2\">\n {accent && (\n <span\n aria-hidden\n className={cn(\n 'mt-1.5 size-2 shrink-0 rounded-full',\n accentClasses[accent].marker\n )}\n />\n )}\n <span className=\"min-w-0 flex-1\">\n <span className=\"text-foreground block text-sm font-medium\">\n {title}\n </span>\n {subtitle && (\n <span className=\"text-muted-foreground block truncate text-xs\">\n {subtitle}\n </span>\n )}\n </span>\n </span>\n );\n\n const onCardKeyDown = (event: React.KeyboardEvent) => {\n if (onOpen && !href && (event.key === 'Enter' || event.key === ' ')) {\n // Space is dnd-kit's pick-up key only while dragging; here the card is at\n // rest, so it activates like any other button.\n if (!event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n onOpen();\n return;\n }\n }\n onKeyDown?.(event);\n };\n\n const shared = {\n ref: setNodeRef,\n // Only the pointer listeners are shared. dnd-kit's `attributes` carry\n // `role=\"button\"` and a `tabIndex`, which on an `<a href>` would override\n // the native link role — the card would announce as a button, and the\n // middle-click / \"copy link\" affordance this branch exists to preserve\n // would no longer be what assistive tech describes. The non-link card takes\n // them below, where button semantics are the correct answer.\n ...(draggable ? listeners : {}),\n 'aria-current': selected ? ('true' as const) : undefined,\n 'aria-describedby': hint,\n 'aria-busy': pending || undefined,\n 'data-slot': 'board-view-card',\n className: cn(className, isDragging && 'opacity-40'),\n };\n\n return (\n <li>\n {href ? (\n // An anchor, like every other view: the card stays middle-clickable and\n // \"copy link\" works. dnd-kit's listeners still own the drag.\n <a\n {...shared}\n href={href}\n onKeyDown={onCardKeyDown}\n onClick={(event) => {\n if (\n !onOpen ||\n event.defaultPrevented ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.button !== 0\n )\n return;\n event.preventDefault();\n onOpen();\n }}\n >\n {body}\n </a>\n ) : (\n <div\n {...shared}\n {...(draggable ? attributes : {})}\n role={onOpen ? 'button' : undefined}\n tabIndex={draggable || onOpen ? 0 : undefined}\n onKeyDown={onCardKeyDown}\n onClick={onOpen}\n >\n {body}\n </div>\n )}\n </li>\n );\n}\n\n// =============================================================================\n// Column\n// =============================================================================\n\nfunction BoardColumn({\n stage,\n headerId,\n count,\n headingLevel: Heading,\n droppable,\n classNames,\n children,\n}: {\n stage: Stage;\n droppable: boolean;\n headerId: string;\n count: number;\n headingLevel: 'h2' | 'h3' | 'h4';\n classNames?: BoardViewProps<unknown>['classNames'];\n children: React.ReactNode;\n}) {\n const { setNodeRef, isOver } = useDroppable({\n id: stage.id,\n disabled: !droppable,\n });\n const accent = stage.accent ?? 'neutral';\n return (\n <section\n ref={setNodeRef}\n data-slot=\"board-view-column\"\n data-over={isOver || undefined}\n className={cn(\n 'bg-muted/40 flex min-w-0 flex-col rounded-lg border',\n isOver ? accentClasses[accent].border : 'border-border',\n 'sm:w-72 sm:shrink-0',\n classNames?.column\n )}\n >\n <Heading>\n <span\n id={headerId}\n data-slot=\"board-view-column-header\"\n className={cn(\n 'border-border text-muted-foreground flex items-center gap-2 border-b px-3 py-2 text-xs font-semibold tracking-wide uppercase',\n classNames?.columnHeader\n )}\n >\n <span\n aria-hidden\n className={cn(\n 'size-2 shrink-0 rounded-full',\n accentClasses[accent].marker\n )}\n />\n <span>{stage.label}</span>\n <span className=\"ms-auto font-normal tabular-nums\">{count}</span>\n </span>\n </Heading>\n {children}\n </section>\n );\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\nexport function BoardView<T>({\n items,\n accessors,\n stages,\n loading = false,\n error = null,\n selectedId = null,\n onOpen,\n getHref,\n onMove,\n renderItem,\n emptyState,\n labels,\n density,\n className,\n classNames,\n headingLevel = 'h3',\n}: BoardViewProps<T>) {\n const text = { ...defaultBoardLabels, ...labels };\n const hintId = React.useId();\n // Ids come from position, not from the stage id: two distinct statuses can\n // normalise to the same string, and a duplicate id makes `aria-labelledby`\n // resolve to the wrong heading.\n const baseId = React.useId();\n const [announcement, setAnnouncement] = React.useState('');\n const [draggingId, setDraggingId] = React.useState<string | null>(null);\n // Where a card is shown while its move is in flight, so the column it landed\n // in is the one the user sees before the caller's data catches up.\n // A Map, not an object. Ids come from the caller's `getId` and are only\n // typed `string`, so a collection keyed by user data can legitimately produce\n // `toString`, `constructor` or `__proto__`. On a plain object `'toString' in\n // pending` is true before anything is pending, which would pin that card as\n // permanently in-flight and make it impossible to move.\n const [pending, setPending] = React.useState<Map<string, string>>(\n () => new Map()\n );\n\n const byId = React.useMemo(() => {\n const map = new Map<string, T>();\n for (const item of items) map.set(accessors.getId(item), item);\n return map;\n }, [items, accessors]);\n\n const stageOf = React.useCallback(\n (item: T) =>\n pending.get(accessors.getId(item)) ?? accessors.getStatus?.(item),\n [pending, accessors]\n );\n\n const columns = React.useMemo(() => {\n const buckets = new Map<string, T[]>(stages.map((s) => [s.id, []]));\n const extra = new Map<string, T[]>();\n for (const item of items) {\n const key = stageOf(item) ?? '';\n const bucket = buckets.get(key);\n if (bucket) bucket.push(item);\n else {\n const spill = extra.get(key);\n if (spill) spill.push(item);\n else extra.set(key, [item]);\n }\n }\n return [\n ...stages.map((stage) => ({\n stage,\n declared: true,\n items: buckets.get(stage.id) ?? [],\n })),\n // Never silently drop a record whose status matches no stage. These are\n // shown so the record stays visible, but they are not drop targets: their\n // ids were never declared, and `onMove` promises a named stage.\n ...[...extra].map(([key, bucket]) => ({\n stage: { id: key, label: key || text.ungrouped } as Stage,\n declared: false,\n items: bucket,\n })),\n ];\n }, [items, stages, stageOf, text.ungrouped]);\n\n const commit = React.useCallback(\n async (id: string, toStage: string) => {\n const item = byId.get(id);\n if (!item || !onMove) return;\n // One move per card at a time: a second would overwrite the first's\n // pending stage, and the first `finally` would then clear it, snapping\n // the card home while the second mutation is still in flight.\n if (pending.has(id)) return;\n const stage = stages.find((s) => s.id === toStage);\n // `onMove` promises a move to a stage the caller declared. Columns\n // synthesized for unknown statuses exist so a record is never silently\n // dropped, not as somewhere to put things — accepting a drop there would\n // hand back an id that was never in `stages`.\n if (!stage) return;\n const from = accessors.getStatus?.(item);\n if (from === toStage) return;\n const title = accessors.getTitle(item);\n\n setPending((prev) => new Map(prev).set(id, toStage));\n setAnnouncement(\n fill(text.moved, { item: title, stage: stage.label ?? toStage })\n );\n try {\n await onMove(id, toStage, item);\n } catch {\n setAnnouncement(fill(text.moveFailed, { item: title }));\n } finally {\n setPending((prev) => {\n const next = new Map(prev);\n next.delete(id);\n return next;\n });\n }\n },\n [byId, onMove, pending, accessors, stages, text.moved, text.moveFailed]\n );\n\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 5 } })\n );\n\n const onDragStart = (event: DragStartEvent) =>\n setDraggingId(String(event.active.id));\n\n const onDragEnd = (event: DragEndEvent) => {\n setDraggingId(null);\n if (event.over) void commit(String(event.active.id), String(event.over.id));\n };\n\n // Pointer drag has no keyboard equivalent that is pleasant to use, so moving\n // by keyboard is its own command on the focused card rather than a simulated\n // drag: Ctrl/Cmd with the arrow keys steps it between adjacent stages.\n const onCardKeyDown = (\n event: React.KeyboardEvent,\n id: string,\n columnIndex: number\n ) => {\n if (!onMove || !(event.ctrlKey || event.metaKey)) return;\n const rtl = isRtl(event.currentTarget);\n let delta = 0;\n if (event.key === 'ArrowRight') delta = rtl ? -1 : 1;\n else if (event.key === 'ArrowLeft') delta = rtl ? 1 : -1;\n else return;\n // Step to the next *declared* stage. A fallback column is not a move\n // target, so stopping on one would strand the card there; skipping it\n // keeps arrowing continuous and still lets a card leave one.\n let target;\n for (\n let i = columnIndex + delta;\n i >= 0 && i < columns.length;\n i += delta\n ) {\n if (columns[i].declared) {\n target = columns[i];\n break;\n }\n }\n if (!target) return;\n event.preventDefault();\n void commit(id, target.stage.id);\n };\n\n const state = (content: React.ReactNode) => (\n <div\n data-slot=\"board-view-state\"\n className={cn(\n 'border-border bg-card text-muted-foreground flex flex-col items-center justify-center gap-2 rounded-lg border px-4 py-10 text-center text-sm',\n classNames?.state\n )}\n >\n {content}\n </div>\n );\n\n if (error) {\n return state(\n <p role=\"alert\" className=\"text-destructive\">\n {text.error}\n </p>\n );\n }\n if (loading) {\n return state(\n <span className=\"flex items-center gap-2\">\n <Spinner size=\"sm\" label={text.loading} />\n <span aria-hidden>{text.loading}</span>\n </span>\n );\n }\n if (items.length === 0 && emptyState) return <>{emptyState}</>;\n\n const draggingItem = draggingId ? byId.get(draggingId) : undefined;\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={pointerWithin}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onDragCancel={() => setDraggingId(null)}\n >\n <div\n data-slot=\"board-view\"\n // Scrollable content must be keyboard operable (WCAG 2.1.1), which axe\n // enforces as scrollable-region-focusable. jsx-a11y disagrees for\n // non-interactive elements; the success criterion wins.\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n role=\"group\"\n aria-label={text.board}\n className={cn(\n // Columns on one scrolling row once there is room; stacked below it,\n // because five 288px columns on a phone is a horizontal maze.\n 'flex flex-col gap-3 sm:flex-row sm:overflow-x-auto sm:pb-2',\n className\n )}\n >\n {columns.map((column, columnIndex) => (\n <BoardColumn\n key={column.stage.id}\n stage={column.stage}\n droppable={column.declared && Boolean(onMove)}\n headerId={`${baseId}-col-${columnIndex}`}\n count={column.items.length}\n headingLevel={headingLevel}\n classNames={classNames}\n >\n <ul\n aria-labelledby={`${baseId}-col-${columnIndex}`}\n className=\"flex flex-1 flex-col gap-2 p-2\"\n >\n {column.items.map((item) => {\n const id = accessors.getId(item);\n return (\n <BoardCard\n key={id}\n id={id}\n title={accessors.getTitle(item)}\n subtitle={accessors.getSubtitle?.(item)}\n accent={accessors.getAccent?.(item)}\n selected={id === selectedId}\n pending={pending.has(id)}\n draggable={Boolean(onMove)}\n hint={onMove ? hintId : undefined}\n href={getHref?.(id, item)}\n className={cn(\n cardVariants({\n density,\n interactive: Boolean(onOpen),\n selected: id === selectedId,\n pending: pending.has(id),\n }),\n classNames?.card,\n id === selectedId && classNames?.selectedCard\n )}\n onOpen={onOpen ? () => onOpen(id, item) : undefined}\n onKeyDown={(event) => onCardKeyDown(event, id, columnIndex)}\n >\n {renderItem?.(item, { view: 'board' })}\n </BoardCard>\n );\n })}\n {column.items.length === 0 && (\n <li className=\"text-muted-foreground px-1 py-2 text-xs\">\n {text.empty}\n </li>\n )}\n </ul>\n </BoardColumn>\n ))}\n </div>\n\n {onMove && (\n <span id={hintId} className=\"sr-only\">\n {text.moveHint}\n </span>\n )}\n {/* Separate from dnd-kit's own drag live region: this announces moves\n made by keyboard command, which are not drags. */}\n <span\n data-slot=\"board-view-announcer\"\n role=\"status\"\n aria-live=\"polite\"\n className=\"sr-only\"\n >\n {announcement}\n </span>\n\n <DragOverlay>\n {draggingItem && (\n <div className={cn(cardVariants({ density }), 'shadow-lg')}>\n <span className=\"text-foreground block text-sm font-medium\">\n {accessors.getTitle(draggingItem)}\n </span>\n </div>\n )}\n </DragOverlay>\n </DndContext>\n );\n}\n\nexport { cardVariants as boardViewCardVariants };\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkNCG7NJAW_cjs = require('./chunk-NCG7NJAW.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkTNRANQVI_cjs = require('./chunk-TNRANQVI.cjs');
|
|
5
5
|
var chunkFSLI5IKP_cjs = require('./chunk-FSLI5IKP.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkXRXOGMMG_cjs = require('./chunk-XRXOGMMG.cjs');
|
|
7
7
|
var chunkPHYQSCP6_cjs = require('./chunk-PHYQSCP6.cjs');
|
|
8
8
|
var chunkYW2AKBLS_cjs = require('./chunk-YW2AKBLS.cjs');
|
|
9
|
-
var
|
|
9
|
+
var chunk7QNBPB7F_cjs = require('./chunk-7QNBPB7F.cjs');
|
|
10
10
|
var chunkFSARTLUE_cjs = require('./chunk-FSARTLUE.cjs');
|
|
11
11
|
var chunkIEY3ZJIT_cjs = require('./chunk-IEY3ZJIT.cjs');
|
|
12
12
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
@@ -257,7 +257,7 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
257
257
|
const macroPanelId = React2__namespace.useId();
|
|
258
258
|
const macroSidePanel = chunkPHYQSCP6_cjs.useMediaQuery("(min-width: 768px)");
|
|
259
259
|
const prefersReducedMotion = chunkYW2AKBLS_cjs.usePrefersReducedMotion();
|
|
260
|
-
const direction =
|
|
260
|
+
const direction = chunk7QNBPB7F_cjs.useDirection(wrapperRef);
|
|
261
261
|
const hasMacros = Boolean(macros);
|
|
262
262
|
const hasMacroEntries = Boolean(
|
|
263
263
|
macros?.some((group) => group.macros.length > 0)
|
|
@@ -553,7 +553,7 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
553
553
|
const view = currentView();
|
|
554
554
|
if (finalTranscript && view) {
|
|
555
555
|
view.focus();
|
|
556
|
-
insertPlainText(view,
|
|
556
|
+
insertPlainText(view, chunkTNRANQVI_cjs.processDictation(finalTranscript) + " ");
|
|
557
557
|
}
|
|
558
558
|
};
|
|
559
559
|
recognition.onerror = (event) => {
|
|
@@ -952,7 +952,7 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
952
952
|
style: { top: gutterTop },
|
|
953
953
|
onMouseDown: (event) => event.preventDefault(),
|
|
954
954
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
955
|
-
|
|
955
|
+
chunkXRXOGMMG_cjs.Dropdown,
|
|
956
956
|
{
|
|
957
957
|
open: blockMenuOpen,
|
|
958
958
|
onOpenChange: handleBlockMenuOpenChange,
|
|
@@ -978,7 +978,7 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
978
978
|
),
|
|
979
979
|
children: [
|
|
980
980
|
BLOCK_FORMAT_ITEMS.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
981
|
-
|
|
981
|
+
chunkXRXOGMMG_cjs.DropdownItem,
|
|
982
982
|
{
|
|
983
983
|
ref: index === 0 ? firstBlockItemRef : void 0,
|
|
984
984
|
onClick: () => applyBlockFormat(item.command),
|
|
@@ -986,19 +986,19 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
986
986
|
},
|
|
987
987
|
item.key
|
|
988
988
|
)),
|
|
989
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
989
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXRXOGMMG_cjs.DropdownSeparator, {}),
|
|
990
990
|
hasMacros && macros && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
991
991
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
992
|
-
|
|
992
|
+
chunkXRXOGMMG_cjs.DropdownSubmenu,
|
|
993
993
|
{
|
|
994
994
|
label: blockMenuLabels?.insertMacro ?? "Insert macro",
|
|
995
995
|
disabled: !hasMacroEntries,
|
|
996
996
|
children: blockMenuOpen && macros.flatMap((group) => [
|
|
997
997
|
...macros.length > 1 ? [
|
|
998
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
998
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXRXOGMMG_cjs.DropdownLabel, { children: group.label }, `h:${group.id}`)
|
|
999
999
|
] : [],
|
|
1000
1000
|
...group.macros.map((macro) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1001
|
-
|
|
1001
|
+
chunkXRXOGMMG_cjs.DropdownItem,
|
|
1002
1002
|
{
|
|
1003
1003
|
className: "[&>[data-slot=dropdown-item-label]]:min-w-0 [&>[data-slot=dropdown-item-label]]:flex-1",
|
|
1004
1004
|
onClick: () => {
|
|
@@ -1028,7 +1028,7 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
1028
1028
|
}
|
|
1029
1029
|
),
|
|
1030
1030
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1031
|
-
|
|
1031
|
+
chunkXRXOGMMG_cjs.DropdownItem,
|
|
1032
1032
|
{
|
|
1033
1033
|
onClick: () => {
|
|
1034
1034
|
setBlockMenuOpen(false);
|
|
@@ -1038,10 +1038,10 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
1038
1038
|
children: blockMenuLabels?.showMacroLibrary ?? "Show macro library"
|
|
1039
1039
|
}
|
|
1040
1040
|
),
|
|
1041
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1041
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXRXOGMMG_cjs.DropdownSeparator, {})
|
|
1042
1042
|
] }),
|
|
1043
1043
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1044
|
-
|
|
1044
|
+
chunkXRXOGMMG_cjs.DropdownItem,
|
|
1045
1045
|
{
|
|
1046
1046
|
onClick: () => {
|
|
1047
1047
|
setBlockMenuOpen(false);
|
|
@@ -1116,7 +1116,7 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
1116
1116
|
}
|
|
1117
1117
|
},
|
|
1118
1118
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1119
|
-
|
|
1119
|
+
chunkXRXOGMMG_cjs.Dropdown,
|
|
1120
1120
|
{
|
|
1121
1121
|
open: variablesOpen,
|
|
1122
1122
|
onOpenChange: handleVariablesOpenChange,
|
|
@@ -1142,10 +1142,10 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
1142
1142
|
)
|
|
1143
1143
|
),
|
|
1144
1144
|
children: variableGroups.map((group, groupIndex) => /* @__PURE__ */ jsxRuntime.jsxs(React2__namespace.Fragment, { children: [
|
|
1145
|
-
groupIndex > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1146
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1145
|
+
groupIndex > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkXRXOGMMG_cjs.DropdownSeparator, {}),
|
|
1146
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkXRXOGMMG_cjs.DropdownLabel, { children: group.label }),
|
|
1147
1147
|
group.variables.map((variable) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1148
|
-
|
|
1148
|
+
chunkXRXOGMMG_cjs.DropdownItem,
|
|
1149
1149
|
{
|
|
1150
1150
|
onClick: () => {
|
|
1151
1151
|
handleVariablesOpenChange(false);
|
|
@@ -1174,7 +1174,7 @@ var TextAreaRichKerebron = React2__namespace.forwardRef(
|
|
|
1174
1174
|
className: "border-border flex max-h-72 flex-col overflow-hidden border-t md:absolute md:end-0 md:bottom-0 md:max-h-none md:w-72 md:overflow-visible md:border-s md:border-t-0",
|
|
1175
1175
|
style: { top: editorTop },
|
|
1176
1176
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1177
|
-
|
|
1177
|
+
chunkTNRANQVI_cjs.MacroLibrary,
|
|
1178
1178
|
{
|
|
1179
1179
|
id: macroPanelId,
|
|
1180
1180
|
groups: macros,
|
|
@@ -1202,5 +1202,5 @@ TextAreaRichKerebron.displayName = "TextAreaRichKerebron";
|
|
|
1202
1202
|
|
|
1203
1203
|
exports.CodeEditor = CodeEditor;
|
|
1204
1204
|
exports.TextAreaRichKerebron = TextAreaRichKerebron;
|
|
1205
|
-
//# sourceMappingURL=chunk-
|
|
1206
|
-
//# sourceMappingURL=chunk-
|
|
1205
|
+
//# sourceMappingURL=chunk-HOE2U27V.cjs.map
|
|
1206
|
+
//# sourceMappingURL=chunk-HOE2U27V.cjs.map
|