@tutti-os/ui-rich-text 0.0.53 → 0.0.55

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/at-panel/mentionPalette.css"],"sourcesContent":[".rich-text-at-mention-palette-scroll-region {\n scrollbar-width: none !important;\n -ms-overflow-style: none !important;\n scrollbar-gutter: auto;\n}\n\n.rich-text-at-mention-palette-scroll-region::-webkit-scrollbar {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n}\n\n.rich-text-at-mention-palette-scrollbar {\n position: absolute;\n top: 4px;\n right: 4px;\n bottom: 4px;\n width: 4px;\n cursor: pointer;\n opacity: 0;\n pointer-events: auto;\n transition: opacity 160ms ease-in-out;\n}\n\n.rich-text-at-mention-palette-scrollbar-thumb {\n width: 4px;\n min-height: 24px;\n border-radius: 999px;\n background: var(--transparency-block);\n cursor: grab;\n transition: background-color 160ms ease-in-out;\n will-change: transform;\n}\n\n.rich-text-at-mention-palette-scrollbar:hover\n .rich-text-at-mention-palette-scrollbar-thumb {\n background: var(--transparency-hover);\n}\n\n.rich-text-at-mention-palette-scrollbar[data-dragging=\"true\"] {\n opacity: 1;\n}\n\n.rich-text-at-mention-palette-scrollbar[data-dragging=\"true\"]\n .rich-text-at-mention-palette-scrollbar-thumb {\n background: var(--transparency-hover);\n cursor: grabbing;\n}\n\n.rich-text-at-mention-palette {\n box-sizing: border-box;\n container-type: inline-size;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n --rich-text-at-mention-bg: var(\n --background-fronted,\n var(--panel, var(--background-panel, #fff))\n );\n --rich-text-at-mention-text-primary: var(\n --text-primary,\n var(--text, #171717)\n );\n --rich-text-at-mention-text-secondary: var(\n --text-secondary,\n var(--muted, #737373)\n );\n --rich-text-at-mention-text-tertiary: var(\n --text-tertiary,\n var(--muted, #8a8a8a)\n );\n --rich-text-at-mention-line-1: var(--line-1, var(--border, #0000001a));\n --rich-text-at-mention-line-2: var(--line-2, var(--border, #00000014));\n --rich-text-at-mention-hover: var(\n --transparency-block,\n var(--accent-soft, var(--sidebar-hover, #0000000d))\n );\n --rich-text-at-mention-active: var(\n --transparency-active,\n var(--accent-hover, #00000014)\n );\n --rich-text-at-mention-accent: var(--tutti-purple, var(--accent, #5f5cf0));\n --rich-text-at-mention-danger-bg: var(--on-danger, #fee2e2);\n --rich-text-at-mention-danger-fg: var(--state-danger, #dc2626);\n --rich-text-at-mention-success-fg: var(--state-success, #16a34a);\n --rich-text-at-mention-success-bg: color-mix(\n in srgb,\n var(--rich-text-at-mention-success-fg) 12%,\n transparent\n );\n --rich-text-at-mention-warning-fg: var(--state-warning, rgb(234 121 8));\n --rich-text-at-mention-warning-bg: color-mix(\n in srgb,\n var(--rich-text-at-mention-warning-fg) 12%,\n transparent\n );\n --rich-text-at-mention-info-fg: var(--status-running, rgb(65 130 245));\n --rich-text-at-mention-info-bg: color-mix(\n in srgb,\n var(--rich-text-at-mention-info-fg) 12%,\n transparent\n );\n}\n\n.rich-text-at-mention-palette__shell {\n box-sizing: border-box;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr) auto;\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 320px;\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n color: var(--rich-text-at-mention-text-primary);\n font-size: 13px;\n -webkit-app-region: no-drag;\n}\n\n.rich-text-at-mention-palette__header {\n position: relative;\n z-index: 10;\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n flex-shrink: 0;\n}\n\n.rich-text-at-mention-palette__footer {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n flex-shrink: 0;\n}\n\n.rich-text-at-mention-palette__scroll-shell {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n}\n\n.rich-text-at-mention-palette__scroll-body {\n box-sizing: border-box;\n width: 100%;\n max-width: 100%;\n height: 100%;\n min-height: 0;\n min-width: 0;\n padding: 8px 4px 4px;\n overflow-x: hidden;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n\n.rich-text-at-mention-palette__groups,\n.rich-text-at-mention-palette__group,\n.rich-text-at-mention-palette__group-items {\n box-sizing: border-box;\n display: grid;\n width: 100%;\n min-width: 0;\n}\n\n.rich-text-at-mention-palette__groups {\n gap: 12px;\n}\n\n.rich-text-at-mention-palette__group,\n.rich-text-at-mention-palette__group-items {\n gap: 4px;\n}\n\n.rich-text-at-mention-palette__group-divider {\n margin: 0 12px 8px;\n border-top: 1px solid var(--rich-text-at-mention-line-1);\n}\n\n.rich-text-at-mention-palette__group-label,\n.rich-text-at-mention-palette__group-empty {\n padding-inline: 12px;\n font-size: 13px;\n font-weight: 400;\n}\n\n.rich-text-at-mention-palette__group-label {\n color: var(--rich-text-at-mention-text-secondary);\n}\n\n.rich-text-at-mention-palette__group-empty {\n padding-block: 4px;\n color: var(--rich-text-at-mention-text-tertiary);\n}\n\n.rich-text-at-mention-palette__row-button,\n.rich-text-at-mention-palette__expand-button {\n appearance: none;\n -webkit-app-region: no-drag;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n cursor: pointer;\n outline: none;\n}\n\n.rich-text-at-mention-palette__row-button {\n position: relative;\n display: flex;\n align-items: center;\n gap: 6px;\n width: 100%;\n min-width: 0;\n min-height: 36px;\n padding: 8px 10px;\n overflow: hidden;\n border-radius: 6px;\n color: var(--rich-text-at-mention-text-primary);\n text-align: left;\n user-select: none;\n transition:\n background-color 200ms ease,\n color 200ms ease;\n}\n\n.rich-text-at-mention-palette__row-button > svg,\n.rich-text-at-mention-palette__row-button svg {\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.rich-text-at-mention-palette__row-button > svg:not([class*=\"size-\"]) {\n width: 16px;\n height: 16px;\n}\n\n.rich-text-at-mention-palette__row-button[data-highlighted],\n.rich-text-at-mention-palette__expand-button[data-highlighted] {\n background: var(--rich-text-at-mention-hover);\n color: var(--rich-text-at-mention-text-primary);\n}\n\n.rich-text-at-mention-palette__row-button:active,\n.rich-text-at-mention-palette__expand-button:active {\n background: var(--rich-text-at-mention-active);\n}\n\n.rich-text-at-mention-palette__expand-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--rich-text-at-mention-text-secondary);\n font-size: 13px;\n font-weight: 500;\n transition:\n background-color 160ms ease,\n color 160ms ease;\n}\n\n.rich-text-at-mention-palette__empty-state {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n max-width: 100%;\n min-width: 0;\n min-height: 0;\n height: 100%;\n padding: 24px 16px;\n color: var(--rich-text-at-mention-text-tertiary);\n font-size: 13px;\n text-align: center;\n}\n\n.rich-text-at-mention-palette__empty-state-inner {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n width: min(100%, 28ch);\n max-width: 100%;\n min-width: 0;\n}\n\n.rich-text-at-mention-palette__empty-state-icon {\n width: 24px;\n height: 24px;\n color: var(--rich-text-at-mention-text-tertiary);\n}\n\n.rich-text-at-mention-palette__empty-state-text {\n display: block;\n max-width: 100%;\n min-width: 0;\n color: var(--rich-text-at-mention-text-tertiary);\n line-height: 20px;\n overflow-wrap: anywhere;\n}\n\n.rich-text-at-mention-palette__loading {\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 52px;\n padding-inline: 12px;\n border-radius: 12px;\n color: var(--rich-text-at-mention-text-secondary);\n font-size: 13px;\n}\n\n.rich-text-at-mention-palette__loading-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid color-mix(in srgb, currentColor 28%, transparent);\n border-top-color: currentColor;\n border-radius: 999px;\n animation: rich-text-at-mention-spin 820ms linear infinite;\n}\n\n@keyframes rich-text-at-mention-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.tsh-underline-tabs.rich-text-at-mention-palette-tabs {\n height: 41px;\n padding: 8px 16px 0;\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs\"] {\n position: relative;\n box-sizing: border-box;\n min-width: 0;\n height: 33px;\n padding-inline: 16px;\n border-bottom: 1px solid var(--rich-text-at-mention-line-1);\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-viewport\"] {\n height: 32px;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n}\n\n.rich-text-at-mention-palette\n [data-slot=\"underline-tabs-viewport\"]::-webkit-scrollbar {\n display: none;\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-viewport\"] > div {\n position: relative;\n display: flex;\n align-items: center;\n gap: 14px;\n width: max-content;\n min-width: 100%;\n height: 32px;\n padding-bottom: 8px;\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-tab\"] {\n appearance: none;\n position: relative;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n gap: 6px;\n height: 24px;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--rich-text-at-mention-text-secondary);\n font: inherit;\n font-size: 13px;\n font-weight: 600;\n line-height: 24px;\n white-space: nowrap;\n cursor: pointer;\n transition: color 160ms ease;\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-tab\"]:hover,\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-tab\"]:focus-visible {\n color: var(--rich-text-at-mention-text-primary);\n outline: none;\n}\n\n.rich-text-at-mention-palette\n [data-slot=\"underline-tabs-tab\"][data-active=\"true\"] {\n color: var(--rich-text-at-mention-accent);\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-indicator\"] {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 1;\n height: 2px;\n border-radius: 1px;\n background: var(--rich-text-at-mention-accent);\n transition:\n transform 220ms cubic-bezier(0.4, 0, 0.2, 1),\n width 220ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-scroll-left\"],\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-scroll-right\"] {\n appearance: none;\n pointer-events: none;\n position: absolute;\n top: 12px;\n z-index: 3;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0;\n border-radius: 999px;\n background: var(--rich-text-at-mention-bg);\n color: var(--rich-text-at-mention-text-secondary);\n opacity: 0;\n box-shadow: 0 4px 16px rgb(15 23 42 / 12%);\n transform: translateY(-50%) scale(0.94);\n transition:\n opacity 160ms ease,\n transform 160ms ease,\n background-color 160ms ease,\n color 160ms ease;\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-scroll-left\"] {\n left: 16px;\n}\n\n.rich-text-at-mention-palette [data-slot=\"underline-tabs-scroll-right\"] {\n right: 16px;\n}\n\n.rich-text-at-mention-palette:hover\n [data-slot=\"underline-tabs-scroll-left\"][data-visible=\"true\"],\n.rich-text-at-mention-palette:hover\n [data-slot=\"underline-tabs-scroll-right\"][data-visible=\"true\"],\n.rich-text-at-mention-palette:focus-within\n [data-slot=\"underline-tabs-scroll-left\"][data-visible=\"true\"],\n.rich-text-at-mention-palette:focus-within\n [data-slot=\"underline-tabs-scroll-right\"][data-visible=\"true\"] {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(-50%) scale(1);\n}\n\n.rich-text-at-mention-palette-header {\n padding: 8px 0 0;\n}\n\n.rich-text-at-mention-palette-footer {\n min-height: 36px;\n border-top: 1px solid var(--line-2, var(--tutti-line-2));\n background: var(--background-fronted, var(--background-panel));\n}\n\n.rich-text-at-mention-palette-hint {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 8px;\n width: 100%;\n height: 36px;\n padding: 0 16px 1px;\n color: var(--rich-text-at-mention-text-secondary);\n font-size: 13px;\n font-weight: 500;\n line-height: 20px;\n pointer-events: auto;\n}\n\n.rich-text-at-mention-palette-hint-item {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n white-space: nowrap;\n}\n\n.rich-text-at-mention-palette-hint-button,\n.rich-text-at-mention-palette-shortcut-button {\n appearance: none;\n border: 0;\n font: inherit;\n cursor: pointer;\n}\n\n.rich-text-at-mention-palette-hint-button {\n padding: 0;\n background: transparent;\n color: inherit;\n}\n\n.rich-text-at-mention-palette-hint-button > span:last-child,\n.rich-text-at-mention-palette-hint-item > span:last-child {\n color: var(--rich-text-at-mention-text-secondary);\n}\n\n.rich-text-at-mention-palette-shortcut {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 20px;\n min-width: 20px;\n border: 1px solid var(--rich-text-at-mention-line-2);\n border-radius: 5px;\n background: var(--rich-text-at-mention-hover);\n color: var(--rich-text-at-mention-text-primary);\n box-shadow: inset 0 -1px 0 rgb(0 0 0 / 4%);\n font-size: 12px;\n font-weight: 650;\n line-height: 1;\n padding: 3px 6px;\n}\n\n.rich-text-at-mention-palette-hint-button:hover\n .rich-text-at-mention-palette-shortcut,\n.rich-text-at-mention-palette-hint-button:focus-visible\n .rich-text-at-mention-palette-shortcut,\n.rich-text-at-mention-palette-shortcut-button:hover,\n.rich-text-at-mention-palette-shortcut-button:focus-visible {\n border-color: var(--rich-text-at-mention-line-1);\n background: var(--rich-text-at-mention-active);\n}\n\n.rich-text-at-mention-palette-hint-button:focus-visible,\n.rich-text-at-mention-palette-shortcut-button:focus-visible {\n outline: 2px solid var(--rich-text-at-mention-line-1);\n outline-offset: 2px;\n}\n\n.rich-text-at-mention-palette-shortcut--arrow {\n width: 20px;\n min-width: 20px;\n font-size: 13px;\n line-height: 1;\n padding: 0;\n}\n\n.rich-text-at-mention-palette-shortcut-group {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.rich-text-at-mention-palette-hint-separator {\n color: var(--rich-text-at-mention-line-1);\n}\n\n.rich-text-at-mention-palette:hover\n .rich-text-at-mention-palette-scrollbar[data-scrollable=\"true\"] {\n opacity: 1;\n}\n\n.rich-text-at-mention-palette {\n --agent-mention-file-icon-size: 16px;\n}\n\n.rich-text-at-mention-row {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n width: 100%;\n overflow: hidden;\n}\n\n.rich-text-at-mention-row--session {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 12px;\n}\n\n.rich-text-at-mention-row--issue {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto auto;\n}\n\n.rich-text-at-mention-row--app,\n.rich-text-at-mention-row--file {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n}\n\n.rich-text-at-mention-row--plain > :not(.rich-text-at-mention-row__text-stack) {\n flex: 0 0 auto;\n}\n\n.rich-text-at-mention-row__leading,\n.rich-text-at-mention-row__inline,\n.rich-text-at-mention-row__file-text,\n.rich-text-at-mention-row__app-text {\n display: flex;\n min-width: 0;\n overflow: hidden;\n}\n\n.rich-text-at-mention-row__leading {\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.rich-text-at-mention-row--session .rich-text-at-mention-row__leading {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n}\n\n.rich-text-at-mention-row__inline {\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n\n.rich-text-at-mention-row__file-text,\n.rich-text-at-mention-row__app-text {\n align-items: baseline;\n gap: 4px;\n}\n\n.rich-text-at-mention-row__session-title {\n display: grid;\n grid-template-columns: minmax(0, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: 4px;\n width: 100%;\n}\n\n.rich-text-at-mention-row__file-text {\n flex: 1 1 0;\n}\n\n.rich-text-at-mention-row__app-text {\n flex: 1 1 0;\n}\n\n.rich-text-at-mention-row__text-stack {\n display: grid;\n gap: 2px;\n min-width: 0;\n overflow: hidden;\n}\n\n.rich-text-at-mention-row__text-stack--fill {\n flex: 1 1 auto;\n width: 100%;\n}\n\n.rich-text-at-mention-row__title,\n.rich-text-at-mention-row__app-name,\n.rich-text-at-mention-row__session-title,\n.rich-text-at-mention-row__description,\n.rich-text-at-mention-row__app-description,\n.rich-text-at-mention-row__file-count,\n.rich-text-at-mention-row__session-participant,\n.rich-text-at-mention-row__session-summary {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n\n.rich-text-at-mention-row__title,\n.rich-text-at-mention-row__app-name,\n.rich-text-at-mention-row__session-title,\n.rich-text-at-mention-row__session-participant {\n color: var(--rich-text-at-mention-text-primary);\n font-weight: 600;\n}\n\n.rich-text-at-mention-row__title,\n.rich-text-at-mention-row__app-name {\n flex: 0 1 auto;\n}\n\n.rich-text-at-mention-row__app-name {\n flex-shrink: 1;\n}\n\n.rich-text-at-mention-row__description,\n.rich-text-at-mention-row__app-description,\n.rich-text-at-mention-row__file-count,\n.rich-text-at-mention-row__session-summary {\n color: var(--rich-text-at-mention-text-secondary);\n font-weight: 400;\n}\n\n.rich-text-at-mention-row__app-description {\n flex: 1 1 0;\n}\n\n.rich-text-at-mention-row__description,\n.rich-text-at-mention-row__session-summary {\n flex: 1 1 0;\n}\n\n.rich-text-at-mention-row__file-count {\n flex: 0 0 auto;\n}\n\n.rich-text-at-mention-row__session-title,\n.rich-text-at-mention-row__session-participant,\n.rich-text-at-mention-row__session-summary {\n line-height: 16px;\n}\n\n.rich-text-at-mention-row__session-participant {\n flex: 0 0 auto;\n}\n\n.rich-text-at-mention-row__session-summary {\n min-width: 0;\n}\n\n.rich-text-at-mention-row__media {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.rich-text-at-mention-row__open-references,\n.rich-text-at-mention-row__navigate-into {\n appearance: none;\n display: grid;\n place-items: center;\n height: 24px;\n margin-left: auto;\n justify-self: end;\n padding: 0;\n border: 0;\n border-radius: 5px;\n background: transparent;\n color: var(--rich-text-at-mention-text-tertiary);\n cursor: pointer;\n outline: none;\n transition:\n background-color 160ms ease,\n color 160ms ease;\n}\n\n.rich-text-at-mention-row__open-references {\n width: auto;\n min-width: max-content;\n flex: 0 0 auto;\n padding-inline: 8px;\n color: var(--text-secondary);\n font-size: 12px;\n font-weight: 600;\n line-height: 24px;\n white-space: nowrap;\n}\n\n.rich-text-at-mention-row__navigate-into {\n width: 24px;\n flex: 0 0 24px;\n}\n\n.rich-text-at-mention-row__open-references:hover,\n.rich-text-at-mention-row__navigate-into:hover,\n.rich-text-at-mention-row__open-references:focus-visible,\n.rich-text-at-mention-row__navigate-into:focus-visible {\n background: var(--rich-text-at-mention-active);\n color: var(--rich-text-at-mention-text-secondary);\n}\n\n.rich-text-at-mention-file-icon--glyph {\n display: grid;\n place-items: center;\n color: var(--rich-text-at-mention-text-secondary);\n}\n\n.rich-text-at-mention-app-icon {\n display: grid;\n place-items: center;\n width: 20px;\n height: 20px;\n flex: 0 0 20px;\n overflow: hidden;\n border-radius: 5px;\n background: var(--bg-block, var(--block, #0000000a));\n color: var(--rich-text-at-mention-text-secondary);\n}\n\n.rich-text-at-mention-kind-icon--app {\n width: 16px;\n height: 16px;\n}\n\n.rich-text-at-mention-avatar-stack {\n position: relative;\n isolation: isolate;\n display: block;\n width: 36px;\n height: 20px;\n flex: 0 0 36px;\n}\n\n.rich-text-at-mention-avatar-stack--agent-only {\n width: 20px;\n flex: 0 0 20px;\n}\n\n.rich-text-at-mention-avatar-stack--agent-only\n .rich-text-at-mention-avatar--agent {\n left: 0;\n}\n\n.rich-text-at-mention-avatar {\n position: absolute;\n top: 0;\n display: grid;\n width: 20px;\n height: 20px;\n overflow: hidden;\n border-radius: 999px;\n background: var(--bg-block, var(--block, #0000000a));\n}\n\n.rich-text-at-mention-avatar--user {\n left: 0;\n z-index: 0;\n}\n\n.rich-text-at-mention-avatar--agent {\n left: 16px;\n z-index: 10;\n}\n\n.rich-text-at-mention-status {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n gap: 4px;\n width: fit-content;\n border: 1px solid transparent;\n white-space: nowrap;\n}\n\n.rich-text-at-mention-status[data-tone=\"blue\"] {\n background: var(--rich-text-at-mention-info-bg);\n color: var(--rich-text-at-mention-info-fg);\n}\n\n.rich-text-at-mention-status[data-tone=\"amber\"] {\n background: var(--rich-text-at-mention-warning-bg);\n color: var(--rich-text-at-mention-warning-fg);\n}\n\n.rich-text-at-mention-status[data-tone=\"green\"] {\n background: var(--rich-text-at-mention-success-bg);\n color: var(--rich-text-at-mention-success-fg);\n}\n\n.rich-text-at-mention-status[data-tone=\"purple\"] {\n background: color-mix(\n in srgb,\n var(--rich-text-at-mention-accent) 12%,\n transparent\n );\n color: var(--rich-text-at-mention-accent);\n}\n\n.rich-text-at-mention-status[data-tone=\"red\"] {\n background: var(--rich-text-at-mention-danger-bg);\n color: var(--rich-text-at-mention-danger-fg);\n}\n\n.rich-text-at-mention-status[data-tone=\"neutral\"] {\n background: var(--rich-text-at-mention-hover);\n color: var(--rich-text-at-mention-text-secondary);\n}\n\n.rich-text-at-mention-status--activity {\n padding-inline: 0;\n background: transparent;\n}\n\n.rich-text-at-mention-status--activity[data-tone] {\n background: transparent;\n}\n\n.rich-text-at-mention-status [data-slot=\"status-dot\"] {\n display: inline-flex;\n width: 6px;\n height: 6px;\n flex: 0 0 6px;\n border-radius: 999px;\n background: currentColor;\n}\n\n.rich-text-at-mention-status [data-slot=\"status-dot\"][data-pulse=\"true\"] {\n animation: rich-text-at-mention-pulse 1.4s ease-in-out infinite;\n}\n\n@keyframes rich-text-at-mention-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.rich-text-at-mention-select-indicator {\n display: grid;\n place-items: center;\n width: 18px;\n height: 18px;\n flex: 0 0 18px;\n border: 1px solid var(--border, var(--rich-text-at-mention-line-1));\n border-radius: 5px;\n background: #fff;\n color: transparent;\n}\n\n.rich-text-at-mention-select-indicator[data-selected=\"true\"] {\n border-color: #171717;\n background: #171717;\n color: #fff;\n}\n\n.rich-text-at-mention-multiselect-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 8px 10px;\n border-top: 1px solid var(--border, var(--rich-text-at-mention-line-1));\n background: var(--panel, var(--rich-text-at-mention-bg));\n}\n\n.rich-text-at-mention-multiselect-footer__count {\n color: var(--rich-text-at-mention-text-secondary);\n font-size: 12px;\n font-weight: 600;\n}\n\n.rich-text-at-mention-multiselect-footer__actions {\n display: flex;\n gap: 8px;\n}\n\n.rich-text-at-mention-multiselect-footer__button {\n appearance: none;\n height: 30px;\n padding-inline: 12px;\n border-radius: 8px;\n font: inherit;\n font-size: 12px;\n font-weight: 700;\n cursor: pointer;\n}\n\n.rich-text-at-mention-multiselect-footer__button--secondary {\n border: 1px solid var(--border, var(--rich-text-at-mention-line-1));\n background: #fff;\n color: var(--text, var(--rich-text-at-mention-text-primary));\n}\n\n.rich-text-at-mention-multiselect-footer__button--primary {\n border: 0;\n background: #171717;\n color: #fff;\n}\n\n.rich-text-at-mention-multiselect-footer__button:disabled {\n opacity: 0.45;\n cursor: default;\n}\n\n/*\n * Structural styling for the shared MentionRow elements. These mirror the\n * agent composer's rules (in `agentactivity.css`) under package-owned\n * `rich-text-at-mention-*` class names so any consumer (e.g. issue-manager)\n * that does NOT load the agent stylesheet still renders styled rows. The agent\n * keeps passing its own class names via `renderMentionRow(item, classNames)`.\n */\n.rich-text-at-mention-file-thumb {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--agent-mention-file-icon-size, 16px);\n height: var(--agent-mention-file-icon-size, 16px);\n flex: 0 0 var(--agent-mention-file-icon-size, 16px);\n overflow: hidden;\n border-radius: 4px;\n background-color: var(--bg-block, var(--block));\n vertical-align: middle;\n}\n\n.rich-text-at-mention-file-thumb img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/*\n * NOTE: the masked file kind-icon glyph and the fallback app glyph need raw SVG\n * mask assets. Those cannot live in this package (the `check-ui-boundaries`\n * gate restricts raw .svg assets to `packages/ui/system/src/icons/`), so only\n * the structural box (size/layout) is owned here. The agent composer supplies\n * its own masked glyph rules via `agentactivity.css` + its own class names. The\n * issue-manager file glyph + app fallback glyph are completed in Phases 3-4.\n */\n.rich-text-at-mention-file-icon {\n width: var(--agent-mention-file-icon-size, 16px);\n height: var(--agent-mention-file-icon-size, 16px);\n flex: 0 0 var(--agent-mention-file-icon-size, 16px);\n background-color: var(--folder);\n border-radius: 4px;\n}\n\n/* Fallback app glyph box (shown when a workspace-app mention has no icon URL). */\n.rich-text-at-mention-kind-icon {\n display: block;\n width: 16px;\n height: 16px;\n flex: 0 0 16px;\n background-color: currentColor;\n border-radius: 22.5%;\n}\n\n/* Session user-avatar placeholder background (no avatar URL). */\n.rich-text-at-mention-avatar-img--user-placeholder {\n background-color: var(--muted);\n}\n\n/*\n * Workspace-app icon container. Data-attribute based (matches the agent's\n * global rule) so the rounded app icon renders for any consumer of the shared\n * row, including surfaces that do not load `agentactivity.css`.\n */\n[data-workspace-app-icon=\"true\"] {\n display: inline-grid;\n min-width: 0;\n min-height: 0;\n place-items: center;\n overflow: hidden;\n border-radius: 22.5%;\n background: var(--workspace-app-icon-bg, transparent);\n}\n\n[data-workspace-app-icon=\"true\"] > img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n[data-workspace-app-icon=\"true\"] > .rich-text-at-mention-kind-icon {\n display: block;\n}\n"],"mappings":"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","names":[]}
@@ -1,5 +1,6 @@
1
1
  import { ReactNode, JSX } from 'react';
2
- import { RichTextTriggerProvider, RichTextTrigger, RichTextTriggerConfig, RichTextTriggerBoundary, RichTextTriggerRegistry, RichTextTriggerQueryInput, RichTextTriggerQueryMatch } from '../types/index.js';
2
+ import { RichTextTriggerProvider, RichTextTriggerQueryMatch, RichTextTrigger, RichTextTriggerConfig, RichTextTriggerBoundary, RichTextTriggerRegistry, RichTextTriggerQueryInput } from '../types/index.js';
3
+ import { a as MentionPaletteCategoryConfig } from '../mentionPaletteModel-BO1PV_yi.js';
3
4
  import { a as RichTextI18nRuntime } from '../richTextI18n-CUeqHuEQ.js';
4
5
  import { R as RichTextMentionAttrs, l as RichTextResolvedMention, m as RichTextResolvedMentionView } from '../mention-DJq2OJ4K.js';
5
6
  import '@tutti-os/ui-i18n-runtime';
@@ -33,8 +34,21 @@ interface RichTextTriggerEditorProps {
33
34
  menuPlacement?: RichTextTriggerMenuPlacement;
34
35
  menuOffset?: number;
35
36
  menuZIndex?: string | number;
37
+ palette?: RichTextTriggerEditorPaletteOptions;
36
38
  }
37
- declare function RichTextTriggerEditor({ value, onChange, triggerProviders, placeholder, disabled, className, textareaClassName, placeholderClassName, minQueryLength, maxResults, removeDecorationAriaLabel, i18n, textOverrides, overlay, focusSignal, menuAnchor, menuPlacement, menuOffset, menuZIndex }: RichTextTriggerEditorProps): JSX.Element;
39
+ interface RichTextTriggerEditorPaletteOptions {
40
+ categories: readonly MentionPaletteCategoryConfig<RichTextTriggerQueryMatch>[];
41
+ defaultCategoryId?: string;
42
+ labels: {
43
+ tabHint: string;
44
+ cycleFilter: string;
45
+ moveSelection: string;
46
+ empty?: string;
47
+ listbox?: string;
48
+ };
49
+ maxHeightPx?: number;
50
+ }
51
+ declare function RichTextTriggerEditor({ value, onChange, triggerProviders, placeholder, disabled, className, textareaClassName, placeholderClassName, minQueryLength, maxResults, removeDecorationAriaLabel, i18n, textOverrides, overlay, focusSignal, menuAnchor, menuPlacement, menuOffset, menuZIndex, palette }: RichTextTriggerEditorProps): JSX.Element;
38
52
 
39
53
  interface RichTextTriggerTextareaProps {
40
54
  value: string;
@@ -1,13 +1,24 @@
1
1
  import {
2
2
  createDefaultRichTextI18nRuntime
3
3
  } from "../chunk-VQHCWUBH.js";
4
+ import {
5
+ MentionPaletteFromState,
6
+ renderMentionRow,
7
+ richTextTriggerQueryMatchToMentionRowItem
8
+ } from "../chunk-SH3QPYB2.js";
9
+ import {
10
+ buildMentionPaletteModelFromTriggerMatches,
11
+ findMentionPaletteEntry,
12
+ moveMentionPaletteHighlight,
13
+ repairMentionPaletteHighlight
14
+ } from "../chunk-HMAUQU6Q.js";
4
15
  import {
5
16
  createRichTextMentionAttrs,
6
17
  createRichTextTriggerRegistry,
7
18
  getRichTextMentionDisplayText,
8
19
  renderRichTextTriggerInsertResult,
9
20
  resolveRichTextMentionView
10
- } from "../chunk-NNPICKW6.js";
21
+ } from "../chunk-2SYJ5JFT.js";
11
22
  import {
12
23
  findRichTextMarkdownLinks,
13
24
  isRichTextMentionHref,
@@ -18,7 +29,7 @@ import {
18
29
  parseRichTextMentionHref,
19
30
  serializeRichTextDocumentToContent,
20
31
  workspaceReferenceNodeName
21
- } from "../chunk-HO3WOO7V.js";
32
+ } from "../chunk-5XJXLQYZ.js";
22
33
 
23
34
  // src/editor/RichTextTriggerEditor.tsx
24
35
  import {
@@ -661,7 +672,8 @@ function RichTextTriggerEditor({
661
672
  menuAnchor = "cursor",
662
673
  menuPlacement = "bottom-start",
663
674
  menuOffset = 6,
664
- menuZIndex
675
+ menuZIndex,
676
+ palette
665
677
  }) {
666
678
  const normalizedValue = normalizeRichTextContent(value);
667
679
  const text = resolveRichTextTriggerText(
@@ -673,6 +685,7 @@ function RichTextTriggerEditor({
673
685
  const lastSerializedValueRef = useRef(normalizedValue);
674
686
  const lastFocusSignalRef = useRef(focusSignal);
675
687
  const mentionHydrationRequestRef = useRef(0);
688
+ const suppressPastedAtQueryRef = useRef(false);
676
689
  const containerRef = useRef(null);
677
690
  const registry = useMemo(
678
691
  () => createRichTextTriggerRegistry(triggerProviders),
@@ -690,6 +703,10 @@ function RichTextTriggerEditor({
690
703
  []
691
704
  );
692
705
  const [activeIndex, setActiveIndex] = useState2(0);
706
+ const [highlightedPaletteKey, setHighlightedPaletteKey] = useState2(null);
707
+ const [activePaletteCategoryId, setActivePaletteCategoryId] = useState2(
708
+ () => resolveDefaultPaletteCategoryId(palette)
709
+ );
693
710
  const [isLoading, setIsLoading] = useState2(false);
694
711
  const [resolvedMenuAnchor, setResolvedMenuAnchor] = useState2(null);
695
712
  latestOnChangeRef.current = onChange;
@@ -724,6 +741,7 @@ function RichTextTriggerEditor({
724
741
  setQuery(null);
725
742
  setMatches([]);
726
743
  setActiveIndex(0);
744
+ setHighlightedPaletteKey(null);
727
745
  setIsLoading(false);
728
746
  resetMenuPlacement();
729
747
  }, 100);
@@ -811,6 +829,10 @@ function RichTextTriggerEditor({
811
829
  }
812
830
  const updateQueryState = () => {
813
831
  const nextQuery = findEditorAtQuery(editor, activeTriggerConfigs);
832
+ if (shouldSuppressPastedAtQuery(nextQuery, suppressPastedAtQueryRef)) {
833
+ setQuery(null);
834
+ return;
835
+ }
814
836
  setQuery(nextQuery);
815
837
  };
816
838
  const updateFocus = () => {
@@ -883,6 +905,48 @@ function RichTextTriggerEditor({
883
905
  query,
884
906
  registry
885
907
  ]);
908
+ const resolvedPaletteCategoryId = resolveActivePaletteCategoryId(
909
+ palette,
910
+ activePaletteCategoryId
911
+ );
912
+ const paletteState = useMemo(
913
+ () => palette ? buildMentionPaletteModelFromTriggerMatches({
914
+ activeCategoryId: resolvedPaletteCategoryId,
915
+ categories: palette.categories,
916
+ matches,
917
+ loading: isLoading,
918
+ query: query?.keyword ?? "",
919
+ mode: "results"
920
+ }) : null,
921
+ [isLoading, matches, palette, query?.keyword, resolvedPaletteCategoryId]
922
+ );
923
+ useEffect2(() => {
924
+ const defaultCategoryId = resolveDefaultPaletteCategoryId(palette);
925
+ if (!defaultCategoryId) {
926
+ setActivePaletteCategoryId("");
927
+ return;
928
+ }
929
+ if (palette?.categories.some(
930
+ (category) => category.id === activePaletteCategoryId
931
+ )) {
932
+ return;
933
+ }
934
+ setActivePaletteCategoryId(defaultCategoryId);
935
+ }, [activePaletteCategoryId, palette]);
936
+ useEffect2(() => {
937
+ if (!paletteState) {
938
+ setHighlightedPaletteKey(null);
939
+ return;
940
+ }
941
+ setHighlightedPaletteKey(
942
+ (current) => repairMentionPaletteHighlight({
943
+ state: paletteState,
944
+ currentKey: current,
945
+ getItemKey: getPaletteMatchKey,
946
+ preferredKey: firstPaletteItemKey(paletteState)
947
+ })
948
+ );
949
+ }, [paletteState]);
886
950
  useLayoutEffect(() => {
887
951
  if (!editor || !query) {
888
952
  resetMenuPlacement();
@@ -941,6 +1005,7 @@ function RichTextTriggerEditor({
941
1005
  editor.chain().focus().insertContentAt({ from: query.from, to: query.to }, content).run();
942
1006
  setMatches([]);
943
1007
  setActiveIndex(0);
1008
+ setHighlightedPaletteKey(null);
944
1009
  setIsLoading(false);
945
1010
  resetMenuPlacement();
946
1011
  };
@@ -955,10 +1020,62 @@ function RichTextTriggerEditor({
955
1020
  event.preventDefault();
956
1021
  setMatches([]);
957
1022
  setActiveIndex(0);
1023
+ setHighlightedPaletteKey(null);
958
1024
  setIsLoading(false);
959
1025
  resetMenuPlacement();
960
1026
  return;
961
1027
  }
1028
+ if (paletteState) {
1029
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
1030
+ const nextKey = moveMentionPaletteHighlight({
1031
+ state: paletteState,
1032
+ currentKey: highlightedPaletteKey,
1033
+ delta: event.key === "ArrowDown" ? 1 : -1,
1034
+ getItemKey: getPaletteMatchKey
1035
+ });
1036
+ if (nextKey !== null) {
1037
+ event.preventDefault();
1038
+ setHighlightedPaletteKey(nextKey);
1039
+ }
1040
+ return;
1041
+ }
1042
+ if (event.key === "Tab") {
1043
+ const nextCategory = nextPaletteCategoryId(
1044
+ paletteState.categories,
1045
+ paletteState.filter,
1046
+ event.shiftKey ? -1 : 1
1047
+ );
1048
+ if (nextCategory) {
1049
+ event.preventDefault();
1050
+ setActivePaletteCategoryId(nextCategory);
1051
+ }
1052
+ return;
1053
+ }
1054
+ if (event.key === "Enter") {
1055
+ const entry = findMentionPaletteEntry({
1056
+ state: paletteState,
1057
+ key: highlightedPaletteKey,
1058
+ getItemKey: getPaletteMatchKey
1059
+ });
1060
+ if (entry?.type === "category" && entry.categoryId) {
1061
+ event.preventDefault();
1062
+ setActivePaletteCategoryId(entry.categoryId);
1063
+ return;
1064
+ }
1065
+ if (entry?.type !== "item" || !entry.groupId) {
1066
+ return;
1067
+ }
1068
+ const group = paletteState.groups.find(
1069
+ (candidate) => candidate.id === entry.groupId
1070
+ );
1071
+ const match = group?.items[typeof entry.itemIndex === "number" ? entry.itemIndex : -1] ?? null;
1072
+ if (match) {
1073
+ event.preventDefault();
1074
+ applyMatch(match);
1075
+ }
1076
+ return;
1077
+ }
1078
+ }
962
1079
  if (matches.length === 0) {
963
1080
  return;
964
1081
  }
@@ -988,6 +1105,15 @@ function RichTextTriggerEditor({
988
1105
  "div",
989
1106
  {
990
1107
  className: cn("relative min-w-0 w-full", className),
1108
+ onPasteCapture: (event) => {
1109
+ const pastedText = event.clipboardData.getData("text/plain");
1110
+ suppressPastedAtQueryRef.current = pastedText.includes("@") && !pastedText.endsWith("@");
1111
+ if (suppressPastedAtQueryRef.current) {
1112
+ window.setTimeout(() => {
1113
+ suppressPastedAtQueryRef.current = false;
1114
+ }, 0);
1115
+ }
1116
+ },
991
1117
  ref: containerRef,
992
1118
  children: [
993
1119
  /* @__PURE__ */ jsx4("div", { className: "w-full min-w-0", onKeyDownCapture: handleKeyDown, children: /* @__PURE__ */ jsx4(EditorContent, { editor }) }),
@@ -1007,10 +1133,40 @@ function RichTextTriggerEditor({
1007
1133
  ViewportMenuSurface,
1008
1134
  {
1009
1135
  open: true,
1010
- className: "tutti-rich-text-at-menu max-h-64 w-[min(28rem,calc(100vw-24px))] overflow-y-auto p-1",
1136
+ className: cn(
1137
+ "tutti-rich-text-at-menu w-[min(32rem,calc(100vw-24px))]",
1138
+ paletteState ? "overflow-hidden p-0" : "max-h-64 overflow-y-auto p-1"
1139
+ ),
1011
1140
  placement: resolveViewportMenuSurfacePlacement(resolvedMenuAnchor),
1012
1141
  style: menuSurfaceStyle,
1013
- children: matches.length > 0 ? matches.map((match, index) => /* @__PURE__ */ jsx4(
1142
+ children: paletteState && palette ? /* @__PURE__ */ jsx4(
1143
+ MentionPaletteFromState,
1144
+ {
1145
+ state: paletteState,
1146
+ highlightedKey: highlightedPaletteKey,
1147
+ getItemKey: getPaletteMatchKey,
1148
+ labels: {
1149
+ loading: text.loadingLabel,
1150
+ empty: palette.labels.empty ?? text.noMatchesLabel,
1151
+ error: palette.labels.empty ?? text.noMatchesLabel,
1152
+ tabHint: palette.labels.tabHint,
1153
+ listbox: palette.labels.listbox
1154
+ },
1155
+ hintLabels: {
1156
+ cycleFilter: palette.labels.cycleFilter,
1157
+ moveSelection: palette.labels.moveSelection
1158
+ },
1159
+ maxHeightPx: palette.maxHeightPx ?? 320,
1160
+ renderItem: (match) => renderMentionRow(
1161
+ richTextTriggerQueryMatchToMentionRowItem(match)
1162
+ ),
1163
+ callbacks: {
1164
+ onHighlightChange: setHighlightedPaletteKey,
1165
+ onActiveCategoryIdChange: setActivePaletteCategoryId,
1166
+ onSelectItem: applyMatch
1167
+ }
1168
+ }
1169
+ ) : matches.length > 0 ? matches.map((match, index) => /* @__PURE__ */ jsx4(
1014
1170
  RichTextTriggerMenuItem,
1015
1171
  {
1016
1172
  label: match.label,
@@ -1030,6 +1186,43 @@ function RichTextTriggerEditor({
1030
1186
  }
1031
1187
  );
1032
1188
  }
1189
+ function shouldSuppressPastedAtQuery(query, suppressPastedAtQueryRef) {
1190
+ return Boolean(
1191
+ suppressPastedAtQueryRef.current && query?.trigger === "@" && query.keyword.length > 0
1192
+ );
1193
+ }
1194
+ function resolveDefaultPaletteCategoryId(palette) {
1195
+ return palette?.defaultCategoryId?.trim() || palette?.categories[0]?.id.trim() || "";
1196
+ }
1197
+ function resolveActivePaletteCategoryId(palette, activeCategoryId) {
1198
+ const active = activeCategoryId.trim();
1199
+ if (active && palette?.categories.some((category) => category.id === active)) {
1200
+ return active;
1201
+ }
1202
+ return resolveDefaultPaletteCategoryId(palette);
1203
+ }
1204
+ function getPaletteMatchKey(match, _groupId) {
1205
+ return `${match.providerId}:${match.key}`;
1206
+ }
1207
+ function firstPaletteItemKey(state) {
1208
+ for (const group of state.groups) {
1209
+ const first = group.items[0];
1210
+ if (first) {
1211
+ return `${group.id}:${getPaletteMatchKey(first, group.id)}`;
1212
+ }
1213
+ }
1214
+ return state.categories[0] ? `category:${state.categories[0].id}` : null;
1215
+ }
1216
+ function nextPaletteCategoryId(categories, currentCategoryId, delta) {
1217
+ if (categories.length === 0) {
1218
+ return null;
1219
+ }
1220
+ const currentIndex = Math.max(
1221
+ 0,
1222
+ categories.findIndex((category) => category.id === currentCategoryId)
1223
+ );
1224
+ return categories[(currentIndex + delta + categories.length) % categories.length]?.id ?? null;
1225
+ }
1033
1226
  function resolveViewportMenuSurfacePlacement(menuAnchor) {
1034
1227
  return {
1035
1228
  type: "point",
@@ -1548,6 +1741,7 @@ function RichTextTriggerTextarea({
1548
1741
  const [scrollPosition, setScrollPosition] = useState3({ left: 0, top: 0 });
1549
1742
  const [textareaPresentationStyle, setTextareaPresentationStyle] = useState3(null);
1550
1743
  const pendingSelectionRef = useRef2(null);
1744
+ const suppressPastedAtQueryRef = useRef2(false);
1551
1745
  const registry = useMemo2(
1552
1746
  () => createRichTextTriggerRegistry(triggerProviders),
1553
1747
  [triggerProviders]
@@ -1565,7 +1759,8 @@ function RichTextTriggerTextarea({
1565
1759
  () => isFocused ? findRichTextTriggerQuery(value, selectionStart, activeTriggerConfigs) : null,
1566
1760
  [activeTriggerConfigs, isFocused, selectionStart, value]
1567
1761
  );
1568
- const shouldQuery = query !== null && query.keyword.length >= minQueryLength && activeTriggerConfigs.length > 0;
1762
+ const visibleQuery = suppressPastedAtQueryRef.current && query?.trigger === "@" && query.keyword.length > 0 ? null : query;
1763
+ const shouldQuery = visibleQuery !== null && visibleQuery.keyword.length >= minQueryLength && activeTriggerConfigs.length > 0;
1569
1764
  const isMenuOpen = isFocused && shouldQuery && (isLoading || matches.length > 0);
1570
1765
  useEffect3(() => {
1571
1766
  const nextSelection = pendingSelectionRef.current;
@@ -1576,7 +1771,7 @@ function RichTextTriggerTextarea({
1576
1771
  pendingSelectionRef.current = null;
1577
1772
  }, [value]);
1578
1773
  useEffect3(() => {
1579
- if (!shouldQuery || !query) {
1774
+ if (!shouldQuery || !visibleQuery) {
1580
1775
  setMatches([]);
1581
1776
  setActiveIndex(0);
1582
1777
  setIsLoading(false);
@@ -1586,9 +1781,9 @@ function RichTextTriggerTextarea({
1586
1781
  setIsLoading(true);
1587
1782
  void queryRichTextTriggerMatches(registry, {
1588
1783
  abortSignal: abortController.signal,
1589
- keyword: query.keyword,
1784
+ keyword: visibleQuery.keyword,
1590
1785
  maxResults,
1591
- trigger: query.trigger,
1786
+ trigger: visibleQuery.trigger,
1592
1787
  context: {
1593
1788
  documentText: value,
1594
1789
  blockText: value
@@ -1609,7 +1804,7 @@ function RichTextTriggerTextarea({
1609
1804
  return () => {
1610
1805
  abortController.abort();
1611
1806
  };
1612
- }, [maxResults, query, registry, shouldQuery, value]);
1807
+ }, [maxResults, registry, shouldQuery, value, visibleQuery]);
1613
1808
  useLayoutEffect2(() => {
1614
1809
  if (!textareaRef.current || !hasDecorations) {
1615
1810
  setTextareaPresentationStyle(null);
@@ -1623,13 +1818,13 @@ function RichTextTriggerTextarea({
1623
1818
  });
1624
1819
  }, [hasDecorations, textareaClassName, value]);
1625
1820
  useLayoutEffect2(() => {
1626
- if (!isMenuOpen || !query || !textareaRef.current) {
1821
+ if (!isMenuOpen || !visibleQuery || !textareaRef.current) {
1627
1822
  setMenuPoint(null);
1628
1823
  return;
1629
1824
  }
1630
1825
  const caretPoint = getTextareaCaretViewportPoint(
1631
1826
  textareaRef.current,
1632
- query.to
1827
+ visibleQuery.to
1633
1828
  );
1634
1829
  const textareaRect = textareaRef.current.getBoundingClientRect();
1635
1830
  if (!caretPoint) {
@@ -1643,14 +1838,17 @@ function RichTextTriggerTextarea({
1643
1838
  x: caretPoint.x,
1644
1839
  y: caretPoint.y + caretPoint.lineHeight + menuOffset
1645
1840
  });
1646
- }, [isMenuOpen, menuOffset, query, selectionStart, value]);
1841
+ }, [isMenuOpen, menuOffset, selectionStart, value, visibleQuery]);
1647
1842
  useEffect3(() => {
1648
- if (!isMenuOpen || !query || !textareaRef.current) {
1843
+ if (!isMenuOpen || !visibleQuery || !textareaRef.current) {
1649
1844
  return;
1650
1845
  }
1651
1846
  const textarea = textareaRef.current;
1652
1847
  const updateMenuPoint = () => {
1653
- const caretPoint = getTextareaCaretViewportPoint(textarea, query.to);
1848
+ const caretPoint = getTextareaCaretViewportPoint(
1849
+ textarea,
1850
+ visibleQuery.to
1851
+ );
1654
1852
  const textareaRect = textarea.getBoundingClientRect();
1655
1853
  setMenuPoint(
1656
1854
  caretPoint ? {
@@ -1678,7 +1876,7 @@ function RichTextTriggerTextarea({
1678
1876
  window.removeEventListener("resize", updateMenuPoint);
1679
1877
  window.removeEventListener("scroll", updateMenuPoint, true);
1680
1878
  };
1681
- }, [isMenuOpen, menuOffset, query]);
1879
+ }, [isMenuOpen, menuOffset, visibleQuery]);
1682
1880
  const closeMenu = () => {
1683
1881
  setMatches([]);
1684
1882
  setActiveIndex(0);
@@ -1802,6 +2000,15 @@ function RichTextTriggerTextarea({
1802
2000
  closeMenu();
1803
2001
  }, 100);
1804
2002
  },
2003
+ onPaste: (event) => {
2004
+ const pastedText = event.clipboardData.getData("text/plain");
2005
+ suppressPastedAtQueryRef.current = pastedText.includes("@") && !pastedText.endsWith("@");
2006
+ if (suppressPastedAtQueryRef.current) {
2007
+ window.setTimeout(() => {
2008
+ suppressPastedAtQueryRef.current = false;
2009
+ }, 0);
2010
+ }
2011
+ },
1805
2012
  onChange: (event) => {
1806
2013
  const rawSelectionStart = event.target.selectionStart ?? 0;
1807
2014
  const nextSelection = resolveRichTextTextareaSelectionBoundary(