MCPcopy Create free account
hub / github.com/anomalyco/opencode / applySelection

Function applySelection

packages/session-ui/src/components/file.tsx:746–787  ·  view source on GitHub ↗
(range: SelectedLineRange | null)

Source from the content-addressed store, hash-verified

744 const lineFromMouseEvent = (event: MouseEvent): MouseHit => mouseHit(event, parseLine)
745
746 const applySelection = (range: SelectedLineRange | null) => {
747 const current = instance
748 if (!current) return false
749
750 if (virtual()) {
751 current.setSelectedLines(range)
752 return true
753 }
754
755 const root = viewer.getRoot()
756 if (!root) return false
757
758 const total = lineCount()
759 if (root.querySelectorAll("[data-line]").length < total) return false
760
761 if (!range) {
762 current.setSelectedLines(null)
763 return true
764 }
765
766 const start = Math.min(range.start, range.end)
767 const end = Math.max(range.start, range.end)
768 if (start < 1 || end > total) {
769 current.setSelectedLines(null)
770 return true
771 }
772
773 if (!root.querySelector(`[data-line="${start}"]`) || !root.querySelector(`[data-line="${end}"]`)) {
774 current.setSelectedLines(null)
775 return true
776 }
777
778 const normalized = (() => {
779 if (range.endSide != null) return { start: range.start, end: range.end }
780 if (range.side !== "deletions") return range
781 if (root.querySelector("[data-deletions]") != null) return range
782 return { start: range.start, end: range.end }
783 })()
784
785 current.setSelectedLines(normalized)
786 return true
787 }
788
789 const setSelectedLines = (range: SelectedLineRange | null) => {
790 viewer.lastSelection = range

Callers 2

setSelectedLinesFunction · 0.85
notifyFunction · 0.85

Calls 1

lineCountFunction · 0.70

Tested by

no test coverage detected