-
-A text editor specialized for displaying and editing code documents. Features include basic text editing, extremely fast initial layout, support for handling large documents, customization options for code documents.
-
-
-
-
-
-[](https://discord.gg/vChUXVf9Em)
-
-> [!IMPORTANT]
-> This package contains a text view suitable for replacing `NSTextView` in some, ***specific*** cases. If you want a text view that can handle things like: right-to-left text, custom layout elements, or feature parity with the system text view, consider using [STTextView](https://github.com/krzyzanowskim/STTextView) or [NSTextView](https://developer.apple.com/documentation/appkit/nstextview). The ``TextView`` exported by this library is designed to lay out documents made up of lines of text. It also does not attempt to reason about the contents of the document. If you're looking to edit *source code* (indentation, syntax highlighting) consider using the parent library [CodeEditSourceEditor](https://github.com/CodeEditApp/CodeEditSourceEditor).
-
-## Documentation
-
-This package is fully documented [here](https://codeeditapp.github.io/CodeEditTextView/documentation/codeedittextview/).
-
-## Usage
-
-This package exports a primary `TextView` class. The `TextView` class is an `NSView` subclass that can be embedded in a scroll view or used standalone. It parses and renders lines of a document and handles mouse and keyboard events for text editing. It also renders styled strings for use cases like syntax highlighting.
-
-```swift
-import CodeEditTextView
-import AppKit
-
-/// # ViewController
-///
-/// An example view controller for displaying a text view embedded in a scroll view.
-class ViewController: NSViewController, TextViewDelegate {
- private var scrollView: NSScrollView!
- private var textView: TextView!
-
- var text: String = "func helloWorld() {\n\tprint(\"hello world\")\n}"
- var font: NSFont!
- var textColor: NSColor!
-
- override func loadView() {
- textView = TextView(
- string: text,
- font: font,
- textColor: textColor,
- lineHeightMultiplier: 1.0,
- wrapLines: true,
- isEditable: true,
- isSelectable: true,
- letterSpacing: 1.0,
- delegate: self
- )
- textView.translatesAutoresizingMaskIntoConstraints = false
-
- scrollView = NSScrollView()
- scrollView.translatesAutoresizingMaskIntoConstraints = false
- scrollView.hasVerticalScroller = true
- scrollView.hasHorizontalScroller = true
- scrollView.documentView = textView
- self.view = scrollView
- NSLayoutConstraint.activate([
- scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
- scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
- scrollView.topAnchor.constraint(equalTo: view.topAnchor),
- scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
- ])
-
- textView.updateFrameIfNeeded()
- }
-}
-```
-
-## License
-
-Licensed under the [MIT license](https://github.com/CodeEditApp/CodeEdit/blob/main/LICENSE.md).
-
-## Dependencies
-
-Special thanks to [Matt Massicotte](https://twitter.com/mattie) for the great work he's done!
-
-| Package | Source | Author |
-| :---------- | :--------------------------------------------------- | :-------------------------------------------- |
-| `TextStory` | [GitHub](https://github.com/ChimeHQ/TextStory) | [Matt Massicotte](https://twitter.com/mattie) |
-| `swift-collections` | [GitHub](https://github.com/apple/swift-collections.git) | [Apple](https://github.com/apple) |
-
-## Related Repositories
-
-
diff --git a/Sources/CodeEditTextView/CodeEditTextView.swift b/Sources/CodeEditTextView/CodeEditTextView.swift
deleted file mode 100644
index 710a46ea9..000000000
--- a/Sources/CodeEditTextView/CodeEditTextView.swift
+++ /dev/null
@@ -1,12 +0,0 @@
-/// This file is purely for helping in the transition from `CodeEditTextView` to `CodeEditSourceEditor`
-/// The struct here is an empty view, and will be removed in a future release.
-
-import SwiftUI
-
-// swiftlint:disable:next line_length
-@available(*, unavailable, renamed: "CodeEditSourceEditor", message: "CodeEditTextView has moved to https://github.com/CodeEditApp/CodeEditSourceEditor, please update any dependencies to use this new repository URL.")
-struct CodeEditTextView: View {
- var body: some View {
- EmptyView()
- }
-}
diff --git a/Sources/CodeEditTextView/Cursors/CursorSelectionMode.swift b/Sources/CodeEditTextView/Cursors/CursorSelectionMode.swift
deleted file mode 100644
index 7a7da3ed0..000000000
--- a/Sources/CodeEditTextView/Cursors/CursorSelectionMode.swift
+++ /dev/null
@@ -1,12 +0,0 @@
-//
-// CursorSelectionMode.swift
-// CodeEditTextView
-//
-// Created by Abe Malla on 3/31/25.
-//
-
-enum CursorSelectionMode {
- case character
- case word
- case line
-}
diff --git a/Sources/CodeEditTextView/Cursors/CursorTimer.swift b/Sources/CodeEditTextView/Cursors/CursorTimer.swift
deleted file mode 100644
index 912ce9b61..000000000
--- a/Sources/CodeEditTextView/Cursors/CursorTimer.swift
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// CursorTimer.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 1/16/24.
-//
-
-import Foundation
-import AppKit
-
-class CursorTimer {
- /// # Properties
-
- /// The timer that publishes the cursor toggle timer.
- private var timer: Timer?
- /// Maps to all cursor views, uses weak memory to not cause a strong reference cycle.
- private var cursors: NSHashTable = .init(options: .weakMemory)
- /// Tracks whether cursors are hidden or not.
- var shouldHide: Bool = false
-
- // MARK: - Methods
-
- /// Resets the cursor blink timer.
- /// - Parameter newBlinkDuration: The duration to blink, leave as nil to never blink.
- func resetTimer(newBlinkDuration: TimeInterval? = 0.5) {
- timer?.invalidate()
-
- guard let newBlinkDuration else {
- notifyCursors(shouldHide: true)
- return
- }
-
- shouldHide = false
- notifyCursors(shouldHide: shouldHide)
-
- timer = Timer.scheduledTimer(withTimeInterval: newBlinkDuration, repeats: true) { [weak self] _ in
- self?.assertMain()
- self?.shouldHide.toggle()
- guard let shouldHide = self?.shouldHide else { return }
- self?.notifyCursors(shouldHide: shouldHide)
- }
- }
-
- func stopTimer() {
- shouldHide = true
- notifyCursors(shouldHide: true)
- cursors.removeAllObjects()
- timer?.invalidate()
- timer = nil
- }
-
- /// Notify all cursors of a new blink state.
- /// - Parameter shouldHide: Whether or not the cursors should be hidden or not.
- private func notifyCursors(shouldHide: Bool) {
- for cursor in cursors.allObjects {
- cursor.blinkTimer(shouldHide)
- }
- }
-
- /// Register a new cursor view with the timer.
- /// - Parameter newCursor: The cursor to blink.
- func register(_ newCursor: CursorView) {
- cursors.add(newCursor)
- }
-
- deinit {
- timer?.invalidate()
- timer = nil
- cursors.removeAllObjects()
- }
-
- private func assertMain() {
-#if DEBUG
- assert(Thread.isMainThread, "CursorTimer used from non-main thread")
-#endif
- }
-}
diff --git a/Sources/CodeEditTextView/Cursors/CursorView.swift b/Sources/CodeEditTextView/Cursors/CursorView.swift
deleted file mode 100644
index 166e9deda..000000000
--- a/Sources/CodeEditTextView/Cursors/CursorView.swift
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// CursorView.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/15/23.
-//
-
-import AppKit
-
-/// Animates a cursor. Will sync animation with any other cursor views.
-open class CursorView: NSView {
- /// The color of the cursor.
- public var color: NSColor {
- didSet {
- layer?.backgroundColor = color.cgColor
- }
- }
-
- /// The width of the cursor.
- private let width: CGFloat
- /// The timer observer.
- private var observer: NSObjectProtocol?
-
- open override var isFlipped: Bool {
- true
- }
-
- override open func hitTest(_ point: NSPoint) -> NSView? { nil }
-
- /// Create a cursor view.
- /// - Parameters:
- /// - blinkDuration: The duration to blink, leave as nil to never blink.
- /// - color: The color of the cursor.
- /// - width: How wide the cursor should be.
- init(
- color: NSColor = NSColor.labelColor,
- width: CGFloat = 1.0
- ) {
- self.color = color
- self.width = width
-
- super.init(frame: .zero)
-
- frame.size.width = width
- wantsLayer = true
- layer?.backgroundColor = color.cgColor
- }
-
- func blinkTimer(_ shouldHideCursor: Bool) {
- self.isHidden = shouldHideCursor
- }
-
- public required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-}
diff --git a/Sources/CodeEditTextView/Documentation.docc/Documentation.md b/Sources/CodeEditTextView/Documentation.docc/Documentation.md
deleted file mode 100644
index 1039db6ca..000000000
--- a/Sources/CodeEditTextView/Documentation.docc/Documentation.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# ``CodeEditTextView``
-
-A text editor designed to edit code documents.
-
-## Overview
-
-A text editor specialized for displaying and editing code documents. Features include basic text editing, extremely fast initial layout, support for handling large documents, customization options for code documents.
-
-> This package contains a text view suitable for replacing `NSTextView` in some, ***specific*** cases. If you want a text view that can handle things like: left-to-right layout, custom layout elements, or feature parity with the system text view, consider using [STTextView](https://github.com/krzyzanowskim/STTextView) or [NSTextView](https://developer.apple.com/documentation/appkit/nstextview). The ``TextView`` exported by this library is designed to lay out documents made up of lines of text. However, it does not attempt to reason about the contents of the document. If you're looking to edit *source code* (indentation, syntax highlighting) consider using the parent library [CodeEditSourceEditor](https://github.com/CodeEditApp/CodeEditSourceEditor).
-
-The ``TextView`` class is an `NSView` subclass that can be embedded in a scroll view or used standalone. It parses and renders lines of a document and handles mouse and keyboard events for text editing. It also renders styled strings for use cases like syntax highlighting.
-
-## Topics
-
-### Text View
-
-- ``TextView``
-- ``CEUndoManager``
-
-### Text Layout
-
-- ``TextLayoutManager``
-- ``TextLine``
-- ``LineFragment``
-
-### Text Selection
-
-- ``TextSelectionManager``
-- ``TextSelectionManager/TextSelection``
-- ``CursorView``
-
-### Supporting Types
-
-- ``TextLineStorage``
-- ``HorizontalEdgeInsets``
-- ``LineEnding``
-- ``LineBreakStrategy``
diff --git a/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift b/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift
deleted file mode 100644
index 0e7f44904..000000000
--- a/Sources/CodeEditTextView/EmphasisManager/Emphasis.swift
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// Emphasis.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 3/31/25.
-//
-
-import AppKit
-
-/// Represents a single emphasis with its properties
-public struct Emphasis: Equatable {
- /// The range the emphasis applies it's style to, relative to the entire text document.
- public let range: NSRange
-
- /// The style to apply emphasis with, handled by the ``EmphasisManager``.
- public let style: EmphasisStyle
-
- /// Set to `true` to 'flash' the emphasis before removing it automatically after being added.
- ///
- /// Useful when an emphasis should be temporary and quick, like when emphasizing paired brackets in a document.
- public let flash: Bool
-
- /// Set to `true` to style the emphasis as 'inactive'.
- ///
- /// When ``style`` is ``EmphasisStyle/standard``, this reduces shadows and background color.
- /// For all styles, if drawing text on top of them, this uses ``EmphasisManager/getInactiveTextColor`` instead of
- /// the text view's text color to render the emphasized text.
- public let inactive: Bool
-
- /// Set to `true` if the emphasis manager should update the text view's selected range to match
- /// this object's ``Emphasis/range`` value.
- public let selectInDocument: Bool
-
- public init(
- range: NSRange,
- style: EmphasisStyle = .standard,
- flash: Bool = false,
- inactive: Bool = false,
- selectInDocument: Bool = false
- ) {
- self.range = range
- self.style = style
- self.flash = flash
- self.inactive = inactive
- self.selectInDocument = selectInDocument
- }
-}
diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift
deleted file mode 100644
index 076bea2e2..000000000
--- a/Sources/CodeEditTextView/EmphasisManager/EmphasisManager.swift
+++ /dev/null
@@ -1,357 +0,0 @@
-//
-// EmphasisManager.swift
-// CodeEditTextView
-//
-// Created by Tom Ludwig on 05.11.24.
-//
-
-import AppKit
-
-/// Manages text emphases within a text view, supporting multiple styles and groups.
-///
-/// Text emphasis draws attention to a range of text, indicating importance.
-/// This object may be used in a code editor to emphasize search results, or indicate
-/// bracket pairs, for instance.
-///
-/// This object is designed to allow for easy grouping of emphasis types. An outside
-/// object is responsible for managing what emphases are visible. Because it's very
-/// likely that more than one type of emphasis may occur on the document at the same
-/// time, grouping allows each emphasis to be managed separately from the others by
-/// each outside object without knowledge of the other's state.
-public final class EmphasisManager {
- /// Internal representation of a emphasis layer with its associated text layer
- private struct EmphasisLayer: Equatable {
- let emphasis: Emphasis
- let layer: CAShapeLayer
- let textLayer: CATextLayer?
-
- func removeLayers() {
- layer.removeAllAnimations()
- layer.removeFromSuperlayer()
- textLayer?.removeAllAnimations()
- textLayer?.removeFromSuperlayer()
- }
- }
-
- private var emphasisGroups: [String: [EmphasisLayer]] = [:]
- private let activeColor: NSColor = .findHighlightColor
- private let inactiveColor: NSColor = NSColor.lightGray.withAlphaComponent(0.4)
- private var originalSelectionColor: NSColor?
-
- weak var textView: TextView?
-
- init(textView: TextView) {
- self.textView = textView
- }
-
- // MARK: - Add, Update, Remove
-
- /// Adds a single emphasis to the specified group.
- /// - Parameters:
- /// - emphasis: The emphasis to add
- /// - id: A group identifier
- public func addEmphasis(_ emphasis: Emphasis, for id: String) {
- addEmphases([emphasis], for: id)
- }
-
- /// Adds multiple emphases to the specified group.
- /// - Parameters:
- /// - emphases: The emphases to add
- /// - id: The group identifier
- public func addEmphases(_ emphases: [Emphasis], for id: String) {
- // Store the current selection background color if not already stored
- if originalSelectionColor == nil {
- originalSelectionColor = textView?.selectionManager.selectionBackgroundColor ?? .selectedTextBackgroundColor
- }
-
- let layers = emphases.map { createEmphasisLayer(for: $0) }
- emphasisGroups[id, default: []].append(contentsOf: layers)
- // Handle selections
- handleSelections(for: emphases)
-
- // Handle flash animations
- for flashingLayer in emphasisGroups[id, default: []].filter({ $0.emphasis.flash }) {
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
- guard let self = self else { return }
- self.applyFadeOutAnimation(to: flashingLayer.layer, textLayer: flashingLayer.textLayer) {
- // Remove the emphasis from the group if it still exists
- guard let emphasisIdx = self.emphasisGroups[id, default: []].firstIndex(
- where: { $0 == flashingLayer }
- ) else {
- return
- }
-
- self.emphasisGroups[id, default: []][emphasisIdx].removeLayers()
- self.emphasisGroups[id, default: []].remove(at: emphasisIdx)
-
- if self.emphasisGroups[id, default: []].isEmpty {
- self.emphasisGroups.removeValue(forKey: id)
- }
- }
- }
- }
- }
-
- /// Replaces all emphases in the specified group.
- /// - Parameters:
- /// - emphases: The new emphases
- /// - id: The group identifier
- public func replaceEmphases(_ emphases: [Emphasis], for id: String) {
- removeEmphases(for: id)
- addEmphases(emphases, for: id)
- }
-
- /// Updates the emphases for a group by transforming the existing array.
- /// - Parameters:
- /// - id: The group identifier
- /// - transform: The transformation to apply to the existing emphases
- public func updateEmphases(for id: String, _ transform: ([Emphasis]) -> [Emphasis]) {
- let existingEmphases = emphasisGroups[id, default: []].map { $0.emphasis }
- let newEmphases = transform(existingEmphases)
- replaceEmphases(newEmphases, for: id)
- }
-
- /// Removes all emphases for the given group.
- /// - Parameter id: The group identifier
- public func removeEmphases(for id: String) {
- emphasisGroups[id]?.forEach { emphasis in
- emphasis.removeLayers()
- }
- emphasisGroups[id] = nil
-
- textView?.layer?.layoutIfNeeded()
- }
-
- /// Removes all emphases for all groups.
- public func removeAllEmphases() {
- emphasisGroups.keys.forEach { removeEmphases(for: $0) }
- emphasisGroups.removeAll()
-
- // Restore original selection emphasizing
- if let originalColor = originalSelectionColor {
- textView?.selectionManager.selectionBackgroundColor = originalColor
- }
- originalSelectionColor = nil
- }
-
- /// Gets all emphases for a given group.
- /// - Parameter id: The group identifier
- /// - Returns: Array of emphases in the group
- public func getEmphases(for id: String) -> [Emphasis] {
- emphasisGroups[id, default: []].map(\.emphasis)
- }
-
- // MARK: - Drawing Layers
-
- /// Updates the positions and bounds of all emphasis layers to match the current text layout.
- public func updateLayerBackgrounds() {
- for emphasis in emphasisGroups.flatMap(\.value) {
- guard let shapePath = makeShapePath(
- forStyle: emphasis.emphasis.style,
- range: emphasis.emphasis.range
- ) else {
- continue
- }
- if #available(macOS 14.0, *) {
- emphasis.layer.path = shapePath.cgPath
- } else {
- emphasis.layer.path = shapePath.cgPathFallback
- }
-
- // Update bounds and position
- if let cgPath = emphasis.layer.path {
- let boundingBox = cgPath.boundingBox
- emphasis.layer.bounds = boundingBox
- emphasis.layer.position = CGPoint(x: boundingBox.midX, y: boundingBox.midY)
- }
-
- // Update text layer if it exists
- if let textLayer = emphasis.textLayer {
- var bounds = shapePath.bounds
- bounds.origin.y += 1 // Move down by 1 pixel
- textLayer.frame = bounds
- }
- }
- }
-
- private func createEmphasisLayer(for emphasis: Emphasis) -> EmphasisLayer {
- guard let shapePath = makeShapePath(forStyle: emphasis.style, range: emphasis.range) else {
- return EmphasisLayer(emphasis: emphasis, layer: CAShapeLayer(), textLayer: nil)
- }
-
- let layer = createShapeLayer(shapePath: shapePath, emphasis: emphasis)
- textView?.layer?.insertSublayer(layer, at: 1)
-
- let textLayer = createTextLayer(for: emphasis)
- if let textLayer = textLayer {
- textView?.layer?.addSublayer(textLayer)
- }
-
- if emphasis.inactive == false && emphasis.style == .standard {
- applyPopAnimation(to: layer)
- }
-
- return EmphasisLayer(emphasis: emphasis, layer: layer, textLayer: textLayer)
- }
-
- private func makeShapePath(forStyle emphasisStyle: EmphasisStyle, range: NSRange) -> NSBezierPath? {
- switch emphasisStyle {
- case .standard, .outline:
- return textView?.layoutManager.roundedPathForRange(range, cornerRadius: emphasisStyle.shapeRadius)
- case .underline:
- guard let layoutManager = textView?.layoutManager else {
- return nil
- }
- let lineHeight = layoutManager.estimateLineHeight()
- let lineBottomPadding = (lineHeight - (lineHeight / layoutManager.lineHeightMultiplier)) / 4
- let path = NSBezierPath()
- for rect in layoutManager.rectsFor(range: range) {
- path.move(to: NSPoint(x: rect.minX, y: rect.maxY - lineBottomPadding))
- path.line(to: NSPoint(x: rect.maxX, y: rect.maxY - lineBottomPadding))
- }
- return path
- }
- }
-
- private func createShapeLayer(shapePath: NSBezierPath, emphasis: Emphasis) -> CAShapeLayer {
- let layer = CAShapeLayer()
-
- switch emphasis.style {
- case .standard:
- layer.cornerRadius = 4.0
- layer.fillColor = (emphasis.inactive ? inactiveColor : activeColor).cgColor
- layer.shadowColor = .black
- layer.shadowOpacity = emphasis.inactive ? 0.0 : 0.5
- layer.shadowOffset = CGSize(width: 0, height: 1.5)
- layer.shadowRadius = 1.5
- layer.opacity = 1.0
- layer.zPosition = emphasis.inactive ? 0 : 1
- case .underline(let color):
- layer.lineWidth = 1.0
- layer.lineCap = .round
- layer.strokeColor = color.cgColor
- layer.fillColor = nil
- layer.opacity = emphasis.flash ? 0.0 : 1.0
- layer.zPosition = 1
- case let .outline(color, shouldFill):
- layer.cornerRadius = 2.5
- layer.borderColor = color.cgColor
- layer.borderWidth = 0.5
- layer.fillColor = shouldFill ? color.cgColor : nil
- layer.opacity = emphasis.flash ? 0.0 : 1.0
- layer.zPosition = 1
- }
-
- if #available(macOS 14.0, *) {
- layer.path = shapePath.cgPath
- } else {
- layer.path = shapePath.cgPathFallback
- }
-
- // Set bounds of the layer; needed for the scale animation
- if let cgPath = layer.path {
- let boundingBox = cgPath.boundingBox
- layer.bounds = boundingBox
- layer.position = CGPoint(x: boundingBox.midX, y: boundingBox.midY)
- }
-
- return layer
- }
-
- private func createTextLayer(for emphasis: Emphasis) -> CATextLayer? {
- guard let textView = textView,
- let layoutManager = textView.layoutManager,
- let shapePath = layoutManager.roundedPathForRange(emphasis.range),
- let originalString = textView.textStorage?.attributedSubstring(from: emphasis.range) else {
- return nil
- }
-
- var bounds = shapePath.bounds
- bounds.origin.y += 1 // Move down by 1 pixel
-
- // Create text layer
- let textLayer = CATextLayer()
- textLayer.frame = bounds
- textLayer.backgroundColor = NSColor.clear.cgColor
- textLayer.contentsScale = textView.window?.screen?.backingScaleFactor ?? 2.0
- textLayer.allowsFontSubpixelQuantization = true
- textLayer.zPosition = 2
-
- // Get the font from the attributed string
- if let font = originalString.attribute(.font, at: 0, effectiveRange: nil) as? NSFont {
- textLayer.font = font
- } else {
- textLayer.font = NSFont.systemFont(ofSize: NSFont.systemFontSize)
- }
-
- updateTextLayer(textLayer, with: originalString, emphasis: emphasis)
- return textLayer
- }
-
- private func updateTextLayer(
- _ textLayer: CATextLayer,
- with originalString: NSAttributedString,
- emphasis: Emphasis
- ) {
- let text = NSMutableAttributedString(attributedString: originalString)
- text.addAttribute(
- .foregroundColor,
- value: emphasis.inactive ? getInactiveTextColor() : NSColor.black,
- range: NSRange(location: 0, length: text.length)
- )
- textLayer.string = text
- }
-
- private func getInactiveTextColor() -> NSColor {
- if textView?.effectiveAppearance.name == .darkAqua {
- return .white
- }
- return .black
- }
-
- // MARK: - Animations
-
- private func applyPopAnimation(to layer: CALayer) {
- let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale")
- scaleAnimation.values = [1.0, 1.25, 1.0]
- scaleAnimation.keyTimes = [0, 0.3, 1]
- scaleAnimation.duration = 0.1
- scaleAnimation.timingFunctions = [CAMediaTimingFunction(name: .easeOut)]
-
- layer.add(scaleAnimation, forKey: "popAnimation")
- }
-
- private func applyFadeOutAnimation(to layer: CALayer, textLayer: CATextLayer?, completion: @escaping () -> Void) {
- let fadeAnimation = CABasicAnimation(keyPath: "opacity")
- fadeAnimation.fromValue = 1.0
- fadeAnimation.toValue = 0.0
- fadeAnimation.duration = 0.1
- fadeAnimation.timingFunction = CAMediaTimingFunction(name: .easeOut)
- fadeAnimation.fillMode = .forwards
- fadeAnimation.isRemovedOnCompletion = false
-
- layer.add(fadeAnimation, forKey: "fadeOutAnimation")
-
- if let textLayer = textLayer, let textFadeAnimation = fadeAnimation.copy() as? CABasicAnimation {
- textLayer.add(textFadeAnimation, forKey: "fadeOutAnimation")
- textLayer.add(textFadeAnimation, forKey: "fadeOutAnimation")
- }
-
- // Remove both layers after animation completes
- DispatchQueue.main.asyncAfter(deadline: .now() + fadeAnimation.duration) {
- layer.removeFromSuperlayer()
- textLayer?.removeFromSuperlayer()
- completion()
- }
- }
-
- /// Handles selection of text ranges for emphases where select is true
- private func handleSelections(for emphases: [Emphasis]) {
- let selectableRanges = emphases.filter(\.selectInDocument).map(\.range)
- guard let textView, !selectableRanges.isEmpty else { return }
-
- textView.selectionManager.setSelectedRanges(selectableRanges)
- textView.scrollSelectionToVisible()
- textView.needsDisplay = true
- }
-}
diff --git a/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift b/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift
deleted file mode 100644
index 66b32a862..000000000
--- a/Sources/CodeEditTextView/EmphasisManager/EmphasisStyle.swift
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// EmphasisStyle.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 3/31/25.
-//
-
-import AppKit
-
-/// Defines the style of emphasis to apply to text ranges
-public enum EmphasisStyle: Equatable {
- /// Standard emphasis with background color
- case standard
- /// Underline emphasis with a line color
- case underline(color: NSColor)
- /// Outline emphasis with a border color
- case outline(color: NSColor, fill: Bool = false)
-
- public static func == (lhs: EmphasisStyle, rhs: EmphasisStyle) -> Bool {
- switch (lhs, rhs) {
- case (.standard, .standard):
- return true
- case (.underline(let lhsColor), .underline(let rhsColor)):
- return lhsColor == rhsColor
- case let (.outline(lhsColor, lhsFill), .outline(rhsColor, rhsFill)):
- return lhsColor == rhsColor && lhsFill == rhsFill
- default:
- return false
- }
- }
-
- var shapeRadius: CGFloat {
- switch self {
- case .standard:
- 4
- case .underline:
- 0
- case .outline:
- 2.5
- }
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/CGRectArray+BoundingRect.swift b/Sources/CodeEditTextView/Extensions/CGRectArray+BoundingRect.swift
deleted file mode 100644
index 5f94249fa..000000000
--- a/Sources/CodeEditTextView/Extensions/CGRectArray+BoundingRect.swift
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// File.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 7/17/25.
-//
-
-import AppKit
-
-extension Array where Element == CGRect {
- /// Returns a rect object that contains all of the rects in this array.
- /// Returns `.zero` if the array is empty.
- /// - Returns: The minimum rectangle that contains all rectangles in this array.
- func boundingRect() -> CGRect {
- guard !self.isEmpty else { return .zero }
- let minX = self.min(by: { $0.origin.x < $1.origin.x })?.origin.x ?? 0
- let minY = self.min(by: { $0.origin.y < $1.origin.y })?.origin.y ?? 0
- let max = self.max(by: { $0.maxY < $1.maxY }) ?? .zero
- let origin = CGPoint(x: minX, y: minY)
- let size = CGSize(width: max.maxX - minX, height: max.maxY - minY)
- return CGRect(origin: origin, size: size)
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/CTTypesetter+SuggestLineBreak.swift b/Sources/CodeEditTextView/Extensions/CTTypesetter+SuggestLineBreak.swift
deleted file mode 100644
index fefe98530..000000000
--- a/Sources/CodeEditTextView/Extensions/CTTypesetter+SuggestLineBreak.swift
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// CTTypesetter+SuggestLineBreak.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/24/25.
-//
-
-import AppKit
-
-extension CTTypesetter {
- /// Suggest a line break for the given line break strategy.
- /// - Parameters:
- /// - typesetter: The typesetter to use.
- /// - strategy: The strategy that determines a valid line break.
- /// - startingOffset: Where to start breaking.
- /// - constrainingWidth: The available space for the line.
- /// - Returns: An offset relative to the entire string indicating where to break.
- func suggestLineBreak(
- using string: NSAttributedString,
- strategy: LineBreakStrategy,
- subrange: NSRange,
- constrainingWidth: CGFloat
- ) -> Int {
- switch strategy {
- case .character:
- return suggestLineBreakForCharacter(
- string: string,
- startingOffset: subrange.location,
- constrainingWidth: constrainingWidth
- )
- case .word:
- return suggestLineBreakForWord(
- string: string,
- subrange: subrange,
- constrainingWidth: constrainingWidth
- )
- }
- }
-
- /// Suggest a line break for the character break strategy.
- /// - Parameters:
- /// - typesetter: The typesetter to use.
- /// - startingOffset: Where to start breaking.
- /// - constrainingWidth: The available space for the line.
- /// - Returns: An offset relative to the entire string indicating where to break.
- private func suggestLineBreakForCharacter(
- string: NSAttributedString,
- startingOffset: Int,
- constrainingWidth: CGFloat
- ) -> Int {
- var breakIndex: Int
- // Check if we need to skip to an attachment
-
- breakIndex = startingOffset + CTTypesetterSuggestClusterBreak(self, startingOffset, constrainingWidth)
- guard breakIndex < string.length else {
- return breakIndex
- }
- let substring = string.attributedSubstring(from: NSRange(location: breakIndex - 1, length: 2)).string
- if substring == LineEnding.carriageReturnLineFeed.rawValue {
- // Breaking in the middle of the clrf line ending
- breakIndex += 1
- }
-
- return breakIndex
- }
-
- /// Suggest a line break for the word break strategy.
- /// - Parameters:
- /// - typesetter: The typesetter to use.
- /// - startingOffset: Where to start breaking.
- /// - constrainingWidth: The available space for the line.
- /// - Returns: An offset relative to the entire string indicating where to break.
- private func suggestLineBreakForWord(
- string: NSAttributedString,
- subrange: NSRange,
- constrainingWidth: CGFloat
- ) -> Int {
- var breakIndex = subrange.location + CTTypesetterSuggestClusterBreak(self, subrange.location, constrainingWidth)
- let isBreakAtEndOfString = breakIndex >= subrange.max
-
- let isNextCharacterCarriageReturn = checkIfLineBreakOnCRLF(breakIndex, for: string)
- if isNextCharacterCarriageReturn {
- breakIndex += 1
- }
-
- let canLastCharacterBreak = (breakIndex - 1 > 0 && ensureCharacterCanBreakLine(at: breakIndex - 1, for: string))
-
- if isBreakAtEndOfString || canLastCharacterBreak {
- // Breaking either at the end of the string, or on a whitespace.
- return breakIndex
- } else if breakIndex - 1 > 0 {
- // Try to walk backwards until we hit a whitespace or punctuation
- var index = breakIndex - 1
-
- while breakIndex - index < 100 && index > subrange.location {
- if ensureCharacterCanBreakLine(at: index, for: string) {
- return index + 1
- }
- index -= 1
- }
- }
-
- return breakIndex
- }
-
- /// Ensures the character at the given index can break a line.
- /// - Parameter index: The index to check at.
- /// - Returns: True, if the character is a whitespace or punctuation character.
- private func ensureCharacterCanBreakLine(at index: Int, for string: NSAttributedString) -> Bool {
- let subrange = (string.string as NSString).rangeOfComposedCharacterSequence(at: index)
- let set = CharacterSet(charactersIn: (string.string as NSString).substring(with: subrange))
- return set.isSubset(of: .whitespacesAndNewlines) || set.isSubset(of: .punctuationCharacters)
- }
-
- /// Check if the break index is on a CRLF (`\r\n`) character, indicating a valid break position.
- /// - Parameter breakIndex: The index to check in the string.
- /// - Returns: True, if the break index lies after the `\n` character in a `\r\n` sequence.
- private func checkIfLineBreakOnCRLF(_ breakIndex: Int, for string: NSAttributedString) -> Bool {
- guard breakIndex - 1 > 0 && breakIndex + 1 <= string.length else {
- return false
- }
- let substringRange = NSRange(location: breakIndex - 1, length: 2)
- let substring = string.attributedSubstring(from: substringRange).string
-
- return substring == LineEnding.carriageReturnLineFeed.rawValue
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/CharacterSet.swift b/Sources/CodeEditTextView/Extensions/CharacterSet.swift
deleted file mode 100644
index 0d59bc970..000000000
--- a/Sources/CodeEditTextView/Extensions/CharacterSet.swift
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// CharacterSet.swift
-// CodeEditTextView
-//
-// Created by Abe Malla on 3/29/25.
-//
-
-import Foundation
-
-extension CharacterSet {
- /// Returns a character set containing the characters common in code names
- static let codeIdentifierCharacters: CharacterSet = .alphanumerics
- .union(.init(charactersIn: "_"))
-}
diff --git a/Sources/CodeEditTextView/Extensions/GC+ApproximateEqual.swift b/Sources/CodeEditTextView/Extensions/GC+ApproximateEqual.swift
deleted file mode 100644
index ef0a258bb..000000000
--- a/Sources/CodeEditTextView/Extensions/GC+ApproximateEqual.swift
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// GC+ApproximateEqual.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 2/16/24.
-//
-
-import Foundation
-
-extension CGFloat {
- func approxEqual(_ other: CGFloat, tolerance: CGFloat = 0.5) -> Bool {
- abs(self - other) <= tolerance
- }
-}
-
-extension CGPoint {
- func approxEqual(_ other: CGPoint, tolerance: CGFloat = 0.5) -> Bool {
- return self.x.approxEqual(other.x, tolerance: tolerance)
- && self.y.approxEqual(other.y, tolerance: tolerance)
- }
-}
-
-extension CGRect {
- func approxEqual(_ other: CGRect, tolerance: CGFloat = 0.5) -> Bool {
- return self.origin.approxEqual(other.origin, tolerance: tolerance)
- && self.width.approxEqual(other.width, tolerance: tolerance)
- && self.height.approxEqual(other.height, tolerance: tolerance)
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSBezierPath+CGPathFallback.swift b/Sources/CodeEditTextView/Extensions/NSBezierPath+CGPathFallback.swift
deleted file mode 100644
index a174185d6..000000000
--- a/Sources/CodeEditTextView/Extensions/NSBezierPath+CGPathFallback.swift
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// NSBezierPath+CGPathFallback.swift
-// CodeEditTextView
-//
-// Created by Tom Ludwig on 27.11.24.
-//
-
-import AppKit
-
-extension NSBezierPath {
- /// Converts the `NSBezierPath` instance into a `CGPath`, providing a fallback method for compatibility(macOS < 14).
- public var cgPathFallback: CGPath {
- let path = CGMutablePath()
- var points = [CGPoint](repeating: .zero, count: 3)
-
- for index in 0 ..< elementCount {
- let type = element(at: index, associatedPoints: &points)
- switch type {
- case .moveTo:
- path.move(to: points[0])
- case .lineTo:
- path.addLine(to: points[0])
- case .curveTo:
- path.addCurve(to: points[2], control1: points[0], control2: points[1])
- case .closePath:
- path.closeSubpath()
- default:
- continue
- }
- }
-
- return path
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSBezierPath+SmoothPath.swift b/Sources/CodeEditTextView/Extensions/NSBezierPath+SmoothPath.swift
deleted file mode 100644
index 4a09a64ef..000000000
--- a/Sources/CodeEditTextView/Extensions/NSBezierPath+SmoothPath.swift
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// NSBezierPath+SmoothPath.swift
-// CodeEditSourceEditor
-//
-// Created by Tom Ludwig on 12.11.24.
-//
-
-import AppKit
-import SwiftUI
-
-extension NSBezierPath {
- private func quadCurve(to endPoint: CGPoint, controlPoint: CGPoint) {
- guard pointIsValid(endPoint) && pointIsValid(controlPoint) else { return }
-
- let startPoint = self.currentPoint
- let controlPoint1 = CGPoint(x: (startPoint.x + (controlPoint.x - startPoint.x) * 2.0 / 3.0),
- y: (startPoint.y + (controlPoint.y - startPoint.y) * 2.0 / 3.0))
- let controlPoint2 = CGPoint(x: (endPoint.x + (controlPoint.x - endPoint.x) * 2.0 / 3.0),
- y: (endPoint.y + (controlPoint.y - endPoint.y) * 2.0 / 3.0))
-
- curve(to: endPoint, controlPoint1: controlPoint1, controlPoint2: controlPoint2)
- }
-
- private func pointIsValid(_ point: CGPoint) -> Bool {
- return !point.x.isNaN && !point.y.isNaN
- }
-
- // swiftlint:disable:next function_body_length
- static func smoothPath(_ points: [NSPoint], radius cornerRadius: CGFloat) -> NSBezierPath {
- // Normalizing radius to compensate for the quadraticCurve
- let radius = cornerRadius * 1.15
-
- let path = NSBezierPath()
-
- guard points.count > 1 else { return path }
-
- // Calculate the initial corner start based on the first two points
- let initialVector = NSPoint(x: points[1].x - points[0].x, y: points[1].y - points[0].y)
- let initialDistance = sqrt(initialVector.x * initialVector.x + initialVector.y * initialVector.y)
-
- let initialUnitVector = NSPoint(x: initialVector.x / initialDistance, y: initialVector.y / initialDistance)
- let initialCornerStart = NSPoint(
- x: points[0].x + initialUnitVector.x * radius,
- y: points[0].y + initialUnitVector.y * radius
- )
-
- // Start path at the initial corner start
- path.move(to: points.first == points.last ? initialCornerStart : points[0])
-
- for index in 1.. 0 ? NSPoint(x: vector1.x / distance1, y: vector1.y / distance1) : NSPoint.zero
- let unitVector2 = distance2 > 0 ? NSPoint(x: vector2.x / distance2, y: vector2.y / distance2) : NSPoint.zero
-
- // Calculate the corner start and end
- let cornerStart = NSPoint(x: p1.x - unitVector1.x * radius, y: p1.y - unitVector1.y * radius)
- let cornerEnd = NSPoint(x: p1.x + unitVector2.x * radius, y: p1.y + unitVector2.y * radius)
-
- // Check if this segment is a straight line or a curve
- if unitVector1 != unitVector2 { // There's a change in direction, add a curve
- path.line(to: cornerStart)
- path.quadCurve(to: cornerEnd, controlPoint: p1)
- } else { // Straight line, just add a line
- path.line(to: p1)
- }
- }
-
- // Handle the final segment if the path is closed
- if points.first == points.last, points.count > 2 {
- // Closing path by rounding back to the initial point
- let lastPoint = points[points.count - 2]
- let firstPoint = points[0]
-
- // Calculate the vectors and unit vectors
- let finalVector = NSPoint(x: firstPoint.x - lastPoint.x, y: firstPoint.y - lastPoint.y)
- let distance = sqrt(finalVector.x * finalVector.x + finalVector.y * finalVector.y)
-
- // Dividing by 0 after this will cause an assertion failure. Something went wrong with the given points
- // this could mean we're rounding a 0-width and 0-height rect.
- guard distance != 0 else {
- path.line(to: lastPoint)
- return path
- }
-
- let unitVector = NSPoint(x: finalVector.x / distance, y: finalVector.y / distance)
-
- // Calculate the final corner start and initial corner end
- let finalCornerStart = NSPoint(
- x: firstPoint.x - unitVector.x * radius,
- y: firstPoint.y - unitVector.y * radius
- )
-
- let initialCornerEnd = NSPoint(
- x: points[0].x + initialUnitVector.x * radius,
- y: points[0].y + initialUnitVector.y * radius
- )
-
- path.line(to: finalCornerStart)
- path.quadCurve(to: initialCornerEnd, controlPoint: firstPoint)
- path.close()
-
- } else if let lastPoint = points.last { // For open paths, just connect to the last point
- path.line(to: lastPoint)
- }
-
- return path
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSColor+Greyscale.swift b/Sources/CodeEditTextView/Extensions/NSColor+Greyscale.swift
deleted file mode 100644
index 4afd858ab..000000000
--- a/Sources/CodeEditTextView/Extensions/NSColor+Greyscale.swift
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// NSColor+Greyscale.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 2/2/24.
-//
-
-import AppKit
-
-extension NSColor {
- var grayscale: NSColor {
- guard let color = self.usingColorSpace(.deviceRGB) else { return self }
- // linear relative weights for grayscale: https://en.wikipedia.org/wiki/Grayscale
- let gray = 0.299 * color.redComponent + 0.587 * color.greenComponent + 0.114 * color.blueComponent
- return NSColor(white: gray, alpha: color.alphaComponent)
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSColor+Hex.swift b/Sources/CodeEditTextView/Extensions/NSColor+Hex.swift
deleted file mode 100644
index d52f6a0d4..000000000
--- a/Sources/CodeEditTextView/Extensions/NSColor+Hex.swift
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// NSColor+Hex.swift
-// CodeEditTextView
-//
-// Created by Tom Ludwig on 27.11.24.
-//
-
-import AppKit
-
-extension NSColor {
- convenience init(hex: Int, alpha: Double = 1.0) {
- let red = (hex >> 16) & 0xFF
- let green = (hex >> 8) & 0xFF
- let blue = hex & 0xFF
- self.init(srgbRed: Double(red) / 255, green: Double(green) / 255, blue: Double(blue) / 255, alpha: alpha)
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+init.swift b/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+init.swift
deleted file mode 100644
index 0c8c8e6a0..000000000
--- a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+init.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// NSRange.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/20/24.
-//
-
-import Foundation
-
-public extension NSRange {
- @inline(__always)
- init(start: Int, end: Int) {
- self.init(location: start, length: end - start)
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+isEmpty.swift b/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+isEmpty.swift
deleted file mode 100644
index 61ae0bc04..000000000
--- a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+isEmpty.swift
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// NSRange+isEmpty.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/23/23.
-//
-
-import Foundation
-
-public extension NSRange {
- var isEmpty: Bool {
- length == 0
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+translate.swift b/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+translate.swift
deleted file mode 100644
index 40f6251cc..000000000
--- a/Sources/CodeEditTextView/Extensions/NSRange+/NSRange+translate.swift
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// NSRange+translate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 7/21/25.
-//
-
-import Foundation
-
-extension NSRange {
- func translate(location: Int) -> NSRange {
- NSRange(location: self.location + location, length: length)
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/NSTextStorage+getLine.swift b/Sources/CodeEditTextView/Extensions/NSTextStorage+getLine.swift
deleted file mode 100644
index 0e601f1d7..000000000
--- a/Sources/CodeEditTextView/Extensions/NSTextStorage+getLine.swift
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// NSTextStorage+getLine.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/3/23.
-//
-
-import AppKit
-
-extension NSString {
- func getNextLine(startingAt location: Int) -> NSRange? {
- let range = NSRange(location: location, length: 0)
- var end: Int = NSNotFound
- var contentsEnd: Int = NSNotFound
- self.getLineStart(nil, end: &end, contentsEnd: &contentsEnd, for: range)
- if end != NSNotFound && contentsEnd != NSNotFound && end != contentsEnd {
- return NSRange(start: contentsEnd, end: end)
- } else {
- return nil
- }
- }
-}
-
-extension NSTextStorage {
- func getNextLine(startingAt location: Int) -> NSRange? {
- (self.string as NSString).getNextLine(startingAt: location)
- }
-}
diff --git a/Sources/CodeEditTextView/Extensions/PixelAligned.swift b/Sources/CodeEditTextView/Extensions/PixelAligned.swift
deleted file mode 100644
index 7a1c22d9c..000000000
--- a/Sources/CodeEditTextView/Extensions/PixelAligned.swift
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-// PixelAligned.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/10/23.
-//
-
-import Foundation
-
-public extension NSRect {
- /// Creates a rect pixel-aligned on all edges.
- var pixelAligned: NSRect {
- NSIntegralRectWithOptions(self, .alignAllEdgesNearest)
- }
-}
-
-public extension NSPoint {
- /// Creates a point that's pixel-aligned.
- var pixelAligned: NSPoint {
- NSIntegralRectWithOptions(NSRect(x: self.x, y: self.y, width: 0, height: 0), .alignAllEdgesNearest).origin
- }
-}
diff --git a/Sources/CodeEditTextView/InvisibleCharacters/InvisibleCharactersDelegate.swift b/Sources/CodeEditTextView/InvisibleCharacters/InvisibleCharactersDelegate.swift
deleted file mode 100644
index 9b7fa9d75..000000000
--- a/Sources/CodeEditTextView/InvisibleCharacters/InvisibleCharactersDelegate.swift
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// InvisibleCharactersConfig.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/9/25.
-//
-
-import Foundation
-import AppKit
-
-public enum InvisibleCharacterStyle: Hashable {
- case replace(replacementCharacter: String, color: NSColor, font: NSFont)
- case emphasize(color: NSColor)
-}
-
-public protocol InvisibleCharactersDelegate: AnyObject {
- var triggerCharacters: Set { get }
- func invisibleStyleShouldClearCache() -> Bool
- func invisibleStyle(for character: UInt16, at range: NSRange, lineRange: NSRange) -> InvisibleCharacterStyle?
-}
diff --git a/Sources/CodeEditTextView/MarkedTextManager/MarkedRanges.swift b/Sources/CodeEditTextView/MarkedTextManager/MarkedRanges.swift
deleted file mode 100644
index 3cfcdbafd..000000000
--- a/Sources/CodeEditTextView/MarkedTextManager/MarkedRanges.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// MarkedRanges.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/17/25.
-//
-
-import AppKit
-
-/// Struct for passing attribute and range information easily down into line fragments, typesetters without
-/// requiring a reference to the marked text manager.
-public struct MarkedRanges {
- let ranges: [NSRange]
- let attributes: [NSAttributedString.Key: Any]
-}
diff --git a/Sources/CodeEditTextView/MarkedTextManager/MarkedTextManager.swift b/Sources/CodeEditTextView/MarkedTextManager/MarkedTextManager.swift
deleted file mode 100644
index 5270dce8d..000000000
--- a/Sources/CodeEditTextView/MarkedTextManager/MarkedTextManager.swift
+++ /dev/null
@@ -1,102 +0,0 @@
-//
-// MarkedTextManager.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 11/7/23.
-//
-
-import AppKit
-
-/// Manages marked ranges. Not a public API.
-class MarkedTextManager {
- /// All marked ranges being tracked.
- private(set) var markedRanges: [NSRange] = []
-
- /// The attributes to use for marked text. Defaults to a single underline when `nil`
- var markedTextAttributes: [NSAttributedString.Key: Any] = [
- .underlineStyle: NSUnderlineStyle.single.rawValue
- ]
-
- /// True if there is marked text being tracked.
- var hasMarkedText: Bool {
- !markedRanges.isEmpty
- }
-
- /// Removes all marked ranges.
- func removeAll() {
- markedRanges.removeAll()
- }
-
- /// Updates the stored marked ranges.
- ///
- /// Two cases here:
- /// - No marked ranges yet:
- /// - Create new marked ranges from the text selection, with the length of the text being inserted
- /// - Marked ranges exist:
- /// - Update the existing marked ranges, using the original ranges as a reference. The marked ranges don't
- /// change position, so we update each one with the new length and then move it to reflect each cursor's
- /// added text.
- ///
- /// - Parameters:
- /// - insertLength: The length of the string being inserted.
- /// - textSelections: The current text selections.
- func updateMarkedRanges(insertLength: Int, textSelections: [NSRange]) {
- var cumulativeExistingDiff = 0
- var newRanges = [NSRange]()
- let ranges: [NSRange] = if markedRanges.isEmpty {
- textSelections.sorted(by: { $0.location < $1.location })
- } else {
- markedRanges.sorted(by: { $0.location < $1.location })
- }
-
- for range in ranges {
- newRanges.append(NSRange(location: range.location + cumulativeExistingDiff, length: insertLength))
- cumulativeExistingDiff += insertLength - range.length
- }
- markedRanges = newRanges
- }
-
- /// Finds any marked ranges for a line and returns them.
- /// - Parameter lineRange: The range of the line.
- /// - Returns: A `MarkedRange` struct with information about attributes and ranges. `nil` if there is no marked
- /// text for this line.
- func markedRanges(in lineRange: NSRange) -> MarkedRanges? {
- let ranges = markedRanges.compactMap {
- $0.intersection(lineRange)
- }.map {
- NSRange(location: $0.location - lineRange.location, length: $0.length)
- }
- if ranges.isEmpty {
- return nil
- } else {
- return MarkedRanges(ranges: ranges, attributes: markedTextAttributes)
- }
- }
-
- /// Updates marked text ranges for a new set of selections.
- /// - Parameter textSelections: The new text selections.
- /// - Returns: `True` if the marked text needs layout.
- func updateForNewSelections(textSelections: [TextSelectionManager.TextSelection]) -> Bool {
- // Ensure every marked range has a matching selection.
- // If any marked ranges do not have a matching selection, unmark.
- // Matching, in this context, means having a selection in the range location...max
- var markedRanges = markedRanges
- for textSelection in textSelections {
- if let markedRangeIdx = markedRanges.firstIndex(where: {
- ($0.location...$0.max).contains(textSelection.range.location)
- && ($0.location...$0.max).contains(textSelection.range.max)
- }) {
- markedRanges.remove(at: markedRangeIdx)
- } else {
- return true
- }
- }
-
- // If any remaining marked ranges, we need to unmark.
- if !markedRanges.isEmpty {
- return false
- } else {
- return true
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift
deleted file mode 100644
index e1f4363d0..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachment.swift
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// TextAttachment.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/24/25.
-//
-
-import AppKit
-
-public enum TextAttachmentAction {
- /// Perform no action.
- case none
- /// Replace the attachment range with the given string.
- case replace(text: String)
- /// Discard the attachment and perform no other action, this is the default action.
- case discard
-}
-
-/// Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view.
-public protocol TextAttachment: AnyObject {
- var width: CGFloat { get }
- var isSelected: Bool { get set }
-
- func draw(in context: CGContext, rect: NSRect)
-
- /// The action that should be performed when this attachment is invoked (double-click, enter pressed).
- /// This method is optional, by default the attachment is discarded.
- func attachmentAction() -> TextAttachmentAction
-}
-
-public extension TextAttachment {
- func attachmentAction() -> TextAttachmentAction { .discard }
-}
-
-/// Type-erasing type for ``TextAttachment`` that also contains range information about the attachment.
-///
-/// This type cannot be initialized outside of `CodeEditTextView`, but will be received when interrogating
-/// the ``TextAttachmentManager``.
-public struct AnyTextAttachment: Equatable {
- package(set) public var range: NSRange
- public let attachment: any TextAttachment
-
- var width: CGFloat {
- attachment.width
- }
-
- public static func == (_ lhs: AnyTextAttachment, _ rhs: AnyTextAttachment) -> Bool {
- lhs.range == rhs.range && lhs.attachment === rhs.attachment
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift
deleted file mode 100644
index 7b4d0c0e5..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManager.swift
+++ /dev/null
@@ -1,222 +0,0 @@
-//
-// TextAttachmentManager.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/24/25.
-//
-
-import Foundation
-
-/// Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a
-/// line range.
-///
-/// If two attachments are overlapping, the one placed further along in the document will be
-/// ignored when laying out attachments.
-public final class TextAttachmentManager {
- private var orderedAttachments: [AnyTextAttachment] = []
- weak var layoutManager: TextLayoutManager?
- private var selectionObserver: (any NSObjectProtocol)?
-
- public weak var delegate: TextAttachmentManagerDelegate?
-
- /// Adds a new attachment, keeping `orderedAttachments` sorted by range.location.
- /// If two attachments overlap, the layout phase will later ignore the one with the higher start.
- /// - Complexity: `O(n log(n))` due to array insertion. Could be improved with a binary tree.
- public func add(_ attachment: any TextAttachment, for range: NSRange) {
- let attachment = AnyTextAttachment(range: range, attachment: attachment)
- let insertIndex = findInsertionIndex(for: range.location)
- orderedAttachments.insert(attachment, at: insertIndex)
-
- // This is ugly, but if our attachment meets the end of the next line, we need to merge that line with this
- // one.
- var getNextOne = false
- layoutManager?.lineStorage.linesInRange(range).dropFirst().forEach {
- if $0.height != 0 {
- layoutManager?.lineStorage.update(atOffset: $0.range.location, delta: 0, deltaHeight: -$0.height)
- }
-
- // Only do this if it's not the end of the document
- if range.max == $0.range.max && range.max != layoutManager?.lineStorage.length {
- getNextOne = true
- }
- }
-
- if getNextOne,
- let trailingLine = layoutManager?.lineStorage.getLine(atOffset: range.max),
- trailingLine.height != 0 {
- // Update the one trailing line.
- layoutManager?.lineStorage.update(atOffset: range.max, delta: 0, deltaHeight: -trailingLine.height)
- }
-
- layoutManager?.setNeedsLayout()
-
- delegate?.textAttachmentDidAdd(attachment.attachment, for: range)
- }
-
- /// Removes an attachment and invalidates layout for the removed range.
- /// - Parameter offset: The offset the attachment begins at.
- /// - Returns: The removed attachment, if it exists.
- @discardableResult
- public func remove(atOffset offset: Int) -> AnyTextAttachment? {
- let index = findInsertionIndex(for: offset)
-
- guard index < orderedAttachments.count && orderedAttachments[index].range.location == offset else {
- return nil
- }
-
- let attachment = orderedAttachments.remove(at: index)
- layoutManager?.invalidateLayoutForRange(attachment.range)
-
- delegate?.textAttachmentDidRemove(attachment.attachment, for: attachment.range)
-
- return attachment
- }
-
- /// Finds attachments starting in the given line range, and returns them as an array.
- /// Returned attachment's ranges will be relative to the _document_, not the line.
- /// - Complexity: `O(n log(n))`, ideally `O(log(n))`
- public func getAttachmentsStartingIn(_ range: NSRange) -> [AnyTextAttachment] {
- var results: [AnyTextAttachment] = []
- var idx = findInsertionIndex(for: range.location)
- while idx < orderedAttachments.count {
- let attachment = orderedAttachments[idx]
- let loc = attachment.range.location
- if loc >= range.upperBound {
- break
- }
- if range.contains(loc) {
- if let lastResult = results.last, !lastResult.range.contains(attachment.range.location) {
- results.append(attachment)
- } else if results.isEmpty {
- results.append(attachment)
- }
- }
- idx += 1
- }
- return results
- }
-
- /// Returns all attachments whose ranges overlap the given query range.
- ///
- /// - Parameter range: The `NSRange` to test for overlap.
- /// - Returns: An array of `AnyTextAttachment` instances whose ranges intersect `query`.
- public func getAttachmentsOverlapping(_ range: NSRange) -> [AnyTextAttachment] {
- // Find the first attachment whose end is beyond the start of the query.
- guard let startIdx = orderedAttachments.firstIndex(where: { $0.range.upperBound >= range.location }) else {
- return []
- }
-
- var results: [AnyTextAttachment] = []
- var idx = startIdx
-
- // Collect every subsequent attachment that truly overlaps the query.
- while idx < orderedAttachments.count {
- let attachment = orderedAttachments[idx]
- if attachment.range.location >= range.upperBound {
- break
- }
- if (attachment.range.intersection(range)?.length ?? 0 > 0 || attachment.range.max == range.location)
- && results.last?.range != attachment.range {
- results.append(attachment)
- }
- idx += 1
- }
-
- return results
- }
-
- /// Updates the text attachments to stay in the same relative spot after the edit, and removes any attachments that
- /// were in the updated range.
- /// - Parameters:
- /// - atOffset: The offset text was updated at.
- /// - delta: The change delta, positive is an insertion.
- package func textUpdated(atOffset: Int, delta: Int) {
- for (idx, attachment) in orderedAttachments.enumerated().reversed() {
- if attachment.range.contains(atOffset) {
- orderedAttachments.remove(at: idx)
- } else if attachment.range.location > atOffset {
- orderedAttachments[idx].range.location += delta
- }
- }
- }
-
- /// Set up the attachment manager to listen to selection updates, giving text attachments a chance to respond to
- /// selection state.
- ///
- /// This is specifically not in the initializer to prevent a bit of a chicken-and-the-egg situation where the
- /// layout manager and selection manager need each other to init.
- ///
- /// - Parameter selectionManager: The selection manager to listen to.
- func setUpSelectionListener(for selectionManager: TextSelectionManager) {
- if let selectionObserver {
- NotificationCenter.default.removeObserver(selectionObserver)
- }
-
- selectionObserver = NotificationCenter.default.addObserver(
- forName: TextSelectionManager.selectionChangedNotification,
- object: selectionManager,
- queue: .main
- ) { [weak self] notification in
- guard let selectionManager = notification.object as? TextSelectionManager else {
- return
- }
- let selectedSet = IndexSet(ranges: selectionManager.textSelections.map({ $0.range }))
- for attachment in self?.orderedAttachments ?? [] {
- let isSelected = selectedSet.contains(integersIn: attachment.range)
- if attachment.attachment.isSelected != isSelected {
- self?.layoutManager?.invalidateLayoutForRange(attachment.range)
- }
- attachment.attachment.isSelected = isSelected
- }
- }
- }
-
- deinit {
- if let selectionObserver {
- NotificationCenter.default.removeObserver(selectionObserver)
- }
- }
-}
-
-private extension TextAttachmentManager {
- /// Binary-searches `orderedAttachments` and returns the smallest index
- /// at which `predicate(attachment)` is true (i.e. the lower-bound index).
- ///
- /// - Note: always returns a value in `0...orderedAttachments.count`.
- /// If it returns `orderedAttachments.count`, no element satisfied
- /// the predicate, but that’s still a valid insertion point.
- func lowerBoundIndex(
- where predicate: (AnyTextAttachment) -> Bool
- ) -> Int {
- var low = 0
- var high = orderedAttachments.count
- while low < high {
- let mid = (low + high) / 2
- if predicate(orderedAttachments[mid]) {
- high = mid
- } else {
- low = mid + 1
- }
- }
- return low
- }
-
- /// Returns the index in `orderedAttachments` at which an attachment whose
- /// `range.location == location` *could* be inserted, keeping the array sorted.
- ///
- /// - Parameter location: the attachment’s `range.location`
- /// - Returns: a valid insertion index in `0...orderedAttachments.count`
- func findInsertionIndex(for location: Int) -> Int {
- lowerBoundIndex { $0.range.location >= location }
- }
-
- /// Finds the first index whose attachment satisfies `predicate`.
- ///
- /// - Parameter predicate: the query predicate.
- /// - Returns: the first matching index, or `nil` if none of the
- /// attachments satisfy the predicate.
- func firstIndex(where predicate: (AnyTextAttachment) -> Bool) -> Int? {
- let idx = lowerBoundIndex { predicate($0) }
- return idx < orderedAttachments.count ? idx : nil
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManagerDelegate.swift b/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManagerDelegate.swift
deleted file mode 100644
index c5b363b00..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextAttachments/TextAttachmentManagerDelegate.swift
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-// TextAttachmentManagerDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/25/25.
-//
-
-import Foundation
-
-public protocol TextAttachmentManagerDelegate: AnyObject {
- func textAttachmentDidAdd(_ attachment: any TextAttachment, for range: NSRange)
- func textAttachmentDidRemove(_ attachment: any TextAttachment, for range: NSRange)
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift
deleted file mode 100644
index b3d7d11bc..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Edits.swift
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-// TextLayoutManager+Edits.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/3/23.
-//
-
-import AppKit
-
-// MARK: - Edits
-
-extension TextLayoutManager: NSTextStorageDelegate {
- /// Receives edit notifications from the text storage and updates internal data structures to stay in sync with
- /// text content.
- ///
- /// If the changes are only attribute changes, this method invalidates layout for the edited range and returns.
- ///
- /// Otherwise, any lines that were removed or replaced by the edit are first removed from the text line layout
- /// storage. Then, any new lines are inserted into the same storage.
- ///
- /// For instance, if inserting a newline this method will:
- /// - Remove no lines (none were replaced)
- /// - Update the current line's range to contain the newline character.
- /// - Insert a new line after the current line.
- ///
- /// If a selection containing a newline is deleted and replaced with two more newlines this method will:
- /// - Delete the original line.
- /// - Insert two lines.
- ///
- /// - Note: This method *does not* cause a layout calculation. If a method is finding `NaN` values for line
- /// fragments, ensure `layout` or `ensureLayoutUntil` are called on the subject ranges.
- public func textStorage(
- _ textStorage: NSTextStorage,
- didProcessEditing editedMask: NSTextStorageEditActions,
- range editedRange: NSRange,
- changeInLength delta: Int
- ) {
- guard editedMask.contains(.editedCharacters) else {
- if editedMask.contains(.editedAttributes) && delta == 0 {
- invalidateLayoutForRange(editedRange)
- }
- return
- }
-
- let insertedStringRange = NSRange(location: editedRange.location, length: editedRange.length - delta)
- removeLayoutLinesIn(range: insertedStringRange)
- insertNewLines(for: editedRange)
-
- attachments.textUpdated(atOffset: editedRange.location, delta: delta)
-
- invalidateLayoutForRange(insertedStringRange)
- }
-
- /// Removes all lines in the range, as if they were deleted. This is a setup for inserting the lines back in on an
- /// edit.
- /// - Parameter range: The range that was deleted.
- private func removeLayoutLinesIn(range: NSRange) {
- // Loop through each line being replaced in reverse, updating and removing where necessary.
- for linePosition in lineStorage.linesInRange(range).reversed() {
- // Two cases: Updated line, deleted line entirely
- guard let intersection = linePosition.range.intersection(range), !intersection.isEmpty else { continue }
- if intersection == linePosition.range && linePosition.range.max != lineStorage.length {
- // Delete line
- lineStorage.delete(lineAt: linePosition.range.location)
- } else if intersection.max == linePosition.range.max,
- let nextLine = lineStorage.getLine(atOffset: linePosition.range.max) {
- // Need to merge line with one after it after updating this line to remove the end of the line
- lineStorage.delete(lineAt: nextLine.range.location)
- let delta = -intersection.length + nextLine.range.length
- if delta != 0 {
- lineStorage.update(atOffset: linePosition.range.location, delta: delta, deltaHeight: 0)
- }
- } else {
- lineStorage.update(atOffset: linePosition.range.location, delta: -intersection.length, deltaHeight: 0)
- }
- }
- }
-
- /// Inserts any newly inserted lines into the line layout storage. Exits early if the range is empty.
- /// - Parameter range: The range of the string that was inserted into the text storage.
- private func insertNewLines(for range: NSRange) {
- guard !range.isEmpty, let string = textStorage?.substring(from: range) as? NSString else { return }
- // Loop through each line being inserted, inserting & splitting where necessary
- var index = 0
- while let nextLine = string.getNextLine(startingAt: index) {
- let lineRange = NSRange(start: index, end: nextLine.max)
- applyLineInsert(string.substring(with: lineRange) as NSString, at: range.location + index)
- index = nextLine.max
- }
-
- if index < string.length {
- // Get the last line.
- applyLineInsert(string.substring(from: index) as NSString, at: range.location + index)
- }
- }
-
- /// Applies a line insert to the internal line storage tree.
- /// - Parameters:
- /// - insertedString: The string being inserted.
- /// - location: The location the string is being inserted into.
- private func applyLineInsert(_ insertedString: NSString, at location: Int) {
- if LineEnding(line: insertedString as String) != nil {
- if location == lineStorage.length {
- // Insert a new line at the end of the document, need to insert a new line 'cause there's nothing to
- // split. Also, append the new text to the last line.
- lineStorage.update(atOffset: location, delta: insertedString.length, deltaHeight: 0.0)
- lineStorage.insert(
- line: TextLine(),
- atOffset: location + insertedString.length,
- length: 0,
- height: estimateLineHeight()
- )
- } else {
- // Need to split the line inserting into and create a new line with the split section of the line
- guard let linePosition = lineStorage.getLine(atOffset: location) else { return }
- let splitLocation = location + insertedString.length
- let splitLength = linePosition.range.max - location
- let lineDelta = insertedString.length - splitLength // The difference in the line being edited
- if lineDelta != 0 {
- lineStorage.update(atOffset: location, delta: lineDelta, deltaHeight: 0.0)
- }
-
- lineStorage.insert(
- line: TextLine(),
- atOffset: splitLocation,
- length: splitLength,
- height: estimateLineHeight()
- )
- }
- } else {
- lineStorage.update(atOffset: location, delta: insertedString.length, deltaHeight: 0.0)
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift
deleted file mode 100644
index 6b13819c6..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Invalidation.swift
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// TextLayoutManager+Invalidation.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 2/24/24.
-//
-
-import Foundation
-
-extension TextLayoutManager {
- /// Invalidates layout for the given rect.
- /// - Parameter rect: The rect to invalidate.
- public func invalidateLayoutForRect(_ rect: NSRect) {
- for linePosition in lineStorage.linesStartingAt(rect.minY, until: rect.maxY) {
- linePosition.data.setNeedsLayout()
- }
-
- layoutView?.needsLayout = true
- }
-
- /// Invalidates layout for the given range of text.
- /// - Parameter range: The range of text to invalidate.
- public func invalidateLayoutForRange(_ range: NSRange) {
- for linePosition in lineStorage.linesInRange(range) {
- linePosition.data.setNeedsLayout()
- }
-
- // Special case where we've deleted from the very end, `linesInRange` correctly does not return any lines
- // So we need to invalidate the last line specifically.
- if range.location == textStorage?.length, !lineStorage.isEmpty {
- lineStorage.last?.data.setNeedsLayout()
- }
-
- layoutView?.needsLayout = true
- }
-
- public func setNeedsLayout() {
- needsLayout = true
- visibleLineIds.removeAll(keepingCapacity: true)
- layoutView?.needsLayout = true
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift
deleted file mode 100644
index f6a5e1ab8..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Iterator.swift
+++ /dev/null
@@ -1,229 +0,0 @@
-//
-// TextLayoutManager+Iterator.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/21/23.
-//
-
-import Foundation
-
-public extension TextLayoutManager {
- /// Iterate over all visible lines.
- ///
- /// Visible lines are any lines contained by the rect returned by ``TextLayoutManagerDelegate/visibleRect`` or,
- /// if there is no delegate from `0` to the estimated document height.
- ///
- /// - Returns: An iterator to iterate through all visible lines.
- func visibleLines() -> YPositionIterator {
- let visibleRect = delegate?.visibleRect ?? NSRect(
- x: 0,
- y: 0,
- width: 0,
- height: estimatedHeight()
- )
- return YPositionIterator(minY: max(visibleRect.minY, 0), maxY: max(visibleRect.maxY, 0), layoutManager: self)
- }
-
- /// Iterate over all lines in the y position range.
- /// - Parameters:
- /// - minY: The minimum y position to begin at.
- /// - maxY: The maximum y position to iterate to.
- /// - Returns: An iterator that will iterate through all text lines in the y position range.
- func linesStartingAt(_ minY: CGFloat, until maxY: CGFloat) -> YPositionIterator {
- YPositionIterator(minY: minY, maxY: maxY, layoutManager: self)
- }
- /// Iterate over all lines that overlap a document range.
- /// - Parameters:
- /// - range: The range in the document to iterate over.
- /// - Returns: An iterator for lines in the range. The iterator returns lines that *overlap* with the range.
- /// Returned lines may extend slightly before or after the queried range.
- func linesInRange(_ range: NSRange) -> RangeIterator {
- RangeIterator(range: range, layoutManager: self)
- }
-
- /// This iterator iterates over "visible" text positions that overlap a range of vertical `y` positions
- /// using ``TextLayoutManager/determineVisiblePosition(for:)``.
- ///
- /// Next elements are retrieved lazily. Additionally, this iterator uses a stable `index` rather than a y position
- /// or a range to fetch the next line. This means the line storage can be updated during iteration.
- struct YPositionIterator: LazySequenceProtocol, IteratorProtocol {
- typealias TextLinePosition = TextLineStorage.TextLinePosition
-
- private weak var layoutManager: TextLayoutManager?
- private let minY: CGFloat
- private let maxY: CGFloat
- private var currentPosition: (position: TextLinePosition, indexRange: ClosedRange)?
-
- init(minY: CGFloat, maxY: CGFloat, layoutManager: TextLayoutManager) {
- self.minY = minY
- self.maxY = maxY
- self.layoutManager = layoutManager
- }
-
- /// Iterates over the "visible" text positions.
- ///
- /// See documentation on ``TextLayoutManager/determineVisiblePosition(for:)`` for details.
- public mutating func next() -> TextLineStorage.TextLinePosition? {
- if let currentPosition {
- guard let nextPosition = layoutManager?.lineStorage.getLine(
- atIndex: currentPosition.indexRange.upperBound + 1
- ), nextPosition.yPos < maxY else {
- return nil
- }
- self.currentPosition = layoutManager?.determineVisiblePosition(for: nextPosition)
- return self.currentPosition?.position
- } else if let position = layoutManager?.lineStorage.getLine(atPosition: minY) {
- currentPosition = layoutManager?.determineVisiblePosition(for: position)
- return currentPosition?.position
- }
-
- return nil
- }
- }
-
- /// This iterator iterates over "visible" text positions that overlap a document using
- /// ``TextLayoutManager/determineVisiblePosition(for:)``.
- ///
- /// Next elements are retrieved lazily. Additionally, this iterator uses a stable `index` rather than a y position
- /// or a range to fetch the next line. This means the line storage can be updated during iteration.
- struct RangeIterator: LazySequenceProtocol, IteratorProtocol {
- typealias TextLinePosition = TextLineStorage.TextLinePosition
-
- private weak var layoutManager: TextLayoutManager?
- private let range: NSRange
- private var currentPosition: (position: TextLinePosition, indexRange: ClosedRange)?
-
- init(range: NSRange, layoutManager: TextLayoutManager) {
- self.range = range
- self.layoutManager = layoutManager
- }
-
- /// Iterates over the "visible" text positions.
- ///
- /// See documentation on ``TextLayoutManager/determineVisiblePosition(for:)`` for details.
- public mutating func next() -> TextLineStorage.TextLinePosition? {
- if let currentPosition {
- guard let nextPosition = layoutManager?.lineStorage.getLine(
- atIndex: currentPosition.indexRange.upperBound + 1
- ), nextPosition.range.location < range.max else {
- return nil
- }
- self.currentPosition = layoutManager?.determineVisiblePosition(for: nextPosition)
- return self.currentPosition?.position
- } else if let position = layoutManager?.lineStorage.getLine(atOffset: range.location) {
- currentPosition = layoutManager?.determineVisiblePosition(for: position)
- return currentPosition?.position
- }
-
- return nil
- }
- }
-
- /// Determines the “visible” line position by merging any consecutive lines
- /// that are spanned by text attachments. If an attachment overlaps beyond the
- /// bounds of the original line, this method will extend the returned range to
- /// cover the full span of those attachments (and recurse if further attachments
- /// cross into newly included lines).
- ///
- /// For example, given the following: *(`[` == attachment start, `]` == attachment end)*
- /// ```
- /// Line 1
- /// Line[ 2
- /// Line 3
- /// Line] 4
- /// ```
- /// If you start at the position for “Line 2”, the first and last attachments
- /// overlap lines 2–4, so this method will extend the range to cover lines 2–4
- /// and return a position whose `range` spans the entire attachment.
- ///
- /// # Why recursion?
- ///
- /// When an attachment extends the visible range, it may pull in new lines that themselves overlap other
- /// attachments. A simple one‐pass merge wouldn’t catch those secondary overlaps. By calling
- /// determineVisiblePosition again on the newly extended range, we ensure that all cascading attachments—no matter
- /// how many lines they span—are folded into a single, coherent TextLinePosition before returning.
- ///
- /// - Parameter originalPosition: The initial `TextLinePosition` to inspect.
- /// Pass in the position you got from `lineStorage.getLine(atOffset:)` or similar.
- /// - Returns: A tuple containing `position`: A `TextLinePosition` whose `range` and `index` have been
- /// adjusted to include any attachment‐spanned lines.. `indexRange`: A `ClosedRange` listing all of
- /// the line indices that are now covered by the returned position.
- /// Returns `nil` if `originalPosition` is `nil`.
- func determineVisiblePosition(
- for originalPosition: TextLineStorage.TextLinePosition?
- ) -> (position: TextLineStorage.TextLinePosition, indexRange: ClosedRange)? {
- guard let originalPosition else { return nil }
- return determineVisiblePositionRecursively(
- for: (originalPosition, originalPosition.index...originalPosition.index),
- recursionDepth: 0
- )
- }
-
- /// Private implementation of ``TextLayoutManager/determineVisiblePosition(for:)``.
- ///
- /// Separated for readability. This method does not have an optional parameter, and keeps track of a recursion
- /// depth.
- private func determineVisiblePositionRecursively(
- for originalPosition: (position: TextLineStorage.TextLinePosition, indexRange: ClosedRange),
- recursionDepth: Int
- ) -> (position: TextLineStorage.TextLinePosition, indexRange: ClosedRange)? {
- // Arbitrary max recursion depth. Ensures we don't spiral into in an infinite recursion.
- guard recursionDepth < 10 else {
- logger.warning("Visible position recursed for over 10 levels, returning early.")
- return originalPosition
- }
-
- let attachments = attachments.getAttachmentsOverlapping(originalPosition.position.range)
- guard let firstAttachment = attachments.first, let lastAttachment = attachments.last else {
- // No change, either no attachments or attachment doesn't span multiple lines.
- return originalPosition
- }
-
- var minIndex = originalPosition.indexRange.lowerBound
- var maxIndex = originalPosition.indexRange.upperBound
- var newPosition = originalPosition.position
-
- if firstAttachment.range.location < originalPosition.position.range.location,
- let extendedLinePosition = lineStorage.getLine(atOffset: firstAttachment.range.location) {
- newPosition = TextLineStorage.TextLinePosition(
- data: extendedLinePosition.data,
- range: NSRange(start: extendedLinePosition.range.location, end: newPosition.range.max),
- yPos: extendedLinePosition.yPos,
- height: extendedLinePosition.height,
- index: extendedLinePosition.index
- )
- minIndex = min(minIndex, newPosition.index)
- }
-
- if lastAttachment.range.max > originalPosition.position.range.max,
- let extendedLinePosition = lineStorage.getLine(atOffset: lastAttachment.range.max) {
- newPosition = TextLineStorage.TextLinePosition(
- data: newPosition.data,
- range: NSRange(start: newPosition.range.location, end: extendedLinePosition.range.max),
- yPos: newPosition.yPos,
- height: newPosition.height,
- index: newPosition.index // We want to keep the minimum index.
- )
- maxIndex = max(maxIndex, extendedLinePosition.index)
- }
-
- if firstAttachment.range.location == newPosition.range.location {
- minIndex = max(minIndex, 0)
- }
-
- if lastAttachment.range.max == newPosition.range.max {
- maxIndex = min(maxIndex, lineStorage.count - 1)
- }
-
- // Base case, we haven't updated anything
- if minIndex...maxIndex == originalPosition.indexRange {
- return (newPosition, minIndex...maxIndex)
- } else {
- // Recurse, to make sure we combine all necessary lines.
- return determineVisiblePositionRecursively(
- for: (newPosition, minIndex...maxIndex),
- recursionDepth: recursionDepth + 1
- )
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift
deleted file mode 100644
index acf0ea0ae..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Layout.swift
+++ /dev/null
@@ -1,317 +0,0 @@
-//
-// TextLayoutManager+ensureLayout.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/7/25.
-//
-
-import AppKit
-
-extension TextLayoutManager {
- /// Contains all data required to perform layout on a text line.
- private struct LineLayoutData {
- let minY: CGFloat
- let maxY: CGFloat
- let maxWidth: CGFloat
- }
-
- // MARK: - Layout Lines
-
- /// Lays out all visible lines
- ///
- /// ## Overview Of The Layout Routine
- ///
- /// The basic premise of this method is that it loops over all lines in the given rect (defaults to the visible
- /// rect), checks if the line needs a layout calculation, and performs layout on the line if it does.
- ///
- /// The thing that makes this layout method so fast is the second point, checking if a line needs layout. To
- /// determine if a line needs a layout pass, the layout manager can check three things:
- /// - **1** Was the line laid out under the assumption of a different maximum layout width?
- /// For instance, if a line was previously broken by the line wrapping setting, it won’t need to wrap once the
- /// line wrapping is disabled. This will detect that, and cause the lines to be recalculated.
- /// - **2** Was the line previously not visible? This is determined by keeping a set of visible line IDs. If the
- /// line does not appear in that set, we can assume it was previously off screen and may need layout.
- /// - **3** Was the line entirely laid out? We break up lines into line fragments. When we do layout, we determine
- /// all line fragments but don't necessarily place them all in the view. This checks if all line fragments have
- /// been placed in the view. If not, we need to place them.
- ///
- /// Once it has been determined that a line needs layout, we perform layout by recalculating it's line fragments,
- /// removing all old line fragment views, and creating new ones for the line.
- ///
- /// ## Laziness
- ///
- /// At the end of the layout pass, we clean up any old lines by updating the set of visible line IDs and fragment
- /// IDs. Any IDs that no longer appear in those sets are removed to save resources. This facilitates the text view's
- /// ability to only render text that is visible and saves tons of resources (similar to the lazy loading of
- /// collection or table views).
- ///
- /// The other important lazy attribute is the line iteration. Line iteration is done lazily. As we iterate
- /// through lines and potentially update their heights, the next line is only queried for *after* the updates are
- /// finished.
- ///
- /// ## Reentry
- ///
- /// An important thing to note is that this method cannot be reentered. If a layout pass has begun while a layout
- /// pass is already ongoing, internal data structures will be broken. In debug builds, this is checked with a simple
- /// boolean and assertion.
- ///
- /// To help ensure this property, all view modifications are performed within a `CATransaction`. This guarantees
- /// that macOS calls `layout` on any related views only after we’ve finished inserting and removing line fragment
- /// views. Otherwise, inserting a line fragment view could trigger a layout pass prematurely and cause this method
- /// to re-enter.
- /// - Warning: This is probably not what you're looking for. If you need to invalidate layout, or update lines, this
- /// is not the way to do so. This should only be called when macOS performs layout.
- @discardableResult
- public func layoutLines(in rect: NSRect? = nil) -> Set { // swiftlint:disable:this function_body_length
- guard let visibleRect = rect ?? delegate?.visibleRect,
- !isInTransaction,
- let textStorage else {
- return []
- }
-
- // The macOS may call `layout` on the textView while we're laying out fragment views. This ensures the view
- // tree modifications caused by this method are atomic, so macOS won't call `layout` while we're already doing
- // that
- CATransaction.begin()
- layoutLock.lock()
-
- let minY = max(visibleRect.minY - verticalLayoutPadding, 0)
- let maxY = max(visibleRect.maxY + verticalLayoutPadding, 0)
- let originalHeight = lineStorage.height
- var usedFragmentIDs = Set()
- let forceLayout: Bool = needsLayout
- var didLayoutChange = false
- var newVisibleLines: Set = []
- var yContentAdjustment: CGFloat = 0
- var maxFoundLineWidth = maxLineWidth
-
-#if DEBUG
- var laidOutLines: Set = []
-#endif
- // Layout all lines, fetching lines lazily as they are laid out.
- for linePosition in linesStartingAt(minY, until: maxY).lazy {
- guard linePosition.yPos < maxY else { continue }
- // Three ways to determine if a line needs to be re-calculated.
- let linePositionNeedsLayout = linePosition.data.needsLayout(maxWidth: maxLineLayoutWidth)
- let wasNotVisible = !visibleLineIds.contains(linePosition.data.id)
- let lineNotEntirelyLaidOut = linePosition.height != linePosition.data.lineFragments.height
-
- defer { newVisibleLines.insert(linePosition.data.id) }
-
- func fullLineLayout() {
- let (yAdjustment, wasLineHeightChanged) = layoutLine(
- linePosition,
- usedFragmentIDs: &usedFragmentIDs,
- textStorage: textStorage,
- yRange: minY.. 0 {
- // Layout happened and this line needs to be moved but not necessarily re-added
- let needsFullLayout = updateLineViewPositions(linePosition)
- if needsFullLayout {
- fullLineLayout()
- continue
- }
- }
-
- // Make sure the used fragment views aren't dequeued.
- usedFragmentIDs.formUnion(linePosition.data.lineFragments.map(\.data.id))
- }
- }
-
- // Enqueue any lines not used in this layout pass.
- viewReuseQueue.enqueueViews(notInSet: usedFragmentIDs)
-
- // Update the visible lines with the new set.
- visibleLineIds = newVisibleLines
-
- // The delegate methods below may call another layout pass, make sure we don't send it into a loop of forced
- // layout.
- needsLayout = false
-
- // Commit the view tree changes we just made.
- layoutLock.unlock()
- CATransaction.commit()
-
- if maxFoundLineWidth > maxLineWidth {
- maxLineWidth = maxFoundLineWidth
- }
-
- if yContentAdjustment != 0 {
- delegate?.layoutManagerYAdjustment(yContentAdjustment)
- }
-
- if originalHeight != lineStorage.height || layoutView?.frame.size.height != lineStorage.height {
- delegate?.layoutManagerHeightDidUpdate(newHeight: lineStorage.height)
- }
-
-#if DEBUG
- return laidOutLines
-#else
- return []
-#endif
- }
-
- // MARK: - Layout Single Line
-
- private func layoutLine(
- _ linePosition: TextLineStorage.TextLinePosition,
- usedFragmentIDs: inout Set,
- textStorage: NSTextStorage,
- yRange: Range,
- maxFoundLineWidth: inout CGFloat
- ) -> (CGFloat, wasLineHeightChanged: Bool) {
- let lineSize = layoutLineViews(
- linePosition,
- textStorage: textStorage,
- layoutData: LineLayoutData(minY: yRange.lowerBound, maxY: yRange.upperBound, maxWidth: maxLineLayoutWidth),
- laidOutFragmentIDs: &usedFragmentIDs
- )
- let wasLineHeightChanged = lineSize.height != linePosition.height
- var yContentAdjustment: CGFloat = 0.0
- var maxFoundLineWidth = maxFoundLineWidth
-
- if wasLineHeightChanged {
- lineStorage.update(
- atOffset: linePosition.range.location,
- delta: 0,
- deltaHeight: lineSize.height - linePosition.height
- )
-
- if linePosition.yPos < yRange.lowerBound {
- // Adjust the scroll position by the difference between the new height and old.
- yContentAdjustment += lineSize.height - linePosition.height
- }
- }
- if maxFoundLineWidth < lineSize.width {
- maxFoundLineWidth = lineSize.width
- }
-
- return (yContentAdjustment, wasLineHeightChanged)
- }
-
- /// Lays out a single text line.
- /// - Parameters:
- /// - position: The line position from storage to use for layout.
- /// - textStorage: The text storage object to use for text info.
- /// - layoutData: The information required to perform layout for the given line.
- /// - laidOutFragmentIDs: Updated by this method as line fragments are laid out.
- /// - Returns: A `CGSize` representing the max width and total height of the laid out portion of the line.
- private func layoutLineViews(
- _ position: TextLineStorage.TextLinePosition,
- textStorage: NSTextStorage,
- layoutData: LineLayoutData,
- laidOutFragmentIDs: inout Set
- ) -> CGSize {
- let lineDisplayData = TextLine.DisplayData(
- maxWidth: layoutData.maxWidth,
- lineHeightMultiplier: lineHeightMultiplier,
- estimatedLineHeight: estimateLineHeight(),
- breakStrategy: lineBreakStrategy
- )
-
- let line = position.data
- if let renderDelegate {
- renderDelegate.prepareForDisplay(
- textLine: line,
- displayData: lineDisplayData,
- range: position.range,
- stringRef: textStorage,
- markedRanges: markedTextManager.markedRanges(in: position.range),
- attachments: attachments.getAttachmentsStartingIn(position.range)
- )
- } else {
- line.prepareForDisplay(
- displayData: lineDisplayData,
- range: position.range,
- stringRef: textStorage,
- markedRanges: markedTextManager.markedRanges(in: position.range),
- attachments: attachments.getAttachmentsStartingIn(position.range)
- )
- }
-
- if position.range.isEmpty {
- return CGSize(width: 0, height: estimateLineHeight())
- }
-
- var height: CGFloat = 0
- var width: CGFloat = 0
- let relativeMinY = max(layoutData.minY - position.yPos, 0)
- let relativeMaxY = max(layoutData.maxY - position.yPos, relativeMinY)
-
-// for lineFragmentPosition in line.lineFragments.linesStartingAt(
-// relativeMinY,
-// until: relativeMaxY
-// ) {
- for lineFragmentPosition in line.lineFragments {
- let lineFragment = lineFragmentPosition.data
- lineFragment.documentRange = lineFragmentPosition.range.translate(location: position.range.location)
-
- layoutFragmentView(
- inLine: position,
- for: lineFragmentPosition,
- at: position.yPos + lineFragmentPosition.yPos
- )
-
- width = max(width, lineFragment.width)
- height += lineFragment.scaledHeight
- laidOutFragmentIDs.insert(lineFragment.id)
- }
-
- return CGSize(width: width, height: height)
- }
-
- // MARK: - Layout Fragment
-
- /// Lays out a line fragment view for the given line fragment at the specified y value.
- /// - Parameters:
- /// - lineFragment: The line fragment position to lay out a view for.
- /// - yPos: The y value at which the line should begin.
- private func layoutFragmentView(
- inLine line: TextLineStorage.TextLinePosition,
- for lineFragment: TextLineStorage.TextLinePosition,
- at yPos: CGFloat
- ) {
- let fragmentRange = lineFragment.range.translate(location: line.range.location)
- let view = viewReuseQueue.getOrCreateView(forKey: lineFragment.data.id) {
- renderDelegate?.lineFragmentView(for: lineFragment.data) ?? LineFragmentView()
- }
- view.translatesAutoresizingMaskIntoConstraints = true // Small optimization for lots of subviews
- view.setLineFragment(lineFragment.data, fragmentRange: fragmentRange, renderer: lineFragmentRenderer)
- view.frame.origin = CGPoint(x: edgeInsets.left, y: yPos)
- layoutView?.addSubview(view, positioned: .below, relativeTo: nil)
- view.needsDisplay = true
- }
-
- private func updateLineViewPositions(_ position: TextLineStorage.TextLinePosition) -> Bool {
- let line = position.data
- for lineFragmentPosition in line.lineFragments {
- guard let view = viewReuseQueue.getView(forKey: lineFragmentPosition.data.id) else {
- return true
- }
- lineFragmentPosition.data.documentRange = lineFragmentPosition.range.translate(
- location: position.range.location
- )
- view.frame.origin = CGPoint(x: edgeInsets.left, y: position.yPos + lineFragmentPosition.yPos)
- }
- return false
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift
deleted file mode 100644
index b73c17177..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager+Public.swift
+++ /dev/null
@@ -1,351 +0,0 @@
-//
-// TextLayoutManager+Public.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/13/23.
-//
-
-import AppKit
-
-extension TextLayoutManager {
- // MARK: - Estimate
-
- public func estimatedHeight() -> CGFloat {
- max(lineStorage.height, estimateLineHeight())
- }
-
- public func estimatedWidth() -> CGFloat {
- maxLineWidth + edgeInsets.horizontal
- }
-
- // MARK: - Text Lines
-
- /// Finds a text line for the given y position relative to the text view.
- ///
- /// Y values begin at the top of the view and extend down. Eg, a `0` y value would return the first line in
- /// the text view if it exists. Though, for that operation the user should instead use
- /// ``TextLayoutManager/textLineForIndex(_:)`` for reliability.
- ///
- /// - Parameter posY: The y position to find a line for.
- /// - Returns: A text line position, if a line could be found at the given y position.
- public func textLineForPosition(_ posY: CGFloat) -> TextLineStorage.TextLinePosition? {
- determineVisiblePosition(for: lineStorage.getLine(atPosition: posY))?.position
- }
-
- /// Finds a text line for a given text offset.
- ///
- /// This method will not do any checking for document bounds, and will simply return `nil` if the offset if negative
- /// or outside the range of the document.
- ///
- /// However, if the offset is equal to the length of the text storage (one index past the end of the document) this
- /// method will return the last line in the document if it exists.
- ///
- /// - Parameter offset: The offset in the document to fetch a line for.
- /// - Returns: A text line position, if a line could be found at the given offset.
- public func textLineForOffset(_ offset: Int) -> TextLineStorage.TextLinePosition? {
- if offset == lineStorage.length {
- return lineStorage.last
- } else {
- return determineVisiblePosition(for: lineStorage.getLine(atOffset: offset))?.position
- }
- }
-
- /// Finds text line and returns it if found.
- /// Lines are 0 indexed.
- /// - Parameter index: The line to find.
- /// - Returns: The text line position if any, `nil` if the index is out of bounds.
- public func textLineForIndex(_ index: Int) -> TextLineStorage.TextLinePosition? {
- guard index >= 0 && index < lineStorage.count else { return nil }
- return determineVisiblePosition(for: lineStorage.getLine(atIndex: index))?.position
- }
-
- /// Calculates the text position at the given point in the view.
- /// - Parameter point: The point to translate to text position.
- /// - Returns: The text offset in the document where the given point is laid out.
- /// - Warning: If the requested point has not been laid out or it's layout has since been invalidated by edits or
- /// other changes, this method will return the invalid data. For best results, ensure the text around the
- /// point has been laid out or is visible before calling this method.
- public func textOffsetAtPoint(_ point: CGPoint) -> Int? {
- guard point.y <= estimatedHeight() else { // End position is a special case.
- return textStorage?.length
- }
- guard let linePosition = determineVisiblePosition(for: lineStorage.getLine(atPosition: point.y))?.position,
- let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine(
- atPosition: point.y - linePosition.yPos
- ) else {
- return nil
- }
-
- return textOffsetAtPoint(point, fragmentPosition: fragmentPosition, linePosition: linePosition)
- }
-
- func textOffsetAtPoint(
- _ point: CGPoint,
- fragmentPosition: TextLineStorage.TextLinePosition,
- linePosition: TextLineStorage.TextLinePosition
- ) -> Int? {
- let fragment = fragmentPosition.data
- if fragment.width == 0 {
- return linePosition.range.location + fragmentPosition.range.location
- } else if fragment.width <= point.x - edgeInsets.left {
- return findOffsetAfterEndOf(fragmentPosition: fragmentPosition, in: linePosition)
- } else {
- return findOffsetAtPoint(inFragment: fragment, xPos: point.x, inLine: linePosition)
- }
- }
-
- /// Finds a document offset after a line fragment. Returns a cursor position.
- ///
- /// If the fragment ends the line, return the position before the potential line break. This visually positions the
- /// cursor at the end of the line, but before the break character. If deleted, it edits the visually selected line.
- ///
- /// If not at the line end, do the same with the fragment and respect any composed character sequences at
- /// the line break.
- ///
- /// Return the line end position otherwise.
- ///
- /// - Parameters:
- /// - fragmentPosition: The fragment position being queried.
- /// - linePosition: The line position that contains the `fragment`.
- /// - Returns: The position visually at the end of the line fragment.
- private func findOffsetAfterEndOf(
- fragmentPosition: TextLineStorage.TextLinePosition,
- in linePosition: TextLineStorage.TextLinePosition
- ) -> Int? {
- let fragmentRange = fragmentPosition.range.translate(location: linePosition.range.location)
- let endPosition = fragmentRange.max
-
- // If the endPosition is at the end of the line, and the line ends with a line ending character
- // return the index before the eol.
- if fragmentPosition.index == linePosition.data.lineFragments.count - 1,
- let lineEnding = LineEnding(line: textStorage?.substring(from: fragmentRange) ?? "") {
- return endPosition - lineEnding.length
- } else if fragmentPosition.index != linePosition.data.lineFragments.count - 1 {
- // If this isn't the last fragment, we want to place the cursor at the offset right before the break
- // index, to appear on the end of *this* fragment.
- let string = (textStorage?.string as? NSString)
- return string?.rangeOfComposedCharacterSequence(at: endPosition - 1).location
- } else {
- // Otherwise, return the end of the fragment (and the end of the line).
- return endPosition
- }
- }
-
- /// Finds a document offset for a point that lies in a line fragment.
- /// - Parameters:
- /// - fragment: The fragment the point lies in.
- /// - xPos: The point being queried, relative to the text view.
- /// - linePosition: The position that contains the `fragment`.
- /// - Returns: The offset (relative to the document) that's closest to the given point, or `nil` if it could not be
- /// found.
- func findOffsetAtPoint(
- inFragment fragment: LineFragment,
- xPos: CGFloat,
- inLine linePosition: TextLineStorage.TextLinePosition
- ) -> Int? {
- guard let (content, contentPosition) = fragment.findContent(atX: xPos - edgeInsets.left) else {
- return nil
- }
- switch content.data {
- case .text(let ctLine):
- let fragmentIndex = CTLineGetStringIndexForPosition(
- ctLine,
- CGPoint(x: xPos - edgeInsets.left - contentPosition.xPos, y: fragment.height/2)
- )
- return fragmentIndex + contentPosition.offset + linePosition.range.location
- case .attachment:
- return contentPosition.offset + linePosition.range.location
- }
- }
-
- // MARK: - Rect For Offset
-
- /// Find a position for the character at a given offset.
- /// Returns the rect of the character at the given offset.
- /// The rect may represent more than one unicode unit, for instance if the offset is at the beginning of an
- /// emoji or non-latin glyph.
- /// - Parameter offset: The offset to create the rect for.
- /// - Returns: The found rect for the given offset.
- public func rectForOffset(_ offset: Int) -> CGRect? {
- guard offset < lineStorage.length else {
- return rectForEndOffset()
- }
- guard let linePosition = determineVisiblePosition(for: lineStorage.getLine(atOffset: offset))?.position else {
- return nil
- }
- guard let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine(
- atOffset: offset - linePosition.range.location
- ) else {
- return CGRect(x: edgeInsets.left, y: linePosition.yPos, width: 0, height: linePosition.height)
- }
-
- // Get the *real* length of the character at the offset. If this is a surrogate pair it'll return the correct
- // length of the character at the offset.
- let realRange = if textStorage?.length == 0 {
- NSRange(location: offset, length: 0)
- } else if let string = textStorage?.string as? NSString {
- string.rangeOfComposedCharacterSequence(at: offset)
- } else {
- NSRange(location: offset, length: 0)
- }
-
- let minXPos = characterXPosition(
- in: fragmentPosition.data,
- for: realRange.location - linePosition.range.location - fragmentPosition.range.location
- )
- let maxXPos = characterXPosition(
- in: fragmentPosition.data,
- for: realRange.max - linePosition.range.location - fragmentPosition.range.location
- )
-
- return CGRect(
- x: minXPos + edgeInsets.left,
- y: linePosition.yPos + fragmentPosition.yPos,
- width: maxXPos - minXPos,
- height: fragmentPosition.data.scaledHeight
- )
- }
-
- /// Calculates all text bounding rects that intersect with a given range.
- /// - Parameters:
- /// - range: The range to calculate bounding rects for.
- /// - line: The line to calculate rects for.
- /// - Returns: Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range.
- public func rectsFor(range: NSRange) -> [CGRect] {
- return linesInRange(range).flatMap { self.rectsFor(range: range, in: $0) }
- }
-
- /// Calculates all text bounding rects that intersect with a given range, with a given line position.
- /// - Parameters:
- /// - range: The range to calculate bounding rects for.
- /// - line: The line to calculate rects for.
- /// - Returns: Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range.
- private func rectsFor(range: NSRange, in line: borrowing TextLineStorage.TextLinePosition) -> [CGRect] {
- guard let textStorage = (textStorage?.string as? NSString) else { return [] }
-
- // Don't make rects in between characters
- let realRangeStart = textStorage.rangeOfComposedCharacterSequence(at: range.lowerBound)
- let realRangeEnd = textStorage.rangeOfComposedCharacterSequence(at: range.upperBound - 1)
-
- // Fragments are relative to the line
- let relativeRange = NSRange(
- start: realRangeStart.lowerBound - line.range.location,
- end: realRangeEnd.upperBound - line.range.location
- )
-
- var rects: [CGRect] = []
- for fragmentPosition in line.data.lineFragments.linesInRange(relativeRange) {
- guard let intersectingRange = fragmentPosition.range.intersection(relativeRange) else { continue }
- let fragmentRect = characterRect(in: fragmentPosition.data, for: intersectingRange)
- guard fragmentRect.width > 0 else { continue }
- rects.append(
- CGRect(
- x: fragmentRect.minX + edgeInsets.left,
- y: fragmentPosition.yPos + line.yPos,
- width: fragmentRect.width,
- height: fragmentRect.height
- )
- )
- }
- return rects
- }
-
- /// Creates a smooth bezier path for the specified range.
- /// If the range exceeds the available text, it uses the maximum available range.
- /// - Parameters:
- /// - range: The range of text offsets to generate the path for.
- /// - cornerRadius: The radius of the edges when rounding. Defaults to four.
- /// - Returns: An `NSBezierPath` representing the visual shape for the text range, or `nil` if the range is invalid.
- public func roundedPathForRange(_ range: NSRange, cornerRadius: CGFloat = 4) -> NSBezierPath? {
- // Ensure the range is within the bounds of the text storage
- let validRange = NSRange(
- location: range.lowerBound,
- length: min(range.length, lineStorage.length - range.lowerBound)
- )
-
- guard validRange.length > 0 else { return rectForEndOffset().map { NSBezierPath(rect: $0) } }
-
- var rightSidePoints: [CGPoint] = [] // Points for Bottom-right → Top-right
- var leftSidePoints: [CGPoint] = [] // Points for Bottom-left → Top-left
-
- for fragmentRect in rectsFor(range: range) {
- rightSidePoints.append(
- contentsOf: [
- CGPoint(x: fragmentRect.maxX, y: fragmentRect.minY), // Bottom-right
- CGPoint(x: fragmentRect.maxX, y: fragmentRect.maxY) // Top-right
- ]
- )
- leftSidePoints.insert(
- contentsOf: [
- CGPoint(x: fragmentRect.minX, y: fragmentRect.maxY), // Top-left
- CGPoint(x: fragmentRect.minX, y: fragmentRect.minY) // Bottom-left
- ],
- at: 0
- )
- }
-
- // Combine the points in clockwise order
- let points = leftSidePoints + rightSidePoints
-
- guard points.allSatisfy({ $0.x.isFinite && $0.y.isFinite }) else { return nil }
-
- // Close the path
- if let firstPoint = points.first {
- return NSBezierPath.smoothPath(points + [firstPoint], radius: cornerRadius)
- }
-
- return nil
- }
-
- /// Finds a suitable cursor rect for the end position.
- /// - Returns: A CGRect if it could be created.
- private func rectForEndOffset() -> CGRect? {
- if let last = lineStorage.last {
- if last.range.isEmpty {
- // Return a 0-width rect at the end of the last line.
- return CGRect(x: edgeInsets.left, y: last.yPos, width: 0, height: last.height)
- } else if let rect = rectForOffset(last.range.max - 1) {
- return CGRect(x: rect.maxX, y: rect.minY, width: 0, height: rect.height)
- }
- } else if lineStorage.isEmpty {
- // Text is empty, create a new rect with estimated height at the origin
- return CGRect(
- x: edgeInsets.left,
- y: 0.0,
- width: 0,
- height: estimateLineHeight()
- )
- }
- return nil
- }
-
- // MARK: - Line Fragment Rects
-
- /// Finds the x position of the offset in the string the fragment represents.
- /// - Parameters:
- /// - lineFragment: The line fragment to calculate for.
- /// - offset: The offset, relative to the start of the *line*.
- /// - Returns: The x position of the character in the drawn line, from the left.
- public func characterXPosition(in lineFragment: LineFragment, for offset: Int) -> CGFloat {
- renderDelegate?.characterXPosition(in: lineFragment, for: offset) ?? lineFragment._xPos(for: offset)
- }
-
- public func characterRect(in lineFragment: LineFragment, for range: NSRange) -> CGRect {
- let minXPos = characterXPosition(in: lineFragment, for: range.lowerBound)
- let maxXPos = characterXPosition(in: lineFragment, for: range.upperBound)
- return CGRect(
- x: minXPos,
- y: 0,
- width: maxXPos - minXPos,
- height: lineFragment.scaledHeight
- ).pixelAligned
- }
-
- func contentRun(at offset: Int) -> LineFragment.FragmentContent? {
- guard let textLine = textLineForOffset(offset),
- let fragment = textLine.data.lineFragments.getLine(atOffset: offset - textLine.range.location) else {
- return nil
- }
- return fragment.data.findContent(at: offset - textLine.range.location - fragment.range.location)?.content
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift
deleted file mode 100644
index 0a8b57ffd..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManager.swift
+++ /dev/null
@@ -1,226 +0,0 @@
-//
-// TextLayoutManager.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/21/23.
-//
-
-import Foundation
-import AppKit
-
-/// The text layout manager manages laying out lines in a code document.
-public class TextLayoutManager: NSObject {
- // MARK: - Public Properties
-
- public weak var delegate: TextLayoutManagerDelegate?
- public var lineHeightMultiplier: CGFloat {
- didSet {
- setNeedsLayout()
- }
- }
- public var wrapLines: Bool {
- didSet {
- setNeedsLayout()
- }
- }
- public var detectedLineEnding: LineEnding = .lineFeed
- /// The edge insets to inset all text layout with.
- public var edgeInsets: HorizontalEdgeInsets = .zero {
- didSet {
- delegate?.layoutManagerMaxWidthDidChange(newWidth: maxLineWidth + edgeInsets.horizontal)
- setNeedsLayout()
- }
- }
-
- /// The number of lines in the document
- public var lineCount: Int {
- lineStorage.count
- }
-
- /// The strategy to use when breaking lines. Defaults to ``LineBreakStrategy/word``.
- public var lineBreakStrategy: LineBreakStrategy = .word {
- didSet {
- setNeedsLayout()
- }
- }
-
- /// The amount of extra vertical padding used to lay out lines in before they come into view.
- ///
- /// This solves a small problem with layout performance, if you're seeing layout lagging behind while scrolling,
- /// adjusting this value higher may help fix that.
- /// Defaults to `350`.
- public var verticalLayoutPadding: CGFloat = 350 {
- didSet {
- setNeedsLayout()
- }
- }
-
- public weak var renderDelegate: TextLayoutManagerRenderDelegate? {
- didSet {
- // Rebuild using potentially overridden behavior.
- _estimateLineHeight = nil
- lineStorage.removeAll()
- prepareTextLines()
- }
- }
-
- public let attachments: TextAttachmentManager = TextAttachmentManager()
-
- public weak var invisibleCharacterDelegate: InvisibleCharactersDelegate? {
- didSet {
- lineFragmentRenderer.invisibleCharacterDelegate = invisibleCharacterDelegate
- layoutView?.needsDisplay = true
- }
- }
-
- // MARK: - Internal
-
- weak var textStorage: NSTextStorage?
- public var lineStorage: TextLineStorage = TextLineStorage()
- var markedTextManager: MarkedTextManager = MarkedTextManager()
- let viewReuseQueue: ViewReuseQueue = ViewReuseQueue()
- let lineFragmentRenderer: LineFragmentRenderer
-
- package var visibleLineIds: Set = []
- /// Used to force a complete re-layout using `setNeedsLayout`
- package var needsLayout: Bool = false
-
- package var transactionCounter: Int = 0
- public var isInTransaction: Bool {
- transactionCounter > 0
- }
-
- /// Guard variable for an assertion check in debug builds.
- /// Ensures that layout calls are not overlapping, potentially causing layout issues.
- var layoutLock: NSLock = NSLock()
-
- weak var layoutView: NSView?
-
- /// The calculated maximum width of all laid out lines.
- /// - Note: This does not indicate *the* maximum width of the text view if all lines have not been laid out.
- /// This will be updated if it comes across a wider line.
- var maxLineWidth: CGFloat = 0 {
- didSet {
- delegate?.layoutManagerMaxWidthDidChange(newWidth: maxLineWidth + edgeInsets.horizontal)
- }
- }
-
- /// The maximum width available to lay out lines in, used to determine how much space is available for laying out
- /// lines. Evals to `.greatestFiniteMagnitude` when ``wrapLines`` is `false`.
- public var maxLineLayoutWidth: CGFloat {
- wrapLines ? wrapLinesWidth : .greatestFiniteMagnitude
- }
-
- /// The width of the space available to draw text fragments when wrapping lines.
- public var wrapLinesWidth: CGFloat {
- (delegate?.textViewportSize().width ?? .greatestFiniteMagnitude) - edgeInsets.horizontal
- }
-
- // MARK: - Init
-
- /// Initialize a text layout manager and prepare it for use.
- /// - Parameters:
- /// - textStorage: The text storage object to use as a data source.
- /// - lineHeightMultiplier: The multiplier to use for line heights.
- /// - wrapLines: Set to true to wrap lines to the visible editor width.
- /// - textView: The view to layout text fragments in.
- /// - delegate: A delegate for the layout manager.
- public init(
- textStorage: NSTextStorage,
- lineHeightMultiplier: CGFloat,
- wrapLines: Bool,
- textView: NSView,
- delegate: TextLayoutManagerDelegate?,
- renderDelegate: TextLayoutManagerRenderDelegate? = nil,
- invisibleCharacterDelegate: InvisibleCharactersDelegate? = nil
- ) {
- self.textStorage = textStorage
- self.lineHeightMultiplier = lineHeightMultiplier
- self.wrapLines = wrapLines
- self.layoutView = textView
- self.delegate = delegate
- self.renderDelegate = renderDelegate
- self.lineFragmentRenderer = LineFragmentRenderer(
- textStorage: textStorage,
- invisibleCharacterDelegate: invisibleCharacterDelegate
- )
- self.invisibleCharacterDelegate = invisibleCharacterDelegate
- super.init()
- prepareTextLines()
- attachments.layoutManager = self
- }
-
- /// Prepares the layout manager for use.
- /// Parses the text storage object into lines and builds the `lineStorage` object from those lines.
- func prepareTextLines() {
- guard lineStorage.count == 0, let textStorage else { return }
- #if DEBUG
- // Grab some performance information if debugging.
- var info = mach_timebase_info()
- guard mach_timebase_info(&info) == KERN_SUCCESS else { return }
- let start = mach_absolute_time()
- #endif
-
- lineStorage.buildFromTextStorage(textStorage, estimatedLineHeight: estimateLineHeight())
- detectedLineEnding = LineEnding.detectLineEnding(lineStorage: lineStorage, textStorage: textStorage)
-
- #if DEBUG
- let end = mach_absolute_time()
- let elapsed = end - start
- let nanos = elapsed * UInt64(info.numer) / UInt64(info.denom)
- let sec = TimeInterval(nanos) / TimeInterval(NSEC_PER_SEC)
- // This used to be logged every time. However we're now confident enough in the performance of this method
- // that it's not useful to log it anymore unless it's an odd number. Taking ~500ms for a >500k loc file
- // is normal. More than 1s for any document is not normal.
- if sec >= 1 {
- logger.warning("TextLayoutManager built in: \(sec, privacy: .public)s")
- }
- #endif
- }
-
- /// Resets the layout manager to an initial state.
- func reset() {
- lineStorage.removeAll()
- visibleLineIds.removeAll()
- viewReuseQueue.queuedViews.removeAll()
- viewReuseQueue.usedViews.removeAll()
- maxLineWidth = 0
- markedTextManager.removeAll()
- lineFragmentRenderer.textStorage = textStorage
- prepareTextLines()
- setNeedsLayout()
- }
-
- /// Estimates the line height for the current typing attributes.
- /// Takes into account ``TextLayoutManager/lineHeightMultiplier``.
- /// - Returns: The estimated line height.
- public func estimateLineHeight() -> CGFloat {
- if let _estimateLineHeight {
- return _estimateLineHeight
- } else if let estimate = renderDelegate?.estimatedLineHeight() {
- _estimateLineHeight = estimate
- return estimate
- } else {
- let string = NSAttributedString(string: "0", attributes: delegate?.layoutManagerTypingAttributes() ?? [:])
- let typesetter = CTTypesetterCreateWithAttributedString(string)
- let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(0, 1))
- var ascent: CGFloat = 0
- var descent: CGFloat = 0
- var leading: CGFloat = 0
- CTLineGetTypographicBounds(ctLine, &ascent, &descent, &leading)
- let height = (ascent + descent + leading) * lineHeightMultiplier
- _estimateLineHeight = height
- return height
- }
- }
-
- /// The last known line height estimate. If set to `nil`, will be recalculated the next time
- /// ``TextLayoutManager/estimateLineHeight()`` is called.
- private var _estimateLineHeight: CGFloat?
-
- deinit {
- lineStorage.removeAll()
- layoutView = nil
- delegate = nil
- }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerDelegate.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerDelegate.swift
deleted file mode 100644
index b6850b3cc..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerDelegate.swift
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// TextLayoutManagerDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/10/25.
-//
-
-import AppKit
-
-public protocol TextLayoutManagerDelegate: AnyObject {
- func layoutManagerHeightDidUpdate(newHeight: CGFloat)
- func layoutManagerMaxWidthDidChange(newWidth: CGFloat)
- func layoutManagerTypingAttributes() -> [NSAttributedString.Key: Any]
- func textViewportSize() -> CGSize
- func layoutManagerYAdjustment(_ yAdjustment: CGFloat)
-
- var visibleRect: NSRect { get }
-}
diff --git a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift b/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift
deleted file mode 100644
index 34e930b75..000000000
--- a/Sources/CodeEditTextView/TextLayoutManager/TextLayoutManagerRenderDelegate.swift
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// TextLayoutManagerRenderDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/10/25.
-//
-
-import AppKit
-
-/// Provide an instance of this class to the ``TextLayoutManager`` to override how the layout manager performs layout
-/// and display for text lines and fragments.
-///
-/// All methods on this protocol are optional, and default to the default behavior.
-public protocol TextLayoutManagerRenderDelegate: AnyObject {
- func prepareForDisplay( // swiftlint:disable:this function_parameter_count
- textLine: TextLine,
- displayData: TextLine.DisplayData,
- range: NSRange,
- stringRef: NSTextStorage,
- markedRanges: MarkedRanges?,
- attachments: [AnyTextAttachment]
- )
-
- func estimatedLineHeight() -> CGFloat?
-
- func lineFragmentView(for lineFragment: LineFragment) -> LineFragmentView
-
- func characterXPosition(in lineFragment: LineFragment, for offset: Int) -> CGFloat
-}
-
-public extension TextLayoutManagerRenderDelegate {
- func prepareForDisplay( // swiftlint:disable:this function_parameter_count
- textLine: TextLine,
- displayData: TextLine.DisplayData,
- range: NSRange,
- stringRef: NSTextStorage,
- markedRanges: MarkedRanges?,
- attachments: [AnyTextAttachment]
- ) {
- textLine.prepareForDisplay(
- displayData: displayData,
- range: range,
- stringRef: stringRef,
- markedRanges: markedRanges,
- attachments: attachments
- )
- }
-
- func estimatedLineHeight() -> CGFloat? {
- nil
- }
-
- func lineFragmentView(for lineFragment: LineFragment) -> LineFragmentView {
- LineFragmentView()
- }
-
- func characterXPosition(in lineFragment: LineFragment, for offset: Int) -> CGFloat {
- lineFragment._xPos(for: offset)
- }
-}
diff --git a/Sources/CodeEditTextView/TextLine/LineBreakStrategy.swift b/Sources/CodeEditTextView/TextLine/LineBreakStrategy.swift
deleted file mode 100644
index 6ca4a80ae..000000000
--- a/Sources/CodeEditTextView/TextLine/LineBreakStrategy.swift
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-// LineBreakStrategy.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/19/23.
-//
-
-/// Options for breaking lines when they cannot fit in the viewport.
-public enum LineBreakStrategy {
- /// Break lines at word boundaries when possible.
- case word
- /// Break lines at the nearest character, regardless of grouping.
- case character
-}
diff --git a/Sources/CodeEditTextView/TextLine/LineFragment.swift b/Sources/CodeEditTextView/TextLine/LineFragment.swift
deleted file mode 100644
index 646bf76ba..000000000
--- a/Sources/CodeEditTextView/TextLine/LineFragment.swift
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// LineFragment.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/29/23.
-//
-
-import AppKit
-import CodeEditTextViewObjC
-
-/// A ``LineFragment`` represents a subrange of characters in a line. Every text line contains at least one line
-/// fragments, and any lines that need to be broken due to width constraints will contain more than one fragment.
-public final class LineFragment: Identifiable, Equatable {
- public struct FragmentContent: Equatable {
- public enum Content: Equatable {
- case text(line: CTLine)
- case attachment(attachment: AnyTextAttachment)
- }
-
- public let data: Content
- public let width: CGFloat
-
- public var length: Int {
- switch data {
- case .text(let line):
- CTLineGetStringRange(line).length
- case .attachment(let attachment):
- attachment.range.length
- }
- }
-
-#if DEBUG
- var isText: Bool {
- switch data {
- case .text:
- true
- case .attachment:
- false
- }
- }
-#endif
- }
-
- public struct ContentPosition {
- let xPos: CGFloat
- let offset: Int
- }
-
- public let id = UUID()
- public var documentRange: NSRange = .notFound
- public var contents: [FragmentContent]
- public var width: CGFloat
- public var height: CGFloat
- public var descent: CGFloat
- public var scaledHeight: CGFloat
-
- /// The difference between the real text height and the scaled height
- public var heightDifference: CGFloat {
- scaledHeight - height
- }
-
- init(
- contents: [FragmentContent],
- width: CGFloat,
- height: CGFloat,
- descent: CGFloat,
- lineHeightMultiplier: CGFloat
- ) {
- self.contents = contents
- self.width = width
- self.height = height
- self.descent = descent
- self.scaledHeight = height * lineHeightMultiplier
- }
-
- public static func == (lhs: LineFragment, rhs: LineFragment) -> Bool {
- lhs.id == rhs.id
- }
-
- /// Finds the x position of the offset in the string the fragment represents.
- ///
- /// Underscored, because although this needs to be accessible outside this class, the relevant layout manager method
- /// should be used.
- ///
- /// - Parameter offset: The offset, relative to the start of the *line*.
- /// - Returns: The x position of the character in the drawn line, from the left.
- func _xPos(for offset: Int) -> CGFloat {
- guard let (content, position) = findContent(at: offset) else {
- return width
- }
- switch content.data {
- case .text(let ctLine):
- return CTLineGetOffsetForStringIndex(
- ctLine,
- CTLineGetStringRange(ctLine).location + offset - position.offset,
- nil
- ) + position.xPos
- case .attachment:
- return position.xPos
- }
- }
-
- package func findContent(at location: Int) -> (content: FragmentContent, position: ContentPosition)? {
- var position = ContentPosition(xPos: 0, offset: 0)
-
- for content in contents {
- let length = content.length
- let width = content.width
-
- if (position.offset..<(position.offset + length)).contains(location) {
- return (content, position)
- }
-
- position = ContentPosition(xPos: position.xPos + width, offset: position.offset + length)
- }
-
- return nil
- }
-
- package func findContent(atX xPos: CGFloat) -> (content: FragmentContent, position: ContentPosition)? {
- var position = ContentPosition(xPos: 0, offset: 0)
-
- for content in contents {
- let length = content.length
- let width = content.width
-
- if (position.xPos..<(position.xPos + width)).contains(xPos) {
- return (content, position)
- }
-
- position = ContentPosition(xPos: position.xPos + width, offset: position.offset + length)
- }
-
- return nil
- }
-}
diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift b/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift
deleted file mode 100644
index 6330d0ee0..000000000
--- a/Sources/CodeEditTextView/TextLine/LineFragmentRenderer.swift
+++ /dev/null
@@ -1,290 +0,0 @@
-//
-// LineFragmentRenderer.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/10/25.
-//
-
-import AppKit
-import CodeEditTextViewObjC
-
-/// Manages drawing line fragments into a drawing context.
-public final class LineFragmentRenderer {
- private struct CacheKey: Hashable {
- let string: String
- let font: NSFont
- let color: NSColor
- }
-
- private struct InvisibleDrawingContext {
- let lineFragment: LineFragment
- let ctLine: CTLine
- let contentOffset: Int
- let position: CGPoint
- let context: CGContext
- }
-
- weak var textStorage: NSTextStorage?
- weak var invisibleCharacterDelegate: InvisibleCharactersDelegate?
- private var attributedStringCache: [CacheKey: CTLine] = [:]
-
- /// Create a fragment renderer.
- /// - Parameters:
- /// - textStorage: The text storage backing the fragments being drawn.
- /// - invisibleCharacterDelegate: A delegate object to interrogate for invisible character drawing.
- public init(textStorage: NSTextStorage?, invisibleCharacterDelegate: InvisibleCharactersDelegate?) {
- self.textStorage = textStorage
- self.invisibleCharacterDelegate = invisibleCharacterDelegate
- }
-
- /// Draw the given line fragment into a drawing context, using the invisible character configuration determined
- /// from the ``invisibleCharacterDelegate``, and line fragment information from the passed ``LineFragment`` object.
- /// - Parameters:
- /// - lineFragment: The line fragment to drawn
- /// - context: The drawing context to draw into.
- /// - yPos: In the drawing context, what `y` position to start drawing at.
- public func draw(lineFragment: LineFragment, in context: CGContext, yPos: CGFloat) {
- if invisibleCharacterDelegate?.invisibleStyleShouldClearCache() == true {
- attributedStringCache.removeAll(keepingCapacity: true)
- }
-
- context.saveGState()
- // Removes jagged edges
- context.setAllowsAntialiasing(true)
- context.setShouldAntialias(true)
-
- // Effectively increases the screen resolution by drawing text in each LED color pixel (R, G, or B), rather than
- // the triplet of pixels (RGB) for a regular pixel. This can increase text clarity, but loses effectiveness
- // in low-contrast settings.
- context.setAllowsFontSubpixelPositioning(true)
- context.setShouldSubpixelPositionFonts(true)
-
- // Quantizes the position of each glyph, resulting in slightly less accurate positioning, and gaining higher
- // quality bitmaps and performance.
- context.setAllowsFontSubpixelQuantization(true)
- context.setShouldSubpixelQuantizeFonts(true)
-
- ContextSetHiddenSmoothingStyle(context, 16)
-
- context.textMatrix = .init(scaleX: 1, y: -1)
-
- var currentPosition: CGFloat = 0.0
- var currentLocation = 0
- for content in lineFragment.contents {
- context.saveGState()
- switch content.data {
- case .text(let ctLine):
- context.textPosition = CGPoint(
- x: currentPosition,
- y: yPos + lineFragment.height - lineFragment.descent + (lineFragment.heightDifference/2)
- ).pixelAligned
- CTLineDraw(ctLine, context)
-
- drawInvisibles(
- lineFragment: lineFragment,
- for: ctLine,
- contentOffset: currentLocation,
- position: CGPoint(x: currentPosition, y: yPos),
- in: context
- )
- case .attachment(let attachment):
- attachment.attachment.draw(
- in: context,
- rect: NSRect(
- x: currentPosition,
- y: yPos + (lineFragment.heightDifference/2),
- width: attachment.width,
- height: lineFragment.height
- )
- )
- }
- context.restoreGState()
- currentPosition += content.width
- currentLocation += content.length
- }
- context.restoreGState()
- }
-
- private func drawInvisibles(
- lineFragment: LineFragment,
- for ctLine: CTLine,
- contentOffset: Int,
- position: CGPoint,
- in context: CGContext
- ) {
- guard let textStorage, let invisibleCharacterDelegate else { return }
-
- let drawingContext = InvisibleDrawingContext(
- lineFragment: lineFragment,
- ctLine: ctLine,
- contentOffset: contentOffset,
- position: position,
- context: context
- )
-
- let range = createTextRange(for: drawingContext).clamped(to: (textStorage.string as NSString).length)
- let string = (textStorage.string as NSString).substring(with: range)
-
- processInvisibleCharacters(
- in: string,
- range: range,
- delegate: invisibleCharacterDelegate,
- drawingContext: drawingContext
- )
- }
-
- private func createTextRange(for drawingContext: InvisibleDrawingContext) -> NSRange {
- return NSRange(
- start: drawingContext.lineFragment.documentRange.location + drawingContext.contentOffset,
- end: drawingContext.lineFragment.documentRange.max
- )
- }
-
- private func processInvisibleCharacters(
- in string: String,
- range: NSRange,
- delegate: InvisibleCharactersDelegate,
- drawingContext: InvisibleDrawingContext
- ) {
- drawingContext.context.saveGState()
- defer { drawingContext.context.restoreGState() }
-
- lazy var offset = CTLineGetStringRange(drawingContext.ctLine).location
-
- for (idx, character) in string.utf16.enumerated()
- where delegate.triggerCharacters.contains(character) {
- processInvisibleCharacter(
- character: character,
- at: idx,
- in: range,
- offset: offset,
- delegate: delegate,
- drawingContext: drawingContext
- )
- }
- }
-
- // Disabling the next lint warning because I *cannot* figure out how to split this up further.
-
- private func processInvisibleCharacter( // swiftlint:disable:this function_parameter_count
- character: UInt16,
- at index: Int,
- in range: NSRange,
- offset: Int,
- delegate: InvisibleCharactersDelegate,
- drawingContext: InvisibleDrawingContext
- ) {
- guard let style = delegate.invisibleStyle(
- for: character,
- at: NSRange(start: range.location + index, end: range.max),
- lineRange: drawingContext.lineFragment.documentRange
- ) else {
- return
- }
-
- let xOffset = CTLineGetOffsetForStringIndex(drawingContext.ctLine, offset + index, nil)
-
- switch style {
- case let .replace(replacementCharacter, color, font):
- drawReplacementCharacter(
- replacementCharacter,
- color: color,
- font: font,
- at: calculateReplacementPosition(
- basePosition: drawingContext.position,
- xOffset: xOffset,
- lineFragment: drawingContext.lineFragment
- ),
- in: drawingContext.context
- )
- case let .emphasize(color):
- let emphasizeRect = calculateEmphasisRect(
- basePosition: drawingContext.position,
- xOffset: xOffset,
- characterIndex: index,
- offset: offset,
- drawingContext: drawingContext
- )
-
- drawEmphasis(
- color: color,
- forRect: emphasizeRect,
- in: drawingContext.context
- )
- }
- }
-
- private func calculateReplacementPosition(
- basePosition: CGPoint,
- xOffset: CGFloat,
- lineFragment: LineFragment
- ) -> CGPoint {
- return CGPoint(
- x: basePosition.x + xOffset,
- y: basePosition.y + lineFragment.height - lineFragment.descent + (lineFragment.heightDifference/2)
- )
- }
-
- private func calculateEmphasisRect(
- basePosition: CGPoint,
- xOffset: CGFloat,
- characterIndex: Int,
- offset: Int,
- drawingContext: InvisibleDrawingContext
- ) -> NSRect {
- let xEndOffset = if offset + characterIndex + 1 == drawingContext.lineFragment.documentRange.length {
- drawingContext.lineFragment.width
- } else {
- CTLineGetOffsetForStringIndex(drawingContext.ctLine, offset + characterIndex + 1, nil)
- }
-
- return NSRect(
- x: basePosition.x + xOffset,
- y: basePosition.y,
- width: xEndOffset - xOffset,
- height: drawingContext.lineFragment.scaledHeight
- )
- }
-
- private func drawReplacementCharacter(
- _ replacementCharacter: String,
- color: NSColor,
- font: NSFont,
- at position: CGPoint,
- in context: CGContext
- ) {
- let cacheKey = CacheKey(string: replacementCharacter, font: font, color: color)
- let ctLine: CTLine
- if let cachedValue = attributedStringCache[cacheKey] {
- ctLine = cachedValue
- } else {
- let attrString = NSAttributedString(string: replacementCharacter, attributes: [
- .font: font,
- .foregroundColor: color
- ])
- ctLine = CTLineCreateWithAttributedString(attrString)
- attributedStringCache[cacheKey] = ctLine
- }
- context.textPosition = position
- CTLineDraw(ctLine, context)
- }
-
- private func drawEmphasis(
- color: NSColor,
- forRect: NSRect,
- in context: CGContext
- ) {
- context.setFillColor(color.cgColor)
-
- let rect: CGRect
-
- if forRect.width == 0 {
- // Zero-width character, add padding
- rect = CGRect(x: forRect.origin.x - 2, y: forRect.origin.y, width: 4, height: forRect.height)
- } else {
- rect = forRect
- }
-
- context.fill(rect)
- }
-}
diff --git a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift b/Sources/CodeEditTextView/TextLine/LineFragmentView.swift
deleted file mode 100644
index 66af42872..000000000
--- a/Sources/CodeEditTextView/TextLine/LineFragmentView.swift
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// LineFragmentView.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/14/23.
-//
-
-import AppKit
-
-/// Displays a line fragment.
-open class LineFragmentView: NSView {
- public weak var lineFragment: LineFragment?
- public weak var renderer: LineFragmentRenderer?
-#if DEBUG_LINE_INVALIDATION
- private var backgroundAnimation: CABasicAnimation?
-#endif
-
- open override var isFlipped: Bool {
- true
- }
-
- open override var isOpaque: Bool {
- false
- }
-
- open override func hitTest(_ point: NSPoint) -> NSView? { nil }
-
- public override init(frame frameRect: NSRect) {
- super.init(frame: frameRect)
- }
-
- required public init?(coder: NSCoder) {
- super.init(coder: coder)
- }
-
-#if DEBUG_LINE_INVALIDATION
- /// Setup background animation from random color to clear when this fragment is invalidated.
- private func setupBackgroundAnimation() {
- self.wantsLayer = true
-
- let randomColor = NSColor(
- red: CGFloat.random(in: 0...1),
- green: CGFloat.random(in: 0...1),
- blue: CGFloat.random(in: 0...1),
- alpha: 0.3
- )
-
- self.layer?.backgroundColor = randomColor.cgColor
-
- let animation = CABasicAnimation(keyPath: "backgroundColor")
- animation.fromValue = randomColor.cgColor
- animation.toValue = NSColor.clear.cgColor
- animation.duration = 1.0
- animation.timingFunction = CAMediaTimingFunction(name: .easeOut)
- animation.fillMode = .forwards
- animation.isRemovedOnCompletion = false
- self.layer?.add(animation, forKey: "backgroundColorAnimation")
-
- DispatchQueue.main.asyncAfter(deadline: .now() + animation.duration) {
- self.layer?.backgroundColor = NSColor.clear.cgColor
- }
- }
-#endif
-
- open override func prepareForReuse() {
- super.prepareForReuse()
- lineFragment = nil
-
-#if DEBUG_LINE_INVALIDATION
- setupBackgroundAnimation()
-#endif
- }
-
- /// Set a new line fragment for this view, updating view size.
- /// - Parameter newFragment: The new fragment to use.
- open func setLineFragment(_ newFragment: LineFragment, fragmentRange: NSRange, renderer: LineFragmentRenderer) {
- self.lineFragment = newFragment
- self.renderer = renderer
- self.frame.size = CGSize(width: newFragment.width, height: newFragment.scaledHeight)
- }
-
- /// Draws the line fragment in the graphics context.
- open override func draw(_ dirtyRect: NSRect) {
- guard let lineFragment, let context = NSGraphicsContext.current?.cgContext else {
- return
- }
-
- renderer?.draw(lineFragment: lineFragment, in: context, yPos: 0.0)
- }
-}
diff --git a/Sources/CodeEditTextView/TextLine/TextLine.swift b/Sources/CodeEditTextView/TextLine/TextLine.swift
deleted file mode 100644
index b9038a6f3..000000000
--- a/Sources/CodeEditTextView/TextLine/TextLine.swift
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// TextLine.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/21/23.
-//
-
-import Foundation
-import AppKit
-
-/// Represents a displayable line of text.
-public final class TextLine: Identifiable, Equatable {
- public let id: UUID = UUID()
- private var needsLayout: Bool = true
- var maxWidth: CGFloat?
- private(set) var typesetter: Typesetter = Typesetter()
-
- /// The line fragments contained by this text line.
- public var lineFragments: TextLineStorage {
- typesetter.lineFragments
- }
-
- /// Marks this line as needing layout and clears all typesetting data.
- public func setNeedsLayout() {
- needsLayout = true
- typesetter = Typesetter()
- }
-
- /// Determines if the line needs to be laid out again.
- /// - Parameter maxWidth: The new max width to check.
- /// - Returns: True, if this line has been marked as needing layout using ``TextLine/setNeedsLayout()`` or if the
- /// line needs to find new line breaks due to a new constraining width.
- func needsLayout(maxWidth: CGFloat) -> Bool {
- needsLayout // Force layout
- || (
- // Both max widths we're comparing are finite
- maxWidth.isFinite
- && (self.maxWidth ?? 0.0).isFinite
- && maxWidth != (self.maxWidth ?? 0.0)
- )
- }
-
- /// Prepares the line for display, generating all potential line breaks and calculating the real height of the line.
- /// - Parameters:
- /// - displayData: Information required to display a text line.
- /// - range: The range this text range represents in the entire document.
- /// - stringRef: A reference to the string storage for the document.
- /// - markedRanges: Any marked ranges in the line.
- /// - attachments: Any attachments overlapping the line range.
- public func prepareForDisplay(
- displayData: DisplayData,
- range: NSRange,
- stringRef: NSTextStorage,
- markedRanges: MarkedRanges?,
- attachments: [AnyTextAttachment]
- ) {
- let string = stringRef.attributedSubstring(from: range)
- let maxWidth = typesetter.typeset(
- string,
- documentRange: range,
- displayData: displayData,
- markedRanges: markedRanges,
- attachments: attachments
- )
- self.maxWidth = displayData.maxWidth
- needsLayout = false
- }
-
- public static func == (lhs: TextLine, rhs: TextLine) -> Bool {
- lhs.id == rhs.id
- }
-
- /// Contains all required data to perform a typeset and layout operation on a text line.
- public struct DisplayData {
- public let maxWidth: CGFloat
- public let lineHeightMultiplier: CGFloat
- public let estimatedLineHeight: CGFloat
- public let breakStrategy: LineBreakStrategy
-
- public init(
- maxWidth: CGFloat,
- lineHeightMultiplier: CGFloat,
- estimatedLineHeight: CGFloat,
- breakStrategy: LineBreakStrategy = .character
- ) {
- self.maxWidth = maxWidth
- self.lineHeightMultiplier = lineHeightMultiplier
- self.estimatedLineHeight = estimatedLineHeight
- self.breakStrategy = breakStrategy
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/CTLineTypesetData.swift b/Sources/CodeEditTextView/TextLine/Typesetter/CTLineTypesetData.swift
deleted file mode 100644
index 7466a9e5d..000000000
--- a/Sources/CodeEditTextView/TextLine/Typesetter/CTLineTypesetData.swift
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// CTLineTypesetData.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/24/25.
-//
-
-import AppKit
-
-/// Represents layout information received from a `CTTypesetter` for a `CTLine`.
-struct CTLineTypesetData {
- let ctLine: CTLine
- let descent: CGFloat
- let width: CGFloat
- let height: CGFloat
-}
diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/LineFragmentTypesetContext.swift b/Sources/CodeEditTextView/TextLine/Typesetter/LineFragmentTypesetContext.swift
deleted file mode 100644
index f6bb487b2..000000000
--- a/Sources/CodeEditTextView/TextLine/Typesetter/LineFragmentTypesetContext.swift
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// LineFragmentTypesetContext.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/24/25.
-//
-
-import CoreGraphics
-
-/// Represents partial parsing state for typesetting a line fragment. Used once during typesetting and then discarded.
-struct LineFragmentTypesetContext {
- var contents: [LineFragment.FragmentContent] = []
- var start: Int
- var width: CGFloat
- var height: CGFloat
- var descent: CGFloat
-
- mutating func clear() {
- contents.removeAll(keepingCapacity: true)
- width = 0
- height = 0
- descent = 0
- }
-}
diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift b/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift
deleted file mode 100644
index f5b6ab6df..000000000
--- a/Sources/CodeEditTextView/TextLine/Typesetter/TypesetContext.swift
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// TypesetContext.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/24/25.
-//
-
-import Foundation
-
-/// Represents partial parsing state for typesetting a line. Used once during typesetting and then discarded.
-/// Contains a few methods for appending data or popping the current line data.
-struct TypesetContext {
- let documentRange: NSRange
- let displayData: TextLine.DisplayData
-
- /// Accumulated generated line fragments.
- var lines: [TextLineStorage.BuildItem] = []
- var maxHeight: CGFloat = 0
- /// The current fragment typesetting context.
- var fragmentContext = LineFragmentTypesetContext(start: 0, width: 0.0, height: 0.0, descent: 0.0)
-
- /// Tracks the current position when laying out runs
- var currentPosition: Int = 0
-
- // MARK: - Fragment Context Modification
-
- /// Appends an attachment to the current ``fragmentContext``
- /// - Parameter attachment: The type-erased attachment to append.
- mutating func appendAttachment(_ attachment: AnyTextAttachment) {
- // Check if we can append this attachment to the current line
- if fragmentContext.width + attachment.width > displayData.maxWidth {
- popCurrentData()
- }
-
- // Add the attachment to the current line
- fragmentContext.contents.append(
- .init(data: .attachment(attachment: attachment), width: attachment.width)
- )
- fragmentContext.width += attachment.width
- fragmentContext.height = fragmentContext.height == 0 ? maxHeight : fragmentContext.height
- currentPosition += attachment.range.length
- }
-
- /// Appends a text range to the current ``fragmentContext``
- /// - Parameters:
- /// - typesettingRange: The range relative to the typesetter for the current fragment context.
- /// - lineBreak: The position that the text fragment should end at, relative to the typesetter's range.
- /// - typesetData: Data received from the typesetter.
- mutating func appendText(typesettingRange: NSRange, lineBreak: Int, typesetData: CTLineTypesetData) {
- fragmentContext.contents.append(
- .init(data: .text(line: typesetData.ctLine), width: typesetData.width)
- )
- fragmentContext.width += typesetData.width
- fragmentContext.height = typesetData.height
- fragmentContext.descent = max(typesetData.descent, fragmentContext.descent)
- currentPosition = lineBreak + typesettingRange.location
- }
-
- // MARK: - Pop Fragments
-
- /// Pop the current fragment state into a new line fragment, and reset the fragment state.
- mutating func popCurrentData() {
- let fragment = LineFragment(
- contents: fragmentContext.contents,
- width: fragmentContext.width,
- height: fragmentContext.height,
- descent: fragmentContext.descent,
- lineHeightMultiplier: displayData.lineHeightMultiplier
- )
- lines.append(
- .init(data: fragment, length: currentPosition - fragmentContext.start, height: fragment.scaledHeight)
- )
- maxHeight = max(maxHeight, fragment.scaledHeight)
-
- fragmentContext.clear()
- fragmentContext.start = currentPosition
- }
-}
diff --git a/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift b/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift
deleted file mode 100644
index b5edb8594..000000000
--- a/Sources/CodeEditTextView/TextLine/Typesetter/Typesetter.swift
+++ /dev/null
@@ -1,248 +0,0 @@
-//
-// Typesetter.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/21/23.
-//
-
-import AppKit
-import CoreText
-
-/// The `Typesetter` is responsible for producing text fragments from a document range. It transforms a text line
-/// and attachments into a sequence of `LineFragment`s, which reflect the visual structure of the text line.
-///
-/// This class has one primary method: ``typeset(_:documentRange:displayData:markedRanges:attachments:)``, which
-/// performs the typesetting algorithm and breaks content into runs using attachments.
-///
-/// To retrieve the line fragments generated by this class, access the ``lineFragments`` property.
-final public class Typesetter {
- struct ContentRun {
- let range: NSRange
- let type: RunType
-
- enum RunType {
- case attachment(AnyTextAttachment)
- case string(CTTypesetter)
- }
- }
-
- public var documentRange: NSRange?
- public var lineFragments = TextLineStorage()
-
- // MARK: - Init & Prepare
-
- public init() { }
-
- public func typeset(
- _ string: NSAttributedString,
- documentRange: NSRange,
- displayData: TextLine.DisplayData,
- markedRanges: MarkedRanges?,
- attachments: [AnyTextAttachment] = []
- ) {
- let string = makeString(string: string, markedRanges: markedRanges)
- lineFragments.removeAll()
-
- // Fast path
- if string.length == 0 || displayData.maxWidth <= 0 {
- typesetEmptyLine(displayData: displayData, string: string)
- return
- }
- let (lines, maxHeight) = typesetLineFragments(
- string: string,
- documentRange: documentRange,
- displayData: displayData,
- attachments: attachments
- )
- lineFragments.build(from: lines, estimatedLineHeight: maxHeight)
- }
-
- private func makeString(string: NSAttributedString, markedRanges: MarkedRanges?) -> NSAttributedString {
- if let markedRanges {
- let mutableString = NSMutableAttributedString(attributedString: string)
- for markedRange in markedRanges.ranges {
- mutableString.addAttributes(markedRanges.attributes, range: markedRange)
- }
- return mutableString
- }
-
- return string
- }
-
- // MARK: - Create Content Lines
-
- /// Breaks up the string into a series of 'runs' making up the visual content of this text line.
- /// - Parameters:
- /// - string: The string reference to use.
- /// - documentRange: The range in the string reference.
- /// - attachments: Any text attachments overlapping the string reference.
- /// - Returns: A series of content runs making up this line.
- func createContentRuns(
- string: NSAttributedString,
- documentRange: NSRange,
- attachments: [AnyTextAttachment]
- ) -> [ContentRun] {
- var attachments = attachments
- var currentPosition = 0
- let maxPosition = documentRange.length
- var runs: [ContentRun] = []
-
- while currentPosition < maxPosition {
- guard let nextAttachment = attachments.first else {
- // No attachments, use the remaining length
- if maxPosition > currentPosition {
- let range = NSRange(location: currentPosition, length: maxPosition - currentPosition)
- let substring = string.attributedSubstring(from: range)
- runs.append(
- ContentRun(
- range: range,
- type: .string(CTTypesetterCreateWithAttributedString(substring))
- )
- )
- }
- break
- }
- attachments.removeFirst()
- // adjust the range to be relative to the line
- let attachmentRange = NSRange(
- location: nextAttachment.range.location - documentRange.location,
- length: nextAttachment.range.length
- )
-
- // Use the space before the attachment
- if nextAttachment.range.location > currentPosition {
- let range = NSRange(start: currentPosition, end: attachmentRange.location)
- let substring = string.attributedSubstring(from: range)
- runs.append(
- ContentRun(range: range, type: .string(CTTypesetterCreateWithAttributedString(substring)))
- )
- }
-
- runs.append(ContentRun(range: attachmentRange, type: .attachment(nextAttachment)))
- currentPosition = attachmentRange.max
- }
-
- return runs
- }
-
- // MARK: - Typeset Content Runs
-
- func typesetLineFragments(
- string: NSAttributedString,
- documentRange: NSRange,
- displayData: TextLine.DisplayData,
- attachments: [AnyTextAttachment]
- ) -> (lines: [TextLineStorage.BuildItem], maxHeight: CGFloat) {
- let contentRuns = createContentRuns(string: string, documentRange: documentRange, attachments: attachments)
- var context = TypesetContext(documentRange: documentRange, displayData: displayData)
-
- for run in contentRuns {
- switch run.type {
- case .attachment(let attachment):
- context.appendAttachment(attachment)
- case .string(let typesetter):
- layoutTextUntilLineBreak(
- context: &context,
- string: string,
- range: run.range,
- typesetter: typesetter,
- displayData: displayData
- )
- }
- }
-
- if !context.fragmentContext.contents.isEmpty {
- context.popCurrentData()
- }
-
- return (context.lines, context.maxHeight)
- }
-
- // MARK: - Layout Text Fragments
-
- func layoutTextUntilLineBreak(
- context: inout TypesetContext,
- string: NSAttributedString,
- range: NSRange,
- typesetter: CTTypesetter,
- displayData: TextLine.DisplayData
- ) {
- let substring = string.attributedSubstring(from: range)
-
- // Layout as many fragments as possible in this content run
- while context.currentPosition < range.max {
- // The line break indicates the distance from the range we’re typesetting on that should be broken at.
- // It's relative to the range being typeset, not the line
- let lineBreak = typesetter.suggestLineBreak(
- using: substring,
- strategy: displayData.breakStrategy,
- subrange: NSRange(start: context.currentPosition - range.location, end: range.length),
- constrainingWidth: displayData.maxWidth - context.fragmentContext.width
- )
-
- // Indicates the subrange on the range that the typesetter knows about. This may not be the entire line
- let typesetSubrange = NSRange(location: context.currentPosition - range.location, length: lineBreak)
- let typesetData = typesetLine(typesetter: typesetter, range: typesetSubrange)
-
- // The typesetter won't tell us if 0 characters can fit in the constrained space. This checks to
- // make sure we can fit something. If not, we pop and continue
- if lineBreak == 1 && context.fragmentContext.width + typesetData.width > displayData.maxWidth {
- context.popCurrentData()
- continue
- }
-
- // Amend the current line data to include this line, popping the current line afterwards
- context.appendText(typesettingRange: range, lineBreak: lineBreak, typesetData: typesetData)
-
- // If this isn't the end of the line, we should break so we pop the context and start a new fragment.
- if context.currentPosition != range.max {
- context.popCurrentData()
- }
- }
- }
-
- // MARK: - Typeset CTLines
-
- /// Typeset a new fragment.
- /// - Parameters:
- /// - range: The range of the fragment.
- /// - lineHeightMultiplier: The multiplier to apply to the line's height.
- /// - Returns: A new line fragment.
- private func typesetLine(typesetter: CTTypesetter, range: NSRange) -> CTLineTypesetData {
- let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(range.location, range.length))
- var ascent: CGFloat = 0
- var descent: CGFloat = 0
- var leading: CGFloat = 0
- let width = CGFloat(CTLineGetTypographicBounds(ctLine, &ascent, &descent, &leading))
- let height = ascent + descent + leading
- return CTLineTypesetData(
- ctLine: ctLine,
- descent: descent,
- width: width,
- height: height
- )
- }
-
- /// Typesets a single, 0-length line fragment.
- /// - Parameter displayData: Relevant information for layout estimation.
- private func typesetEmptyLine(displayData: TextLine.DisplayData, string: NSAttributedString) {
- let typesetter = CTTypesetterCreateWithAttributedString(string)
- // Insert an empty fragment
- let ctLine = CTTypesetterCreateLine(typesetter, CFRangeMake(0, 0))
- let fragment = LineFragment(
- contents: [.init(data: .text(line: ctLine), width: 0.0)],
- width: 0,
- height: displayData.estimatedLineHeight / displayData.lineHeightMultiplier,
- descent: 0,
- lineHeightMultiplier: displayData.lineHeightMultiplier
- )
- lineFragments.build(
- from: [.init(data: fragment, length: 0, height: fragment.scaledHeight)],
- estimatedLineHeight: 0
- )
- }
-
- deinit {
- lineFragments.removeAll()
- }
-}
diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Iterator.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Iterator.swift
deleted file mode 100644
index c79d4adcb..000000000
--- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Iterator.swift
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// TextLineStorage+Iterator.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 7/16/23.
-//
-
-import Foundation
-
-/// # Dev Note
-///
-/// For these iterators, prefer `.getLine(atIndex: )` for finding the next item in the iteration.
-/// Using plain indexes instead of y positions or ranges has led to far fewer edge cases.
-public extension TextLineStorage {
- /// Iterate over all lines overlapping a range of `y` positions. Positions in the middle of line contents will
- /// return that line.
- /// - Parameters:
- /// - minY: The minimum y position to start at.
- /// - maxY: The maximum y position to stop at.
- /// - Returns: A lazy iterator for retrieving lines.
- func linesStartingAt(_ minY: CGFloat, until maxY: CGFloat) -> TextLineStorageYIterator {
- TextLineStorageYIterator(storage: self, minY: minY, maxY: maxY)
- }
-
- /// Iterate over all lines overlapping a range in the document.
- /// - Parameter range: The range to query.
- /// - Returns: A lazy iterator for retrieving lines.
- func linesInRange(_ range: NSRange) -> TextLineStorageRangeIterator {
- TextLineStorageRangeIterator(storage: self, range: range)
- }
-
- struct TextLineStorageYIterator: LazySequenceProtocol, IteratorProtocol {
- private let storage: TextLineStorage
- private let minY: CGFloat
- private let maxY: CGFloat
- private var currentPosition: TextLinePosition?
-
- init(storage: TextLineStorage, minY: CGFloat, maxY: CGFloat, currentPosition: TextLinePosition? = nil) {
- self.storage = storage
- self.minY = minY
- self.maxY = maxY
- self.currentPosition = currentPosition
- }
-
- public mutating func next() -> TextLinePosition? {
- if let currentPosition {
- guard let nextPosition = storage.getLine(atIndex: currentPosition.index + 1),
- nextPosition.yPos < maxY else {
- return nil
- }
- self.currentPosition = nextPosition
- return nextPosition
- } else if let nextPosition = storage.getLine(atPosition: minY) {
- self.currentPosition = nextPosition
- return nextPosition
- } else {
- return nil
- }
- }
- }
-
- struct TextLineStorageRangeIterator: LazySequenceProtocol, IteratorProtocol {
- private let storage: TextLineStorage
- private let range: NSRange
- private var currentPosition: TextLinePosition?
-
- init(storage: TextLineStorage, range: NSRange, currentPosition: TextLinePosition? = nil) {
- self.storage = storage
- self.range = range
- self.currentPosition = currentPosition
- }
-
- public mutating func next() -> TextLinePosition? {
- if let currentPosition {
- guard currentPosition.range.max < range.max,
- let nextPosition = storage.getLine(atIndex: currentPosition.index + 1) else {
- return nil
- }
- self.currentPosition = nextPosition
- return nextPosition
- } else if let nextPosition = storage.getLine(atOffset: range.location) {
- self.currentPosition = nextPosition
- return nextPosition
- } else {
- return nil
- }
- }
- }
-}
-
-extension TextLineStorage: LazySequenceProtocol {
- public func makeIterator() -> TextLineStorageIterator {
- TextLineStorageIterator(storage: self, currentPosition: nil)
- }
-
- public struct TextLineStorageIterator: IteratorProtocol {
- private let storage: TextLineStorage
- private var currentPosition: TextLinePosition?
-
- init(storage: TextLineStorage, currentPosition: TextLinePosition? = nil) {
- self.storage = storage
- self.currentPosition = currentPosition
- }
-
- public mutating func next() -> TextLinePosition? {
- if let currentPosition {
- guard currentPosition.range.max < storage.length,
- let nextPosition = storage.getLine(atIndex: currentPosition.index + 1) else {
- return nil
- }
- self.currentPosition = nextPosition
- return nextPosition
- } else if let nextPosition = storage.getLine(atOffset: 0) {
- self.currentPosition = nextPosition
- return nextPosition
- } else {
- return nil
- }
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+NSTextStorage.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+NSTextStorage.swift
deleted file mode 100644
index ab866ccc9..000000000
--- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+NSTextStorage.swift
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// TextLineStorage+NSTextStorage.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/21/23.
-//
-
-import AppKit
-
-extension TextLineStorage where Data == TextLine {
- /// Builds the line storage object from the given `NSTextStorage`.
- /// - Parameters:
- /// - textStorage: The text storage object to use.
- /// - estimatedLineHeight: The estimated height of each individual line.
- func buildFromTextStorage(_ textStorage: NSTextStorage, estimatedLineHeight: CGFloat) {
- var index = 0
- var lines: [BuildItem] = []
- while let range = textStorage.getNextLine(startingAt: index) {
- lines.append(BuildItem(data: TextLine(), length: range.max - index, height: estimatedLineHeight))
- index = NSMaxRange(range)
- }
- // Create the last line
- if textStorage.length - index > 0 {
- lines.append(BuildItem(data: TextLine(), length: textStorage.length - index, height: estimatedLineHeight))
- }
-
- if textStorage.length == 0
- || LineEnding(rawValue: textStorage.mutableString.substring(from: textStorage.length - 1)) != nil {
- lines.append(BuildItem(data: TextLine(), length: 0, height: estimatedLineHeight))
- }
-
- // Use an efficient tree building algorithm rather than adding lines sequentially
- self.build(from: lines, estimatedLineHeight: estimatedLineHeight)
- }
-}
diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Node.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Node.swift
deleted file mode 100644
index eb6c4ca94..000000000
--- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Node.swift
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-// TextLineStorage+Node.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/25/23.
-//
-
-import Foundation
-
-extension TextLineStorage {
- func isRightChild(_ node: Node) -> Bool {
- node.parent?.right === node
- }
-
- func isLeftChild(_ node: Node) -> Bool {
- node.parent?.left === node
- }
-
- /// Transplants a node with another node.
- ///
- /// ```
- /// [a]
- /// [u]_/ \_[b]
- /// [c]_/ \_[v]
- ///
- /// call: transplant(u, v)
- ///
- /// [a]
- /// [v]_/ \_[b]
- /// [c]_/
- ///
- /// ```
- /// - Note: Leaves the task of updating tree metadata to the caller.
- /// - Parameters:
- /// - nodeU: The node to replace.
- /// - nodeV: The node to insert in place of `nodeU`
- func transplant(_ nodeU: borrowing Node, with nodeV: Node?) {
- if nodeU.parent == nil {
- root = nodeV
- } else if isLeftChild(nodeU) {
- nodeU.parent?.left = nodeV
- } else {
- nodeU.parent?.right = nodeV
- }
- nodeV?.parent = nodeU.parent
- }
-
- enum Color {
- case red
- case black
- }
-
- final class Node {
- // The length of the text line
- var length: Int
- // The height of this text line
- var height: CGFloat
- var data: NodeData
-
- // The offset in characters of the entire left subtree
- var leftSubtreeOffset: Int
- // The sum of the height of the nodes in the left subtree
- var leftSubtreeHeight: CGFloat
- // The number of nodes in the left subtree
- var leftSubtreeCount: Int
-
- var left: Node?
- var right: Node?
- unowned var parent: Node?
- var color: Color
-
- init(
- length: Int,
- data: NodeData,
- leftSubtreeOffset: Int,
- leftSubtreeHeight: CGFloat,
- leftSubtreeCount: Int,
- height: CGFloat,
- left: Node? = nil,
- right: Node? = nil,
- parent: Node? = nil,
- color: Color
- ) {
- self.length = length
- self.data = data
- self.leftSubtreeOffset = leftSubtreeOffset
- self.leftSubtreeHeight = leftSubtreeHeight
- self.leftSubtreeCount = leftSubtreeCount
- self.height = height
- self.left = left
- self.right = right
- self.parent = parent
- self.color = color
- }
-
- convenience init(length: Int, data: NodeData, height: CGFloat) {
- self.init(
- length: length,
- data: data,
- leftSubtreeOffset: 0,
- leftSubtreeHeight: 0.0,
- leftSubtreeCount: 0,
- height: height,
- color: .black
- )
- }
-
- func sibling() -> Node? {
- if parent?.left === self {
- return parent?.right
- } else {
- return parent?.left
- }
- }
-
- func minimum() -> Node {
- if let left {
- return left.minimum()
- } else {
- return self
- }
- }
-
- func maximum() -> Node {
- if let right {
- return right.maximum()
- } else {
- return self
- }
- }
-
- func getSuccessor() -> Node? {
- // If node has right child: successor is the min of this right tree
- if let right {
- return right.minimum()
- } else {
- // Else go upward until node is a left child
- var currentNode = self
- var parent = currentNode.parent
- while currentNode.parent?.right === currentNode {
- if let parent = parent {
- currentNode = parent
- }
- parent = currentNode.parent
- }
- return parent
- }
- }
-
- deinit {
- left = nil
- right = nil
- parent = nil
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Structs.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Structs.swift
deleted file mode 100644
index b022a9b1c..000000000
--- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage+Structs.swift
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// TextLineStorage+Structs.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/24/23.
-//
-
-import Foundation
-
-extension TextLineStorage where Data: Identifiable {
- public struct TextLinePosition {
- init(data: Data, range: NSRange, yPos: CGFloat, height: CGFloat, index: Int) {
- self.data = data
- self.range = range
- self.yPos = yPos
- self.height = height
- self.index = index
- }
-
- init(position: NodePosition) {
- self.data = position.node.data
- self.range = NSRange(location: position.textPos, length: position.node.length)
- self.yPos = position.yPos
- self.height = position.node.height
- self.index = position.index
- }
-
- /// The data stored at the position
- public let data: Data
- /// The range represented by the data
- public let range: NSRange
- /// The y position of the data, on a top down y axis
- public let yPos: CGFloat
- /// The height of the stored data
- public let height: CGFloat
- /// The index of the position.
- public let index: Int
- }
-
- struct NodePosition {
- /// The node storing information and the data stored at the position.
- let node: Node
- /// The y position of the data, on a top down y axis
- let yPos: CGFloat
- /// The location of the node in the document
- let textPos: Int
- /// The index of the node in the document.
- let index: Int
- }
-
- struct NodeSubtreeMetadata {
- let height: CGFloat
- let offset: Int
- let count: Int
-
- static var zero: NodeSubtreeMetadata {
- NodeSubtreeMetadata(height: 0, offset: 0, count: 0)
- }
-
- static func + (lhs: NodeSubtreeMetadata, rhs: NodeSubtreeMetadata) -> NodeSubtreeMetadata {
- NodeSubtreeMetadata(
- height: lhs.height + rhs.height,
- offset: lhs.offset + rhs.offset,
- count: lhs.count + rhs.count
- )
- }
- }
-
- public struct BuildItem {
- public let data: Data
- public let length: Int
- public let height: CGFloat?
- }
-}
diff --git a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift b/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift
deleted file mode 100644
index f944fae30..000000000
--- a/Sources/CodeEditTextView/TextLineStorage/TextLineStorage.swift
+++ /dev/null
@@ -1,642 +0,0 @@
-//
-// TextLayoutLineStorage.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/25/23.
-//
-
-import Foundation
-
-// Disabling the file length here due to the fact that we want to keep certain methods private even to this package.
-// Specifically, all rotation methods, fixup methods, and internal search methods must be kept private.
-// swiftlint:disable file_length
-
-// There is some ugly `Unmanaged` code in this class. This is due to the fact that Swift often has a hard time
-// optimizing retain/release calls for object trees. For instance, the `metaFixup` method has a lot of retain/release
-// calls to each node/parent as we do a little walk up the tree.
-//
-// Using Unmanaged references resulted in a -15% decrease (0.667s -> 0.563s) in the
-// TextLayoutLineStorageTests.test_insertPerformance benchmark when first changed to use Unmanaged.
-//
-// See:
-// - https://github.com/apple/swift/blob/main/docs/OptimizationTips.rst#unsafe-code
-// - https://forums.swift.org/t/improving-linked-list-performance-swift-release-and-swift-retain-overhead/17205
-
-/// Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document.
-public final class TextLineStorage {
- private enum MetaFixupAction {
- case inserted
- case deleted
- case none
- }
-
- var root: Node?
-
- /// The number of characters in the storage object.
- private(set) public var length: Int = 0
- /// The number of lines in the storage object
- private(set) public var count: Int = 0
-
- public var isEmpty: Bool { count == 0 }
-
- public var height: CGFloat = 0
-
- public var first: TextLinePosition? {
- guard count > 0, let position = search(forIndex: 0) else { return nil }
- return TextLinePosition(position: position)
- }
-
- public var last: TextLinePosition? {
- guard count > 0, let position = search(forIndex: count - 1) else { return nil }
- return TextLinePosition(position: position)
- }
-
- private var lastNode: NodePosition? {
- guard count > 0, let position = search(forIndex: count - 1) else { return nil }
- return position
- }
-
- public init() { }
-
- init(root: Node, count: Int, length: Int, height: CGFloat) {
- self.root = root
- self.count = count
- self.length = length
- self.height = height
- }
-
- // MARK: - Public Methods
-
- /// Inserts a new line for the given range.
- /// - Complexity: `O(log n)` where `n` is the number of lines in the storage object.
- /// - Parameters:
- /// - line: The text line to insert
- /// - index: The offset to insert the line at.
- /// - length: The length of the new line.
- /// - height: The height of the new line.
- public func insert(line: Data, atOffset index: Int, length: Int, height: CGFloat) {
- assert(index >= 0 && index <= self.length, "Invalid index, expected between 0 and \(self.length). Got \(index)")
- defer {
- self.count += 1
- self.length += length
- self.height += height
- }
-
- let insertedNode = Node(length: length, data: line, height: height)
- guard root != nil else {
- root = insertedNode
- return
- }
- insertedNode.color = .red
-
- var currentNode: Unmanaged> = Unmanaged>.passUnretained(root!)
- var shouldContinue = true
- var currentOffset: Int = root?.leftSubtreeOffset ?? 0
- while shouldContinue {
- let node = currentNode.takeUnretainedValue()
- if currentOffset >= index {
- if node.left != nil {
- currentNode = Unmanaged>.passUnretained(node.left!)
- currentOffset = (currentOffset - node.leftSubtreeOffset) + (node.left?.leftSubtreeOffset ?? 0)
- } else {
- node.left = insertedNode
- insertedNode.parent = node
- shouldContinue = false
- }
- } else {
- if node.right != nil {
- currentNode = Unmanaged>.passUnretained(node.right!)
- currentOffset += node.length + (node.right?.leftSubtreeOffset ?? 0)
- } else {
- node.right = insertedNode
- insertedNode.parent = node
- shouldContinue = false
- }
- }
- }
-
- metaFixup(
- startingAt: insertedNode,
- delta: insertedNode.length,
- deltaHeight: insertedNode.height,
- nodeAction: .inserted
- )
- insertFixup(node: insertedNode)
- }
-
- /// Fetches a line for the given offset.
- ///
- /// - Complexity: `O(log n)`
- /// - Parameter offset: The offset to fetch for.
- /// - Returns:A ``TextLineStorage/TextLinePosition`` struct with relevant position and line information.
- public func getLine(atOffset offset: Int) -> TextLinePosition? {
- guard let nodePosition = search(for: offset) else { return nil }
- return TextLinePosition(position: nodePosition)
- }
-
- /// Fetches a line for the given index.
- ///
- /// - Complexity: `O(log n)`
- /// - Parameter index: The index to fetch for.
- /// - Returns: A ``TextLineStorage/TextLinePosition`` struct with relevant position and line information.
- public func getLine(atIndex index: Int) -> TextLinePosition? {
- guard let nodePosition = search(forIndex: index) else { return nil }
- return TextLinePosition(position: nodePosition)
- }
-
- /// Fetches a line for the given `y` value.
- ///
- /// - Complexity: `O(log n)`
- /// - Parameter position: The position to fetch for.
- /// - Returns: A ``TextLineStorage/TextLinePosition`` struct with relevant position and line information.
- public func getLine(atPosition posY: CGFloat) -> TextLinePosition? {
- guard posY < height else {
- return last
- }
-
- var currentNode = root
- var currentOffset: Int = root?.leftSubtreeOffset ?? 0
- var currentYPosition: CGFloat = root?.leftSubtreeHeight ?? 0
- var currentIndex: Int = root?.leftSubtreeCount ?? 0
- while let node = currentNode {
- // If index is in the range [currentOffset..= currentYPosition && posY < currentYPosition + node.height {
- return TextLinePosition(
- data: node.data,
- range: NSRange(location: currentOffset, length: node.length),
- yPos: currentYPosition,
- height: node.height,
- index: currentIndex
- )
- } else if currentYPosition > posY {
- currentNode = node.left
- currentOffset = (currentOffset - node.leftSubtreeOffset) + (node.left?.leftSubtreeOffset ?? 0)
- currentYPosition = (currentYPosition - node.leftSubtreeHeight) + (node.left?.leftSubtreeHeight ?? 0)
- currentIndex = (currentIndex - node.leftSubtreeCount) + (node.left?.leftSubtreeCount ?? 0)
- } else if node.leftSubtreeHeight < posY {
- currentNode = node.right
- currentOffset += node.length + (node.right?.leftSubtreeOffset ?? 0)
- currentYPosition += node.height + (node.right?.leftSubtreeHeight ?? 0)
- currentIndex += 1 + (node.right?.leftSubtreeCount ?? 0)
- } else {
- currentNode = nil
- }
- }
-
- return nil
- }
-
- /// Applies a length change at the given index.
- ///
- /// If a character was deleted, delta should be negative.
- /// The `index` parameter should represent where the edit began.
- ///
- /// Lines will be deleted if the delta is both negative and encompasses the entire line.
- ///
- /// If the delta goes beyond the line's range, an error will be thrown.
- /// - Complexity `O(m log n)` where `m` is the number of lines that need to be deleted as a result of this update.
- /// and `n` is the number of lines stored in the tree.
- /// - Parameters:
- /// - offset: The offset where the edit began
- /// - delta: The change in length of the document. Negative for deletes, positive for insertions.
- /// - deltaHeight: The change in height of the document.
- public func update(atOffset offset: Int, delta: Int, deltaHeight: CGFloat) {
- assert(
- offset >= 0 && offset <= self.length,
- "Invalid index, expected between 0 and \(self.length). Got \(offset)"
- )
- assert(delta != 0 || deltaHeight != 0, "Delta must be non-0")
- let position: NodePosition?
- if offset == self.length { // Updates at the end of the document are valid
- position = lastNode
- } else {
- position = search(for: offset)
- }
- guard let position else {
- assertionFailure("No line found at index \(offset)")
- return
- }
- if delta < 0 {
- assert(
- offset - position.textPos > delta,
- "Delta too large. Deleting \(-delta) from line at position \(offset) extends beyond the line's range."
- )
- }
- length += delta
- height += deltaHeight
- position.node.length += delta
- position.node.height += deltaHeight
- metaFixup(startingAt: position.node, delta: delta, deltaHeight: deltaHeight)
- }
-
- /// Deletes the line containing the given index.
- ///
- /// Will exit silently if a line could not be found for the given index, and throw an assertion error if the index
- /// is out of bounds.
- /// - Parameter index: The index to delete a line at.
- public func delete(lineAt index: Int) {
- assert(index >= 0 && index <= self.length, "Invalid index, expected between 0 and \(self.length). Got \(index)")
- guard count > 1 else {
- removeAll()
- return
- }
- guard let node = search(for: index)?.node else {
- assertionFailure("Failed to find node for index: \(index)")
- return
- }
- count -= 1
- length -= node.length
- height -= node.height
- deleteNode(node)
- }
-
- public func removeAll() {
- root = nil
- count = 0
- length = 0
- height = 0
- }
-
- /// Efficiently builds the tree from the given array of lines.
- /// - Note: Calls ``TextLineStorage/removeAll()`` before building.
- /// - Parameter lines: The lines to use to build the tree.
- public func build(from lines: borrowing [BuildItem], estimatedLineHeight: CGFloat) {
- removeAll()
- root = build(lines: lines, estimatedLineHeight: estimatedLineHeight, left: 0, right: lines.count, parent: nil).0
- count = lines.count
- }
-
- /// Recursively builds a subtree given an array of sorted lines, and a left and right indexes.
- /// - Parameters:
- /// - lines: The lines to use to build the subtree.
- /// - estimatedLineHeight: An estimated line height to add to the allocated nodes.
- /// - left: The left index to use.
- /// - right: The right index to use.
- /// - parent: The parent of the subtree, `nil` if this is the root.
- /// - Returns: A node, if available, along with it's subtree's height and offset.
- private func build(
- lines: borrowing [BuildItem],
- estimatedLineHeight: CGFloat,
- left: Int,
- right: Int,
- parent: Node?
- ) -> (Node?, Int?, CGFloat?, Int) { // swiftlint:disable:this large_tuple
- guard left < right else { return (nil, nil, nil, 0) }
- let mid = left + (right - left)/2
- let node = Node(
- length: lines[mid].length,
- data: lines[mid].data,
- leftSubtreeOffset: 0,
- leftSubtreeHeight: 0,
- leftSubtreeCount: 0,
- height: lines[mid].height ?? estimatedLineHeight,
- color: .black
- )
- node.parent = parent
-
- let (left, leftOffset, leftHeight, leftCount) = build(
- lines: lines,
- estimatedLineHeight: estimatedLineHeight,
- left: left,
- right: mid,
- parent: node
- )
- let (right, rightOffset, rightHeight, rightCount) = build(
- lines: lines,
- estimatedLineHeight: estimatedLineHeight,
- left: mid + 1,
- right: right,
- parent: node
- )
- node.left = left
- node.right = right
-
- if node.left == nil && node.right == nil {
- node.color = .red
- }
-
- length += node.length
- height += node.height
- node.leftSubtreeOffset = leftOffset ?? 0
- node.leftSubtreeHeight = leftHeight ?? 0
- node.leftSubtreeCount = leftCount
-
- return (
- node,
- node.length + (leftOffset ?? 0) + (rightOffset ?? 0),
- node.height + (leftHeight ?? 0) + (rightHeight ?? 0),
- 1 + leftCount + rightCount
- )
- }
-}
-
-private extension TextLineStorage {
- // MARK: - Search
-
- /// Searches for the given offset.
- /// - Parameter offset: The offset to look for in the document.
- /// - Returns: A tuple containing a node if it was found, and the offset of the node in the document.
- func search(for offset: Int) -> NodePosition? {
- var currentNode = root
- var currentOffset: Int = root?.leftSubtreeOffset ?? 0
- var currentYPosition: CGFloat = root?.leftSubtreeHeight ?? 0
- var currentIndex: Int = root?.leftSubtreeCount ?? 0
- while let node = currentNode {
- // If index is in the range [currentOffset..= currentOffset && offset < currentOffset + node.length) {
- return NodePosition(node: node, yPos: currentYPosition, textPos: currentOffset, index: currentIndex)
- } else if currentOffset > offset {
- currentNode = node.left
- currentOffset = (currentOffset - node.leftSubtreeOffset) + (node.left?.leftSubtreeOffset ?? 0)
- currentYPosition = (currentYPosition - node.leftSubtreeHeight) + (node.left?.leftSubtreeHeight ?? 0)
- currentIndex = (currentIndex - node.leftSubtreeCount) + (node.left?.leftSubtreeCount ?? 0)
- } else if node.leftSubtreeOffset < offset {
- currentNode = node.right
- currentOffset += node.length + (node.right?.leftSubtreeOffset ?? 0)
- currentYPosition += node.height + (node.right?.leftSubtreeHeight ?? 0)
- currentIndex += 1 + (node.right?.leftSubtreeCount ?? 0)
- } else {
- currentNode = nil
- }
- }
- return nil
- }
-
- /// Searches for the given index.
- /// - Parameter index: The index to look for in the document.
- /// - Returns: A tuple containing a node if it was found, and the offset of the node in the document.
- func search(forIndex index: Int) -> NodePosition? {
- var currentNode = root
- var currentOffset: Int = root?.leftSubtreeOffset ?? 0
- var currentYPosition: CGFloat = root?.leftSubtreeHeight ?? 0
- var currentIndex: Int = root?.leftSubtreeCount ?? 0
- while let node = currentNode {
- if index == currentIndex {
- return NodePosition(node: node, yPos: currentYPosition, textPos: currentOffset, index: currentIndex)
- } else if currentIndex > index {
- currentNode = node.left
- currentOffset = (currentOffset - node.leftSubtreeOffset) + (node.left?.leftSubtreeOffset ?? 0)
- currentYPosition = (currentYPosition - node.leftSubtreeHeight) + (node.left?.leftSubtreeHeight ?? 0)
- currentIndex = (currentIndex - node.leftSubtreeCount) + (node.left?.leftSubtreeCount ?? 0)
- } else {
- currentNode = node.right
- currentOffset += node.length + (node.right?.leftSubtreeOffset ?? 0)
- currentYPosition += node.height + (node.right?.leftSubtreeHeight ?? 0)
- currentIndex += 1 + (node.right?.leftSubtreeCount ?? 0)
- }
- }
- return nil
- }
-
- // MARK: - Delete
-
- /// A basic RB-Tree node removal with specialization for node metadata.
- /// - Parameter nodeZ: The node to remove.
- func deleteNode(_ nodeZ: Node) {
- metaFixup(startingAt: nodeZ, delta: -nodeZ.length, deltaHeight: -nodeZ.height, nodeAction: .deleted)
-
- var nodeY = nodeZ
- var nodeX: Node?
- var originalColor = nodeY.color
-
- if nodeZ.left == nil || nodeZ.right == nil {
- nodeX = nodeZ.right ?? nodeZ.left
- transplant(nodeZ, with: nodeX)
- } else {
- nodeY = nodeZ.right!.minimum()
-
- // Delete nodeY from it's original place in the tree.
- metaFixup(startingAt: nodeY, delta: -nodeY.length, deltaHeight: -nodeY.height, nodeAction: .deleted)
-
- originalColor = nodeY.color
- nodeX = nodeY.right
- if nodeY.parent === nodeZ {
- nodeX?.parent = nodeY
- } else {
- transplant(nodeY, with: nodeY.right)
-
- nodeY.right?.leftSubtreeCount += nodeY.leftSubtreeCount
- nodeY.right?.leftSubtreeHeight += nodeY.leftSubtreeHeight
- nodeY.right?.leftSubtreeOffset += nodeY.leftSubtreeOffset
-
- nodeY.right = nodeZ.right
- nodeY.right?.parent = nodeY
- }
- transplant(nodeZ, with: nodeY)
- nodeY.left = nodeZ.left
- nodeY.left?.parent = nodeY
- nodeY.color = nodeZ.color
- nodeY.leftSubtreeCount = nodeZ.leftSubtreeCount
- nodeY.leftSubtreeHeight = nodeZ.leftSubtreeHeight
- nodeY.leftSubtreeOffset = nodeZ.leftSubtreeOffset
-
- // We've inserted nodeY again into a new spot. Update tree meta
- metaFixup(startingAt: nodeY, delta: nodeY.length, deltaHeight: nodeY.height, nodeAction: .inserted)
- }
-
- if originalColor == .black, let nodeX {
- deleteFixup(node: nodeX)
- }
- }
-
- // MARK: - Fixup
-
- func insertFixup(node: Node) {
- var nextNode: Node? = node
- while var nodeX = nextNode, nodeX !== root, let nodeXParent = nodeX.parent, nodeXParent.color == .red {
- let nodeY = nodeXParent.sibling()
- if isLeftChild(nodeXParent) {
- if nodeY?.color == .red {
- nodeXParent.color = .black
- nodeY?.color = .black
- nodeX.parent?.parent?.color = .red
- nextNode = nodeX.parent?.parent
- } else {
- if isRightChild(nodeX) {
- nodeX = nodeXParent
- leftRotate(node: nodeX)
- }
-
- nodeX.parent?.color = .black
- nodeX.parent?.parent?.color = .red
- if let grandparent = nodeX.parent?.parent {
- rightRotate(node: grandparent)
- }
- }
- } else {
- if nodeY?.color == .red {
- nodeXParent.color = .black
- nodeY?.color = .black
- nodeX.parent?.parent?.color = .red
- nextNode = nodeX.parent?.parent
- } else {
- if isLeftChild(nodeX) {
- nodeX = nodeXParent
- rightRotate(node: nodeX)
- }
-
- nodeX.parent?.color = .black
- nodeX.parent?.parent?.color = .red
- if let grandparent = nodeX.parent?.parent {
- leftRotate(node: grandparent)
- }
- }
- }
- }
-
- root?.color = .black
- }
-
- func deleteFixup(node: Node) {
- var nodeX: Node? = node
- while let node = nodeX, node !== root, node.color == .black {
- var sibling = node.sibling()
- if sibling?.color == .red {
- sibling?.color = .black
- node.parent?.color = .red
- if isLeftChild(node) {
- leftRotate(node: node)
- } else {
- rightRotate(node: node)
- }
- sibling = node.sibling()
- }
-
- if sibling?.left?.color == .black && sibling?.right?.color == .black {
- sibling?.color = .red
- nodeX = node.parent
- } else {
- if isLeftChild(node) {
- if sibling?.right?.color == .black {
- sibling?.left?.color = .black
- sibling?.color = .red
- if let sibling {
- rightRotate(node: sibling)
- }
- sibling = node.parent?.right
- }
- sibling?.color = node.parent?.color ?? .black
- node.parent?.color = .black
- sibling?.right?.color = .black
- leftRotate(node: node)
- nodeX = root
- } else {
- if sibling?.left?.color == .black {
- sibling?.left?.color = .black
- sibling?.color = .red
- if let sibling {
- leftRotate(node: sibling)
- }
- sibling = node.parent?.left
- }
- sibling?.color = node.parent?.color ?? .black
- node.parent?.color = .black
- sibling?.left?.color = .black
- rightRotate(node: node)
- nodeX = root
- }
- }
- }
- nodeX?.color = .black
- }
-
- /// Walk up the tree, updating any `leftSubtree` metadata.
- private func metaFixup(
- startingAt node: borrowing Node,
- delta: Int,
- deltaHeight: CGFloat,
- nodeAction: MetaFixupAction = .none
- ) {
- guard node.parent != nil, root != nil else { return }
- let rootRef = Unmanaged>.passUnretained(root!)
- var ref = Unmanaged>.passUnretained(node)
- while let node = ref._withUnsafeGuaranteedRef({ $0.parent }),
- ref.takeUnretainedValue() !== rootRef.takeUnretainedValue() {
- if node.left === ref.takeUnretainedValue() {
- node.leftSubtreeOffset += delta
- node.leftSubtreeHeight += deltaHeight
- switch nodeAction {
- case .inserted:
- node.leftSubtreeCount += 1
- case .deleted:
- node.leftSubtreeCount -= 1
- case .none:
- break
- }
- }
- if node.parent != nil {
- ref = Unmanaged.passUnretained(node)
- } else {
- return
- }
- }
- }
-}
-
-// MARK: - Rotations
-
-private extension TextLineStorage {
- func rightRotate(node: Node) {
- rotate(node: node, left: false)
- }
-
- func leftRotate(node: Node) {
- rotate(node: node, left: true)
- }
-
- func rotate(node: Node, left: Bool) {
- var nodeY: Node?
-
- if left {
- nodeY = node.right
- guard nodeY != nil else { return }
- nodeY?.leftSubtreeOffset += node.leftSubtreeOffset + node.length
- nodeY?.leftSubtreeHeight += node.leftSubtreeHeight + node.height
- nodeY?.leftSubtreeCount += node.leftSubtreeCount + 1
- node.right = nodeY?.left
- node.right?.parent = node
- } else {
- nodeY = node.left
- guard nodeY != nil else { return }
- node.left = nodeY?.right
- node.left?.parent = node
- }
-
- nodeY?.parent = node.parent
- if node.parent == nil {
- if let node = nodeY {
- root = node
- }
- } else if isLeftChild(node) {
- node.parent?.left = nodeY
- } else if isRightChild(node) {
- node.parent?.right = nodeY
- }
-
- if left {
- nodeY?.left = node
- } else {
- nodeY?.right = node
- let metadata = getSubtreeMeta(startingAt: node.left)
- node.leftSubtreeOffset = metadata.offset
- node.leftSubtreeHeight = metadata.height
- node.leftSubtreeCount = metadata.count
- }
- node.parent = nodeY
- }
-
- /// Finds the correct subtree metadata starting at a node.
- /// - Complexity: `O(log n)` where `n` is the number of nodes in the tree.
- /// - Parameter node: The node to start finding metadata for.
- /// - Returns: The metadata representing the entire subtree including `node`.
- func getSubtreeMeta(startingAt node: Node?) -> NodeSubtreeMetadata {
- guard let node else { return .zero }
- return NodeSubtreeMetadata(
- height: node.height + node.leftSubtreeHeight,
- offset: node.length + node.leftSubtreeOffset,
- count: 1 + node.leftSubtreeCount
- ) + getSubtreeMeta(startingAt: node.right)
- }
-}
-
-// swiftlint:enable file_length
diff --git a/Sources/CodeEditTextView/TextSelectionManager/Destination.swift b/Sources/CodeEditTextView/TextSelectionManager/Destination.swift
deleted file mode 100644
index c897448c5..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/Destination.swift
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-// Destination.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/20/24.
-//
-
-public extension TextSelectionManager {
- enum Destination {
- case character
- case word
- case line
- case visualLine
- case page
- case document
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/Direction.swift b/Sources/CodeEditTextView/TextSelectionManager/Direction.swift
deleted file mode 100644
index 39cd2f86b..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/Direction.swift
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// Direction.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/20/24.
-//
-
-public extension TextSelectionManager {
- enum Direction {
- case up
- case down
- case forward
- case backward
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift
deleted file mode 100644
index 73e40325e..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Horizontal.swift
+++ /dev/null
@@ -1,234 +0,0 @@
-//
-// SelectionManipulation+Horizontal.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 5/11/24.
-//
-
-import Foundation
-
-package extension TextSelectionManager {
- /// Extends a selection from the given offset determining the length by the destination.
- ///
- /// Returns a new range that needs to be merged with an existing selection range using `NSRange.formUnion`
- ///
- /// - Parameters:
- /// - offset: The location to start extending the selection from.
- /// - destination: Determines how far the selection is extended.
- /// - delta: The direction the selection should be extended. `1` for forwards, `-1` for backwards.
- /// - decomposeCharacters: Set to `true` to treat grapheme clusters as individual characters.
- /// - Returns: A new range to merge with a selection.
- func extendSelectionHorizontal(
- from offset: Int,
- destination: Destination,
- delta: Int,
- decomposeCharacters: Bool = false
- ) -> NSRange {
- guard let string = textStorage?.string as NSString? else { return NSRange(location: offset, length: 0) }
-
- switch destination {
- case .character:
- return extendSelectionCharacter(
- string: string,
- from: offset,
- delta: delta,
- decomposeCharacters: decomposeCharacters
- )
- case .word:
- return extendSelectionWord(string: string, from: offset, delta: delta)
- case .line:
- return extendSelectionLine(string: string, from: offset, delta: delta)
- case .visualLine:
- return extendSelectionVisualLine(string: string, from: offset, delta: delta)
- case .document:
- if delta > 0 {
- return NSRange(start: offset, end: string.length)
- } else {
- return NSRange(location: 0, length: offset)
- }
- case .page: // Not a valid destination horizontally.
- return NSRange(location: offset, length: 0)
- }
- }
-
- // MARK: - Horizontal Methods
-
- /// Extends the selection by a single character.
- ///
- /// The range returned from this method can be longer than `1` character if the character in the extended direction
- /// is a member of a grapheme cluster.
- ///
- /// - Parameters:
- /// - string: The reference string to use.
- /// - offset: The location to start extending the selection from.
- /// - delta: The direction the selection should be extended. `1` for forwards, `-1` for backwards.
- /// - decomposeCharacters: Set to `true` to treat grapheme clusters as individual characters.
- /// - Returns: The range of the extended selection.
- private func extendSelectionCharacter(
- string: NSString,
- from offset: Int,
- delta: Int,
- decomposeCharacters: Bool
- ) -> NSRange {
- let range = delta > 0 ? NSRange(location: offset, length: 1) : NSRange(location: offset - 1, length: 1)
- if delta > 0 && offset == string.length {
- return NSRange(location: offset, length: 0)
- } else if delta < 0 && offset == 0 {
- return NSRange(location: 0, length: 0)
- }
-
- return decomposeCharacters ? range : string.rangeOfComposedCharacterSequences(for: range)
- }
-
- /// Extends the selection by one "word".
- ///
- /// Words in this case begin after encountering an alphanumeric character, and extend until either a whitespace
- /// or punctuation character.
- ///
- /// - Parameters:
- /// - string: The reference string to use.
- /// - offset: The location to start extending the selection from.
- /// - delta: The direction the selection should be extended. `1` for forwards, `-1` for backwards.
- /// - Returns: The range of the extended selection.
- private func extendSelectionWord(string: NSString, from offset: Int, delta: Int) -> NSRange {
- var enumerationOptions: NSString.EnumerationOptions = .byCaretPositions
- if delta < 0 {
- enumerationOptions.formUnion(.reverse)
- }
- var rangeToDelete = NSRange(location: offset, length: 0)
-
- var hasFoundValidWordChar = false
- string.enumerateSubstrings(
- in: NSRange(location: delta > 0 ? offset : 0, length: delta > 0 ? string.length - offset : offset),
- options: enumerationOptions
- ) { substring, _, _, stop in
- guard let substring = substring else {
- stop.pointee = true
- return
- }
-
- if hasFoundValidWordChar && CharacterSet.punctuationCharacters
- .union(.whitespacesAndNewlines)
- .subtracting(CharacterSet.codeIdentifierCharacters)
- .isSuperset(of: CharacterSet(charactersIn: substring)) {
- stop.pointee = true
- return
- } else if CharacterSet.codeIdentifierCharacters.isSuperset(of: CharacterSet(charactersIn: substring)) {
- hasFoundValidWordChar = true
- }
- rangeToDelete.length += substring.count
-
- if delta < 0 {
- rangeToDelete.location -= substring.count
- }
- }
-
- return rangeToDelete
- }
-
- /// Extends the selection by one visual line in the direction specified (eg one line fragment).
- ///
- /// If extending backwards, this method will return the beginning of the leading non-whitespace characters
- /// in the line. If the offset is located in the leading whitespace it will return the real line beginning.
- /// For Example
- /// ```
- /// ^ = offset, ^--^ = returned range
- /// Line:
- /// Loren Ipsum
- /// ^
- /// Extend 1st Call:
- /// Loren Ipsum
- /// ^-----^
- /// Extend 2nd Call:
- /// Loren Ipsum
- /// ^----^
- /// ```
- ///
- /// - Parameters:
- /// - string: The reference string to use.
- /// - offset: The location to start extending the selection from.
- /// - delta: The direction the selection should be extended. `1` for forwards, `-1` for backwards.
- /// - Returns: The range of the extended selection.
- private func extendSelectionVisualLine(string: NSString, from offset: Int, delta: Int) -> NSRange {
- guard let line = layoutManager?.textLineForOffset(offset),
- let lineFragment = line.data.typesetter.lineFragments.getLine(atOffset: offset - line.range.location)
- else {
- return NSRange(location: offset, length: 0)
- }
- let lineBound = delta > 0
- ? line.range.location + min(
- lineFragment.range.max,
- line.range.max - line.range.location - (layoutManager?.detectedLineEnding.length ?? 1)
- )
- : line.range.location + lineFragment.range.location
-
- return _extendSelectionLine(string: string, lineBound: lineBound, offset: offset, delta: delta)
- }
-
- /// Extends the selection by one real line in the direction specified.
- ///
- /// If extending backwards, this method will return the beginning of the leading non-whitespace characters
- /// in the line. If the offset is located in the leading whitespace it will return the real line beginning.
- ///
- /// - Parameters:
- /// - string: The reference string to use.
- /// - offset: The location to start extending the selection from.
- /// - delta: The direction the selection should be extended. `1` for forwards, `-1` for backwards.
- /// - Returns: The range of the extended selection.
- private func extendSelectionLine(string: NSString, from offset: Int, delta: Int) -> NSRange {
- guard let line = layoutManager?.textLineForOffset(offset),
- let lineText = textStorage?.substring(from: line.range) else {
- return NSRange(location: offset, length: 0)
- }
- let lineBound = delta > 0
- ? line.range.max - (LineEnding(line: lineText)?.length ?? 0)
- : line.range.location
-
- return _extendSelectionLine(string: string, lineBound: lineBound, offset: offset, delta: delta)
- }
-
- /// Common code for `extendSelectionLine` and `extendSelectionVisualLine`
- private func _extendSelectionLine(
- string: NSString,
- lineBound: Int,
- offset: Int,
- delta: Int
- ) -> NSRange {
- var foundRange = NSRange(
- start: min(lineBound, offset),
- end: max(lineBound, offset)
- )
- let originalFoundRange = foundRange
-
- // Only do this if we're going backwards.
- if delta < 0 {
- foundRange = findBeginningOfLineText(string: string, initialRange: foundRange)
- }
-
- return foundRange.length == 0 ? originalFoundRange : foundRange
- }
-
- /// Finds the beginning of text in a line not including whitespace.
- /// - Parameters:
- /// - string: The string to look in.
- /// - initialRange: The range to begin looking from.
- /// - Returns: A new range to replace the given range for the line.
- private func findBeginningOfLineText(string: NSString, initialRange: NSRange) -> NSRange {
- var foundRange = initialRange
- string.enumerateSubstrings(in: foundRange, options: .byCaretPositions) { substring, _, _, stop in
- if let substring = substring as String? {
- if CharacterSet
- .whitespacesAndNewlines.subtracting(.newlines)
- .isSuperset(of: CharacterSet(charactersIn: substring)) {
- foundRange.location += 1
- foundRange.length -= 1
- } else {
- stop.pointee = true
- }
- } else {
- stop.pointee = true
- }
- }
- return foundRange
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Vertical.swift b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Vertical.swift
deleted file mode 100644
index 83d7a8abf..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/SelectionManipulation+Vertical.swift
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-// SelectionManipulation+Vertical.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 5/11/24.
-//
-
-import Foundation
-
-package extension TextSelectionManager {
- // MARK: - Vertical Methods
-
- /// Extends a selection from the given offset vertically to the destination.
- /// - Parameters:
- /// - offset: The offset to extend from.
- /// - destination: The destination to extend to.
- /// - up: Set to true if extending up.
- /// - suggestedXPos: The suggested x position to stick to.
- /// - Returns: The range of the extended selection.
- func extendSelectionVertical(
- from offset: Int,
- destination: Destination,
- up: Bool,
- suggestedXPos: CGFloat?
- ) -> NSRange {
- // If moving up and on first line, jump to beginning of the line
- // If moving down and on last line, jump to end of document.
- if up && layoutManager?.lineStorage.first?.range.contains(offset) ?? false {
- return NSRange(location: 0, length: offset)
- } else if !up && layoutManager?.lineStorage.last?.range.contains(offset) ?? false {
- return NSRange(start: offset, end: (textStorage?.length ?? offset))
- }
-
- switch destination {
- case .character:
- return extendSelectionVerticalCharacter(from: offset, up: up, suggestedXPos: suggestedXPos)
- case .word, .line, .visualLine:
- return extendSelectionVerticalLine(from: offset, up: up)
- case .page:
- return extendSelectionPage(from: offset, delta: up ? 1 : -1, suggestedXPos: suggestedXPos)
- case .document:
- if up {
- return NSRange(location: 0, length: offset)
- } else {
- return NSRange(start: offset, end: (textStorage?.length ?? offset))
- }
- }
- }
-
- /// Extends the selection to the nearest character vertically.
- /// - Parameters:
- /// - offset: The offset to extend from.
- /// - up: Set to true if extending up.
- /// - suggestedXPos: The suggested x position to stick to.
- /// - Returns: The range of the extended selection.
- private func extendSelectionVerticalCharacter(
- from offset: Int,
- up: Bool,
- suggestedXPos: CGFloat?
- ) -> NSRange {
- guard let point = layoutManager?.rectForOffset(offset)?.origin,
- let newOffset = layoutManager?.textOffsetAtPoint(
- CGPoint(
- x: suggestedXPos ?? point.x,
- y: point.y - (layoutManager?.estimateLineHeight() ?? 2.0)/2 * (up ? 1 : -3)
- )
- ) else {
- return NSRange(location: offset, length: 0)
- }
-
- return NSRange(
- location: up ? newOffset : offset,
- length: up ? offset - newOffset : newOffset - offset
- )
- }
-
- /// Extends the selection to the nearest line vertically.
- ///
- /// If moving up and the offset is in the middle of the line, it first extends it to the beginning of the line.
- /// On the second call, it will extend it to the beginning of the previous line. When moving down, the
- /// same thing will happen in the opposite direction.
- ///
- /// - Parameters:
- /// - offset: The offset to extend from.
- /// - up: Set to true if extending up.
- /// - suggestedXPos: The suggested x position to stick to.
- /// - Returns: The range of the extended selection.
- private func extendSelectionVerticalLine(
- from offset: Int,
- up: Bool
- ) -> NSRange {
- // Important distinction here, when moving up/down on a line and in the middle of the line, we move to the
- // beginning/end of the *entire* line, not the line fragment.
- guard let line = layoutManager?.textLineForOffset(offset) else {
- return NSRange(location: offset, length: 0)
- }
- if up && line.range.location != offset {
- return NSRange(location: line.range.location, length: offset - line.index)
- } else if !up && line.range.max - (layoutManager?.detectedLineEnding.length ?? 0) != offset {
- return NSRange(
- location: offset,
- length: line.range.max - offset - (layoutManager?.detectedLineEnding.length ?? 0)
- )
- } else {
- let nextQueryIndex = up ? max(line.range.location - 1, 0) : min(line.range.max, (textStorage?.length ?? 0))
- guard let nextLine = layoutManager?.textLineForOffset(nextQueryIndex) else {
- return NSRange(location: offset, length: 0)
- }
- return NSRange(
- start: up ? nextLine.range.location : offset,
- end: up ? offset : nextLine.range.max - (layoutManager?.detectedLineEnding.length ?? 0)
- )
- }
- }
-
- /// Extends a selection one "page" long.
- /// - Parameters:
- /// - offset: The location to start extending the selection from.
- /// - delta: The direction the selection should be extended. `1` for forwards, `-1` for backwards.
- /// - Returns: The range of the extended selection.
- private func extendSelectionPage(from offset: Int, delta: Int, suggestedXPos: CGFloat?) -> NSRange {
- guard let textView = textView,
- let layoutManager,
- let currentYPos = layoutManager.rectForOffset(offset)?.origin.y else {
- return NSRange(location: offset, length: 0)
- }
-
- let pageHeight = textView.visibleRect.height
-
- // Grab the line where the next selection should be. Then use the suggestedXPos to find where in the line the
- // selection should be extended to.
- layoutManager.layoutLines(
- in: NSRect(x: 0, y: currentYPos, width: layoutManager.maxLineWidth, height: pageHeight)
- )
- guard let nextPageOffset = layoutManager.textOffsetAtPoint(CGPoint(
- x: suggestedXPos ?? 0,
- y: min(textView.frame.height, max(0, currentYPos + (delta > 0 ? -pageHeight : pageHeight)))
- )) else {
- return NSRange(location: offset, length: 0)
- }
-
- if delta > 0 {
- return NSRange(start: nextPageOffset, end: offset)
- } else {
- return NSRange(location: offset, length: nextPageOffset - offset)
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/TextSelectionManager+SelectionManipulation.swift b/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/TextSelectionManager+SelectionManipulation.swift
deleted file mode 100644
index eb7e8a349..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/SelectionManipulation/TextSelectionManager+SelectionManipulation.swift
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// TextSelectionManager+SelectionManipulation.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/26/23.
-//
-
-import AppKit
-
-public extension TextSelectionManager {
- // MARK: - Range Of Selection
-
- /// Creates a range for a new selection given a starting point, direction, and destination.
- /// - Parameters:
- /// - offset: The location to start the selection from.
- /// - direction: The direction the selection should be created in.
- /// - destination: Determines how far the selection is.
- /// - decomposeCharacters: Set to `true` to treat grapheme clusters as individual characters.
- /// - suggestedXPos: The suggested x position to stick to.
- /// - Returns: A range of a new selection based on the direction and destination.
- func rangeOfSelection(
- from offset: Int,
- direction: Direction,
- destination: Destination,
- decomposeCharacters: Bool = false,
- suggestedXPos: CGFloat? = nil
- ) -> NSRange {
- var range: NSRange
- switch direction {
- case .backward:
- guard offset > 0 else { return NSRange(location: offset, length: 0) } // Can't go backwards beyond 0
- range = extendSelectionHorizontal(
- from: offset,
- destination: destination,
- delta: -1,
- decomposeCharacters: decomposeCharacters
- )
- case .forward:
- range = extendSelectionHorizontal(
- from: offset,
- destination: destination,
- delta: 1,
- decomposeCharacters: decomposeCharacters
- )
- case .up:
- range = extendSelectionVertical(
- from: offset,
- destination: destination,
- up: true,
- suggestedXPos: suggestedXPos
- )
- case .down:
- range = extendSelectionVertical(
- from: offset,
- destination: destination,
- up: false,
- suggestedXPos: suggestedXPos
- )
- }
-
- // Extend ranges to include attachments.
- if let attachments = layoutManager?.attachments.getAttachmentsOverlapping(range) {
- attachments.forEach { textAttachment in
- range.formUnion(textAttachment.range)
- }
- }
-
- return range
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelection.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelection.swift
deleted file mode 100644
index eef33ae75..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/TextSelection.swift
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// TextSelection.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/20/24.
-//
-
-import Foundation
-import AppKit
-
-public extension TextSelectionManager {
- class TextSelection: Hashable, Equatable {
- public var range: NSRange
- weak var view: NSView?
- var boundingRect: CGRect = .zero
- var suggestedXPos: CGFloat?
- /// The position this selection should 'rotate' around when modifying selections.
- var pivot: Int?
-
- init(range: NSRange, view: CursorView? = nil) {
- self.range = range
- self.view = view
- }
-
- var isCursor: Bool {
- range.length == 0
- }
-
- public func hash(into hasher: inout Hasher) {
- hasher.combine(range)
- }
-
- public static func == (lhs: TextSelection, rhs: TextSelection) -> Bool {
- lhs.range == rhs.range
- }
- }
-}
-
-private extension TextSelectionManager.TextSelection {
- func didInsertText(length: Int, retainLength: Bool = false) {
- if !retainLength {
- range.length = 0
- }
- range.location += length
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift
deleted file mode 100644
index b24dab062..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Draw.swift
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// TextSelectionManager+Draw.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 1/12/25.
-//
-
-import AppKit
-
-extension TextSelectionManager {
- /// Draws line backgrounds and selection rects for each selection in the given rect.
- /// - Parameter rect: The rect to draw in.
- public func drawSelections(in rect: NSRect) {
- guard let context = NSGraphicsContext.current?.cgContext else { return }
- context.saveGState()
- var highlightedLines: Set = []
- // For each selection in the rect
- for textSelection in textSelections {
- if textSelection.range.isEmpty {
- drawHighlightedLine(
- in: rect,
- for: textSelection,
- context: context,
- highlightedLines: &highlightedLines
- )
- } else {
- drawSelectedRange(in: rect, for: textSelection, context: context)
- }
- }
- context.restoreGState()
- }
-
- /// Draws a highlighted line in the given rect.
- /// - Parameters:
- /// - rect: The rect to draw in.
- /// - textSelection: The selection to draw.
- /// - context: The context to draw in.
- /// - highlightedLines: The set of all lines that have already been highlighted, used to avoid highlighting lines
- /// twice and updated if this function comes across a new line id.
- private func drawHighlightedLine(
- in rect: NSRect,
- for textSelection: TextSelection,
- context: CGContext,
- highlightedLines: inout Set
- ) {
- guard let linePosition = layoutManager?.textLineForOffset(textSelection.range.location),
- !highlightedLines.contains(linePosition.data.id) else {
- return
- }
- highlightedLines.insert(linePosition.data.id)
- context.saveGState()
-
- let insetXPos = max(rect.minX, edgeInsets.left)
- let maxWidth = (textView?.frame.width ?? 0) - insetXPos - edgeInsets.right
-
- let selectionRect = CGRect(
- x: insetXPos,
- y: linePosition.yPos,
- width: min(rect.width, maxWidth),
- height: linePosition.height
- ).pixelAligned
-
- if selectionRect.intersects(rect) {
- context.setFillColor(selectedLineBackgroundColor.cgColor)
- context.fill(selectionRect)
- }
- context.restoreGState()
- }
-
- /// Draws a selected range in the given context.
- /// - Parameters:
- /// - rect: The rect to draw in.
- /// - range: The range to highlight.
- /// - context: The context to draw in.
- private func drawSelectedRange(in rect: NSRect, for textSelection: TextSelection, context: CGContext) {
- context.saveGState()
-
- let fillColor = (textView?.isFirstResponder ?? false)
- ? selectionBackgroundColor.cgColor
- : selectionBackgroundColor.grayscale.cgColor
-
- context.setFillColor(fillColor)
-
- let fillRects = getFillRects(in: rect, for: textSelection)
- textSelection.boundingRect = fillRects.boundingRect()
-
- context.fill(fillRects)
- context.restoreGState()
- }
-
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift
deleted file mode 100644
index f3160bf3e..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+FillRects.swift
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// TextSelectionManager+FillRects.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 10/22/23.
-//
-
-import Foundation
-
-extension TextSelectionManager {
- /// Calculate a set of rects for a text selection suitable for filling with the selection color to indicate a
- /// multi-line selection. The returned rects surround all selected line fragments for the given selection,
- /// following the available text layout space, rather than the available selection layout space.
- ///
- /// - Parameters:
- /// - rect: The bounding rect of available draw space.
- /// - textSelection: The selection to use.
- /// - Returns: An array of rects that the selection overlaps.
- func getFillRects(in rect: NSRect, for textSelection: TextSelection) -> [CGRect] {
- guard let layoutManager,
- let range = textSelection.range.intersection(delegate?.visibleTextRange ?? .zero) else {
- return []
- }
-
- var fillRects: [CGRect] = []
-
- let textWidth = if layoutManager.maxLineLayoutWidth == .greatestFiniteMagnitude {
- layoutManager.maxLineWidth
- } else {
- layoutManager.maxLineLayoutWidth
- }
- let maxWidth = max(textWidth, layoutManager.wrapLinesWidth)
- let validTextDrawingRect = CGRect(
- x: layoutManager.edgeInsets.left,
- y: rect.minY,
- width: maxWidth,
- height: rect.height
- ).intersection(rect)
-
- for linePosition in layoutManager.linesInRange(range) {
- fillRects.append(
- contentsOf: getFillRects(in: validTextDrawingRect, selectionRange: range, forPosition: linePosition)
- )
- }
-
- // Pixel align these to avoid aliasing on the edges of each rect that should be a solid box.
- return fillRects.map { $0.intersection(validTextDrawingRect).pixelAligned }
- }
-
- /// Find fill rects for a specific line position.
- /// - Parameters:
- /// - rect: The bounding rect of the overall view.
- /// - range: The selected range to create fill rects for.
- /// - linePosition: The line position to use.
- /// - Returns: An array of rects that the selection overlaps.
- private func getFillRects(
- in rect: NSRect,
- selectionRange range: NSRange,
- forPosition linePosition: TextLineStorage.TextLinePosition
- ) -> [CGRect] {
- guard let layoutManager else { return [] }
- var fillRects: [CGRect] = []
-
- // The selected range contains some portion of the line
- for fragmentPosition in linePosition.data.lineFragments {
- guard let fragmentRange = fragmentPosition
- .range
- .shifted(by: linePosition.range.location),
- let intersectionRange = fragmentRange.intersection(range),
- let minRect = layoutManager.rectForOffset(intersectionRange.location) else {
- continue
- }
-
- let maxRect: CGRect
- let endOfLine = fragmentRange.max <= range.max || range.contains(fragmentRange.max)
- let endOfDocument = intersectionRange.max == layoutManager.lineStorage.length
- let emptyLine = linePosition.range.isEmpty
-
- // If the selection is at the end of the line, or contains the end of the fragment, and is not the end
- // of the document, we select the entire line to the right of the selection point.
- // true, !true = false, false
- // true, !true = false, true
- if endOfLine && !(endOfDocument && !emptyLine) {
- maxRect = CGRect(
- x: rect.maxX,
- y: fragmentPosition.yPos + linePosition.yPos,
- width: 0,
- height: fragmentPosition.height
- )
- } else if let maxFragmentRect = layoutManager.rectForOffset(intersectionRange.max) {
- maxRect = maxFragmentRect
- } else {
- continue
- }
-
- fillRects.append(CGRect(
- x: minRect.origin.x,
- y: minRect.origin.y,
- width: maxRect.minX - minRect.minX,
- height: max(minRect.height, maxRect.height)
- ))
- }
-
- return fillRects
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Move.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Move.swift
deleted file mode 100644
index ade755bea..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Move.swift
+++ /dev/null
@@ -1,212 +0,0 @@
-//
-// TextSelectionManager+Move.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/20/23.
-//
-
-import AppKit
-
-extension TextSelectionManager {
- /// Moves all selections, determined by the direction and destination provided.
- ///
- /// Also handles updating the selection views and marks the view as needing display.
- ///
- /// - Parameters:
- /// - direction: The direction to modify all selections.
- /// - destination: The destination to move the selections by.
- /// - modifySelection: Set to `true` to modify the selections instead of replacing it.
- public func moveSelections(
- direction: TextSelectionManager.Direction,
- destination: TextSelectionManager.Destination,
- modifySelection: Bool = false
- ) {
- textSelections.forEach {
- moveSelection(
- selection: $0,
- direction: direction,
- destination: destination,
- modifySelection: modifySelection
- )
- }
- updateSelectionViews()
- delegate?.setNeedsDisplay()
- NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self))
- }
-
- /// Moves a single selection determined by the direction and destination provided.
- /// - Parameters:
- /// - selection: The selection to modify.
- /// - direction: The direction to move in.
- /// - destination: The destination of the move.
- /// - modifySelection: Set to `true` to modify the selection instead of replacing it.
- private func moveSelection(
- selection: TextSelectionManager.TextSelection,
- direction: TextSelectionManager.Direction,
- destination: TextSelectionManager.Destination,
- modifySelection: Bool = false
- ) {
- if !selection.range.isEmpty
- && !modifySelection
- && (direction == .backward || direction == .forward)
- && destination == .character {
- if direction == .forward {
- selection.range.location = selection.range.max
- }
- selection.range.length = 0
- return
- }
-
- // Update pivot if necessary
- if modifySelection {
- updateSelectionPivot(selection, direction: direction)
- }
-
- // Find where to modify the selection from.
- let startLocation = findSelectionStartLocation(
- selection,
- direction: direction,
- modifySelection: modifySelection
- )
-
- let range = rangeOfSelection(
- from: startLocation,
- direction: direction,
- destination: destination,
- suggestedXPos: selection.suggestedXPos
- )
-
- // Update the suggested x position
- updateSelectionXPos(selection, newRange: range, direction: direction, destination: destination)
-
- // Update the selection range
- updateSelectionRange(
- selection,
- newRange: range,
- modifySelection: modifySelection,
- direction: direction,
- destination: destination
- )
- }
-
- private func findSelectionStartLocation(
- _ selection: TextSelectionManager.TextSelection,
- direction: TextSelectionManager.Direction,
- modifySelection: Bool
- ) -> Int {
- if modifySelection {
- guard let pivot = selection.pivot else {
- assertionFailure("Pivot should always exist when modifying a selection.")
- return 0
- }
- switch direction {
- case .up, .forward:
- if pivot > selection.range.location {
- return selection.range.location
- } else {
- return selection.range.max
- }
- case .down, .backward:
- if pivot < selection.range.max {
- return selection.range.max
- } else {
- return selection.range.location
- }
- }
- } else {
- if direction == .forward || (direction == .down && !selection.range.isEmpty) {
- return selection.range.max
- } else {
- return selection.range.location
- }
- }
- }
-
- private func updateSelectionPivot(
- _ selection: TextSelectionManager.TextSelection,
- direction: TextSelectionManager.Direction
- ) {
- guard selection.pivot == nil else { return }
- switch direction {
- case .up:
- selection.pivot = selection.range.max
- case .down:
- selection.pivot = selection.range.location
- case .forward:
- selection.pivot = selection.range.location
- case .backward:
- selection.pivot = selection.range.max
- }
- }
-
- private func updateSelectionXPos(
- _ selection: TextSelectionManager.TextSelection,
- newRange range: NSRange,
- direction: TextSelectionManager.Direction,
- destination: TextSelectionManager.Destination
- ) {
- switch direction {
- case .up:
- if destination != .line {
- selection.suggestedXPos = selection.suggestedXPos ?? layoutManager?.rectForOffset(range.location)?.minX
- } else {
- selection.suggestedXPos = nil
- }
- case .down:
- if destination == .line {
- selection.suggestedXPos = layoutManager?.rectForOffset(range.max)?.minX
- } else {
- selection.suggestedXPos = selection.suggestedXPos ?? layoutManager?.rectForOffset(range.max)?.minX
- }
- case .forward:
- selection.suggestedXPos = layoutManager?.rectForOffset(range.max)?.minX
- case .backward:
- selection.suggestedXPos = layoutManager?.rectForOffset(range.location)?.minX
- }
- }
-
- private func updateSelectionRange(
- _ selection: TextSelectionManager.TextSelection,
- newRange range: NSRange,
- modifySelection: Bool,
- direction: TextSelectionManager.Direction,
- destination: TextSelectionManager.Destination
- ) {
- if modifySelection {
- guard let pivot = selection.pivot else {
- assertionFailure("Pivot should always exist when modifying a selection.")
- return
- }
- switch direction {
- case .down, .forward:
- if range.contains(pivot) {
- selection.range.location = pivot
- selection.range.length = range.length - (pivot - range.location)
- } else if pivot > selection.range.location {
- selection.range.location += range.length
- selection.range.length -= range.length
- } else {
- selection.range.formUnion(range)
- }
- case .up, .backward:
- if range.contains(pivot) {
- selection.range.location = range.location
- selection.range.length = pivot - range.location
- } else if pivot < selection.range.max {
- selection.range.length -= range.length
- } else {
- selection.range.formUnion(range)
- }
- }
- } else {
- switch direction {
- case .up, .backward:
- selection.range = NSRange(location: range.location, length: 0)
- selection.pivot = range.location
- case .down, .forward:
- selection.range = NSRange(location: range.max, length: 0)
- selection.pivot = range.max
- }
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Update.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Update.swift
deleted file mode 100644
index 0c319681d..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager+Update.swift
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// TextSelectionManager+Update.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 10/22/23.
-//
-
-import Foundation
-
-extension TextSelectionManager {
- public func didReplaceCharacters(in range: NSRange, replacementLength: Int) {
- let delta = replacementLength == 0 ? -range.length : replacementLength
- for textSelection in self.textSelections {
- if textSelection.range.location > range.max {
- textSelection.range.location = max(0, textSelection.range.location + delta)
- textSelection.range.length = 0
- } else if textSelection.range.intersection(range) != nil
- || textSelection.range == range
- || (textSelection.range.isEmpty && textSelection.range.location == range.max) {
- if replacementLength > 0 {
- textSelection.range.location = range.location + replacementLength
- } else {
- textSelection.range.location = range.location
- }
- textSelection.range.length = 0
- } else {
- textSelection.range.length = 0
- }
- }
-
- // Clean up duplicate selection ranges
- var allRanges: Set = []
- for (idx, selection) in self.textSelections.enumerated().reversed() {
- if allRanges.contains(selection.range) {
- self.textSelections.remove(at: idx)
- } else {
- allRanges.insert(selection.range)
- }
- }
- }
-
- public func notifyAfterEdit(force: Bool = false) {
- updateSelectionViews(force: force)
- NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self))
- }
-}
diff --git a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift b/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift
deleted file mode 100644
index f05168629..000000000
--- a/Sources/CodeEditTextView/TextSelectionManager/TextSelectionManager.swift
+++ /dev/null
@@ -1,247 +0,0 @@
-//
-// TextSelectionManager.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 7/17/23.
-//
-
-import AppKit
-
-public protocol TextSelectionManagerDelegate: AnyObject {
- var visibleTextRange: NSRange? { get }
-
- func setNeedsDisplay()
- func estimatedLineHeight() -> CGFloat
-}
-
-/// Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges).
-///
-/// Draws selections using a draw method similar to the `TextLayoutManager` class, and adds cursor views when
-/// appropriate.
-public class TextSelectionManager: NSObject {
- // MARK: - Properties
-
- // swiftlint:disable:next line_length
- public static let selectionChangedNotification: Notification.Name = Notification.Name("com.CodeEdit.TextSelectionManager.TextSelectionChangedNotification")
-
- public var insertionPointColor: NSColor = NSColor.labelColor {
- didSet {
- textSelections.compactMap({ $0.view as? CursorView }).forEach { $0.color = insertionPointColor }
- }
- }
- public var highlightSelectedLine: Bool = true
- public var selectedLineBackgroundColor: NSColor = NSColor.selectedTextBackgroundColor.withSystemEffect(.disabled)
- public var selectionBackgroundColor: NSColor = NSColor.selectedTextBackgroundColor
- public var useSystemCursor: Bool = false {
- didSet {
- updateSelectionViews()
- }
- }
-
- /// Determines how far inset to draw selection content.
- public var edgeInsets: HorizontalEdgeInsets = .zero {
- didSet {
- delegate?.setNeedsDisplay()
- }
- }
-
- internal(set) public var textSelections: [TextSelection] = []
- weak var layoutManager: TextLayoutManager?
- weak var textStorage: NSTextStorage?
- weak var textView: TextView?
- weak var delegate: TextSelectionManagerDelegate?
- var cursorTimer: CursorTimer
-
- public init(
- layoutManager: TextLayoutManager,
- textStorage: NSTextStorage,
- textView: TextView?,
- delegate: TextSelectionManagerDelegate?,
- useSystemCursor: Bool = false
- ) {
- self.layoutManager = layoutManager
- self.textStorage = textStorage
- self.textView = textView
- self.delegate = delegate
- self.cursorTimer = CursorTimer()
- super.init()
- textSelections = []
- updateSelectionViews()
- }
-
- // MARK: - Selected Ranges
-
- /// Set the selected ranges to a single range. Overrides any existing selections.
- /// - Parameter range: The range to set.
- public func setSelectedRange(_ range: NSRange) {
- textSelections.forEach { $0.view?.removeFromSuperview() }
- let selection = TextSelection(range: range)
- selection.suggestedXPos = layoutManager?.rectForOffset(range.location)?.minX
- textSelections = [selection]
- updateSelectionViews()
- NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self))
- }
-
- /// Set the selected ranges to new ranges. Overrides any existing selections.
- /// - Parameter range: The selected ranges to set.
- public func setSelectedRanges(_ ranges: [NSRange]) {
- let oldRanges = textSelections.map(\.range)
-
- textSelections.forEach { $0.view?.removeFromSuperview() }
- // Remove duplicates, invalid ranges, update suggested X position.
- textSelections = Set(ranges)
- .filter {
- (0...(textStorage?.length ?? 0)).contains($0.location)
- && (0...(textStorage?.length ?? 0)).contains($0.max)
- }
- .sorted(by: { $0.location < $1.location })
- .map {
- let selection = TextSelection(range: $0)
- selection.suggestedXPos = layoutManager?.rectForOffset($0.location)?.minX
- return selection
- }
- updateSelectionViews()
- delegate?.setNeedsDisplay()
-
- if oldRanges != textSelections.map(\.range) {
- NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self))
- }
- }
-
- /// Append a new selected range to the existing ones.
- /// - Parameter range: The new range to add.
- public func addSelectedRange(_ range: NSRange) {
- let newTextSelection = TextSelection(range: range)
- var didHandle = false
- for textSelection in textSelections {
- if textSelection.range == newTextSelection.range {
- // Duplicate range, ignore
- return
- } else if (range.length > 0 && textSelection.range.intersection(range) != nil)
- || textSelection.range.max == range.location {
- // Range intersects existing range, modify this range to be the union of both and don't add the new
- // selection
- textSelection.range = textSelection.range.union(range)
- didHandle = true
- }
- }
- if !didHandle {
- textSelections.append(newTextSelection)
- textSelections.sort(by: { $0.range.location < $1.range.location })
- }
-
- updateSelectionViews()
- NotificationCenter.default.post(Notification(name: Self.selectionChangedNotification, object: self))
- delegate?.setNeedsDisplay()
- }
-
- // MARK: - Selection Views
-
- /// Update all selection cursors. Placing them in the correct position for each text selection and
- /// optionally reseting the blink timer.
- func updateSelectionViews(force: Bool = false, skipTimerReset: Bool = false) {
- guard textView?.isFirstResponder ?? false else { return }
- var didUpdate: Bool = false
-
- for textSelection in textSelections {
- if textSelection.range.isEmpty {
- didUpdate = didUpdate || repositionCursorSelection(textSelection: textSelection)
- } else if !textSelection.range.isEmpty && textSelection.view != nil {
- textSelection.view?.removeFromSuperview()
- textSelection.view = nil
- didUpdate = true
- }
- }
-
- if didUpdate || force {
- delegate?.setNeedsDisplay()
- if !skipTimerReset {
- cursorTimer.resetTimer()
- resetSystemCursorTimers()
- }
- }
- }
-
- private func repositionCursorSelection(textSelection: TextSelection) -> Bool {
- guard let cursorRect = layoutManager?.rectForOffset(textSelection.range.location) else {
- return false
- }
-
- var doesViewNeedReposition: Bool
-
- // If using the system cursor, macOS will change the origin and height by about 0.5, so we do an
- // approximate equals in that case to avoid extra updates.
- if useSystemCursor, #available(macOS 14.0, *) {
- doesViewNeedReposition = !textSelection.boundingRect.origin.approxEqual(cursorRect.origin)
- || !textSelection.boundingRect.height.approxEqual(layoutManager?.estimateLineHeight() ?? 0)
- } else {
- doesViewNeedReposition = textSelection.boundingRect.origin != cursorRect.origin
- || textSelection.boundingRect.height != layoutManager?.estimateLineHeight() ?? 0
- }
-
- if textSelection.view == nil || doesViewNeedReposition {
- let cursorView: NSView
-
- if let existingCursorView = textSelection.view {
- cursorView = existingCursorView
- } else {
- textSelection.view?.removeFromSuperview()
- textSelection.view = nil
-
- if useSystemCursor, #available(macOS 14.0, *) {
- let systemCursorView = NSTextInsertionIndicator(frame: .zero)
- cursorView = systemCursorView
- systemCursorView.displayMode = .automatic
- } else {
- let internalCursorView = CursorView(color: insertionPointColor)
- cursorView = internalCursorView
- cursorTimer.register(internalCursorView)
- }
-
- textView?.addSubview(cursorView, positioned: .above, relativeTo: nil)
- }
-
- cursorView.frame.origin = cursorRect.origin
- cursorView.frame.size.height = cursorRect.height
-
- textSelection.view = cursorView
- textSelection.boundingRect = cursorView.frame
-
- return true
- }
-
- return false
- }
-
- private func resetSystemCursorTimers() {
- guard #available(macOS 14, *) else { return }
- for cursorView in textSelections.compactMap({ $0.view as? NSTextInsertionIndicator }) {
- let frame = cursorView.frame
- cursorView.frame = .zero
- cursorView.frame = frame
- }
- }
-
- /// Get the height for a cursor placed at the beginning of the given range.
- /// - Parameter range: The range the cursor is at.
- /// - Returns: The height the cursor should be to match the text at that location.
- fileprivate func heightForCursorAt(_ range: NSRange) -> CGFloat? {
- guard let selectedLine = layoutManager?.textLineForOffset(range.location) else {
- return layoutManager?.estimateLineHeight()
- }
- return selectedLine
- .data
- .lineFragments
- .getLine(atOffset: range.location - (selectedLine.range.location))?
- .height
- ?? layoutManager?.estimateLineHeight()
- }
-
- /// Removes all cursor views and stops the cursor blink timer.
- func removeCursors() {
- cursorTimer.stopTimer()
- for textSelection in textSelections {
- textSelection.view?.removeFromSuperview()
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift b/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift
deleted file mode 100644
index 966b83b8d..000000000
--- a/Sources/CodeEditTextView/TextView/DraggingTextRenderer.swift
+++ /dev/null
@@ -1,113 +0,0 @@
-//
-// DraggingTextRenderer.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 11/24/24.
-//
-
-import AppKit
-
-class DraggingTextRenderer: NSView {
- let ranges: [NSRange]
- let layoutManager: TextLayoutManager
-
- override var isFlipped: Bool {
- true
- }
-
- override var intrinsicContentSize: NSSize {
- self.frame.size
- }
-
- init?(ranges: [NSRange], layoutManager: TextLayoutManager) {
- self.ranges = ranges
- self.layoutManager = layoutManager
-
- assert(!ranges.isEmpty, "Empty ranges not allowed")
-
- var minY: CGFloat = .infinity
- var maxY: CGFloat = 0.0
-
- for range in ranges {
- for line in layoutManager.lineStorage.linesInRange(range) {
- minY = min(minY, line.yPos)
- maxY = max(maxY, line.yPos + line.height)
- }
- }
-
- let frame = CGRect(
- x: layoutManager.edgeInsets.left,
- y: minY,
- width: layoutManager.maxLineWidth,
- height: maxY - minY
- )
-
- super.init(frame: frame)
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
- guard let context = NSGraphicsContext.current?.cgContext,
- let firstRange = ranges.first,
- let minRect = layoutManager.rectForOffset(firstRange.lowerBound) else {
- return
- }
-
- for range in ranges {
- for line in layoutManager.lineStorage.linesInRange(range) {
- drawLine(line, in: range, yOffset: minRect.minY, context: context)
- }
- }
- }
-
- private func drawLine(
- _ line: TextLineStorage.TextLinePosition,
- in selectedRange: NSRange,
- yOffset: CGFloat,
- context: CGContext
- ) {
- let renderer = LineFragmentRenderer(
- textStorage: layoutManager.textStorage,
- invisibleCharacterDelegate: layoutManager.invisibleCharacterDelegate
- )
- for fragment in line.data.lineFragments {
- guard let fragmentRange = fragment.range.shifted(by: line.range.location),
- fragmentRange.intersection(selectedRange) != nil else {
- continue
- }
- let fragmentYPos = line.yPos + fragment.yPos - yOffset
- renderer.draw(lineFragment: fragment.data, in: context, yPos: fragmentYPos)
-
- // Clear text that's not selected
- if fragmentRange.contains(selectedRange.lowerBound) {
- let relativeOffset = selectedRange.lowerBound - line.range.lowerBound
- let selectionXPos = layoutManager.characterXPosition(in: fragment.data, for: relativeOffset)
- context.clear(
- CGRect(
- x: 0.0,
- y: fragmentYPos,
- width: selectionXPos,
- height: fragment.height
- ).pixelAligned
- )
- }
-
- if fragmentRange.contains(selectedRange.upperBound) {
- let relativeOffset = selectedRange.upperBound - line.range.lowerBound
- let selectionXPos = layoutManager.characterXPosition(in: fragment.data, for: relativeOffset)
- context.clear(
- CGRect(
- x: selectionXPos,
- y: fragmentYPos,
- width: frame.width - selectionXPos,
- height: fragment.height
- ).pixelAligned
- )
- }
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Accessibility.swift b/Sources/CodeEditTextView/TextView/TextView+Accessibility.swift
deleted file mode 100644
index 87ebe2f0a..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Accessibility.swift
+++ /dev/null
@@ -1,168 +0,0 @@
-//
-// TextView+Accessibility.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 10/14/23.
-//
-
-import AppKit
-
-/// # Notes
-///
-/// ~~This implementation considers the entire document as one element, ignoring all subviews and lines.
-/// Another idea would be to make each line fragment an accessibility element, with options for navigating through
-/// lines from there. The text view would then only handle text input, and lines would handle reading out useful data
-/// to the user.
-/// More research needs to be done for the best option here.~~
-///
-/// Consider that the system has access to the ``TextView/accessibilityVisibleCharacterRange`` and
-/// ``TextView/accessibilityString(for:)`` methods. These can combine to allow an accessibility system to efficiently
-/// query the text view's contents. Adding accessibility elements to line fragments would require hit testing them,
-/// which will cause performance degradation.
-extension TextView {
- override open func isAccessibilityElement() -> Bool {
- true
- }
-
- override open func isAccessibilityEnabled() -> Bool {
- true
- }
-
- override open func isAccessibilityFocused() -> Bool {
- isFirstResponder
- }
-
- override open func setAccessibilityFocused(_ accessibilityFocused: Bool) {
- guard !isFirstResponder else { return }
- window?.makeFirstResponder(self)
- }
-
- override open func accessibilityLabel() -> String? {
- "Text Editor"
- }
-
- override open func accessibilityRole() -> NSAccessibility.Role? {
- .textArea
- }
-
- override open func accessibilityValue() -> Any? {
- string
- }
-
- override open func setAccessibilityValue(_ accessibilityValue: Any?) {
- guard let string = accessibilityValue as? String else {
- return
- }
-
- self.string = string
- }
-
- override open func accessibilityString(for range: NSRange) -> String? {
- guard documentRange.intersection(range) == range else {
- return nil
- }
-
- return textStorage.substring(
- from: textStorage.mutableString.rangeOfComposedCharacterSequences(for: range)
- )
- }
-
- // MARK: Selections
-
- override open func accessibilitySelectedText() -> String? {
- let selectedRange = accessibilitySelectedTextRange()
- guard selectedRange != .notFound else {
- return nil
- }
- if selectedRange.isEmpty {
- return ""
- }
- let range = (textStorage.string as NSString).rangeOfComposedCharacterSequences(for: selectedRange)
- return textStorage.substring(from: range)
- }
-
- override open func accessibilitySelectedTextRange() -> NSRange {
- guard let selection = selectionManager
- .textSelections
- .sorted(by: { $0.range.lowerBound < $1.range.lowerBound })
- .first else {
- return .notFound
- }
- if selection.range.isEmpty {
- return selection.range
- }
- return textStorage.mutableString.rangeOfComposedCharacterSequences(for: selection.range)
- }
-
- override open func accessibilitySelectedTextRanges() -> [NSValue]? {
- selectionManager.textSelections.map { selection in
- textStorage.mutableString.rangeOfComposedCharacterSequences(for: selection.range) as NSValue
- }
- }
-
- override open func accessibilityInsertionPointLineNumber() -> Int {
- let selectedRange = accessibilitySelectedTextRange()
- guard selectedRange != .notFound,
- let linePosition = layoutManager.textLineForOffset(selectedRange.location) else {
- return -1
- }
- return linePosition.index
- }
-
- override open func setAccessibilitySelectedTextRange(_ accessibilitySelectedTextRange: NSRange) {
- selectionManager.setSelectedRange(accessibilitySelectedTextRange)
- }
-
- override open func setAccessibilitySelectedTextRanges(_ accessibilitySelectedTextRanges: [NSValue]?) {
- let ranges = accessibilitySelectedTextRanges?.compactMap { $0 as? NSRange } ?? []
- selectionManager.setSelectedRanges(ranges)
- }
-
- // MARK: Text Ranges
-
- override open func accessibilityNumberOfCharacters() -> Int {
- string.count
- }
-
- override open func accessibilityRange(forLine line: Int) -> NSRange {
- guard line >= 0 && layoutManager.lineStorage.count > line,
- let linePosition = layoutManager.textLineForIndex(line) else {
- return .zero
- }
- return linePosition.range
- }
-
- override open func accessibilityRange(for point: NSPoint) -> NSRange {
- guard let location = layoutManager.textOffsetAtPoint(point) else { return .zero }
- return NSRange(location: location, length: 0)
- }
-
- override open func accessibilityRange(for index: Int) -> NSRange {
- guard index < documentRange.length else { return .notFound }
- return textStorage.mutableString.rangeOfComposedCharacterSequence(at: index)
- }
-
- override open func accessibilityVisibleCharacterRange() -> NSRange {
- visibleTextRange ?? .notFound
- }
-
- /// The line index for a given character offset.
- override open func accessibilityLine(for index: Int) -> Int {
- guard index <= textStorage.length,
- let textLine = layoutManager.textLineForOffset(index) else {
- return -1
- }
- return textLine.index
- }
-
- override open func accessibilityFrame(for range: NSRange) -> NSRect {
- guard documentRange.intersection(range) == range else {
- return .zero
- }
- if range.isEmpty {
- return .zero
- }
- let rects = layoutManager.rectsFor(range: range)
- return rects.boundingRect()
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+ColumnSelection.swift b/Sources/CodeEditTextView/TextView/TextView+ColumnSelection.swift
deleted file mode 100644
index ad2e63102..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+ColumnSelection.swift
+++ /dev/null
@@ -1,50 +0,0 @@
-//
-// TextView+ColumnSelection.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/19/25.
-//
-
-import AppKit
-
-extension TextView {
- /// Set the user's selection to a square region in the editor.
- ///
- /// This method will automatically determine a valid region from the provided two points.
- /// - Parameters:
- /// - pointA: The first point.
- /// - pointB: The second point.
- public func selectColumns(betweenPointA pointA: CGPoint, pointB: CGPoint) {
- let start = CGPoint(x: min(pointA.x, pointB.x), y: min(pointA.y, pointB.y))
- let end = CGPoint(x: max(pointA.x, pointB.x), y: max(pointA.y, pointB.y))
-
- // Collect all overlapping text ranges
- var selectedRanges: [NSRange] = layoutManager.linesStartingAt(start.y, until: end.y).flatMap { textLine in
- // Collect fragment ranges
- return textLine.data.lineFragments.compactMap { lineFragment -> NSRange? in
- let startOffset = self.layoutManager.textOffsetAtPoint(
- start,
- fragmentPosition: lineFragment,
- linePosition: textLine
- )
- let endOffset = self.layoutManager.textOffsetAtPoint(
- end,
- fragmentPosition: lineFragment,
- linePosition: textLine
- )
- guard let startOffset, let endOffset else { return nil }
-
- return NSRange(start: startOffset, end: endOffset)
- }
- }
-
- // If we have some non-cursor selections, filter out any cursor selections
- if selectedRanges.contains(where: { !$0.isEmpty }) {
- selectedRanges = selectedRanges.filter({
- !$0.isEmpty || (layoutManager.rectForOffset($0.location)?.origin.x.approxEqual(start.x) ?? false)
- })
- }
-
- selectionManager.setSelectedRanges(selectedRanges)
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+CopyPaste.swift b/Sources/CodeEditTextView/TextView/TextView+CopyPaste.swift
deleted file mode 100644
index 7eb6bec61..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+CopyPaste.swift
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// TextView+CopyPaste.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/21/23.
-//
-
-import AppKit
-
-extension TextView {
- @objc open func copy(_ sender: AnyObject) {
- guard let textSelections = selectionManager?
- .textSelections
- .compactMap({ textStorage.attributedSubstring(from: $0.range) }),
- !textSelections.isEmpty else {
- return
- }
- NSPasteboard.general.clearContents()
- NSPasteboard.general.writeObjects(textSelections)
- }
-
- @objc open func paste(_ sender: AnyObject) {
- guard let stringContents = NSPasteboard.general.string(forType: .string) else { return }
- insertText(stringContents, replacementRange: NSRange(location: NSNotFound, length: 0))
- }
-
- @objc open func cut(_ sender: AnyObject) {
- copy(sender)
- deleteBackward(sender)
- }
-
- @objc open func delete(_ sender: AnyObject) {
- deleteBackward(sender)
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Delete.swift b/Sources/CodeEditTextView/TextView/TextView+Delete.swift
deleted file mode 100644
index fe4363dfa..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Delete.swift
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// TextView+Delete.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/24/23.
-//
-
-import AppKit
-
-extension TextView {
- open override func deleteBackward(_ sender: Any?) {
- delete(direction: .backward, destination: .character)
- }
-
- open override func deleteBackwardByDecomposingPreviousCharacter(_ sender: Any?) {
- delete(direction: .backward, destination: .character, decomposeCharacters: true)
- }
-
- open override func deleteForward(_ sender: Any?) {
- delete(direction: .forward, destination: .character)
- }
-
- open override func deleteWordBackward(_ sender: Any?) {
- delete(direction: .backward, destination: .word)
- }
-
- open override func deleteWordForward(_ sender: Any?) {
- delete(direction: .forward, destination: .word)
- }
-
- open override func deleteToBeginningOfLine(_ sender: Any?) {
- delete(direction: .backward, destination: .line)
- }
-
- open override func deleteToEndOfLine(_ sender: Any?) {
- delete(direction: .forward, destination: .line)
- }
-
- open override func deleteToBeginningOfParagraph(_ sender: Any?) {
- delete(direction: .backward, destination: .line)
- }
-
- open override func deleteToEndOfParagraph(_ sender: Any?) {
- delete(direction: .forward, destination: .line)
- }
-
- private func delete(
- direction: TextSelectionManager.Direction,
- destination: TextSelectionManager.Destination,
- decomposeCharacters: Bool = false
- ) {
- /// Extend each selection by a distance specified by `destination`, then update both storage and the selection.
- for textSelection in selectionManager.textSelections {
- guard textSelection.range.isEmpty else { continue }
- let extendedRange = selectionManager.rangeOfSelection(
- from: textSelection.range.location,
- direction: direction,
- destination: destination
- )
- guard extendedRange.location >= 0 else { continue }
- textSelection.range.formUnion(extendedRange)
- }
- selectionManager.textSelections.sort(by: { $0.range.location < $1.range.location })
- KillRing.shared.kill(
- strings: selectionManager.textSelections.map(\.range).compactMap({ textStorage.substring(from: $0) })
- )
- replaceCharacters(in: selectionManager.textSelections.map(\.range), with: "")
- unmarkTextIfNeeded()
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Drag.swift b/Sources/CodeEditTextView/TextView/TextView+Drag.swift
deleted file mode 100644
index dbd878a3c..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Drag.swift
+++ /dev/null
@@ -1,268 +0,0 @@
-//
-// TextView+Drag.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 10/20/23.
-//
-
-import Foundation
-import AppKit
-
-private let pasteboardObjects = [NSString.self, NSURL.self]
-
-extension TextView: NSDraggingSource {
- // MARK: - Drag Gesture
-
- /// Custom press gesture recognizer that fails if it does not click into a selected range.
- private class DragSelectionGesture: NSPressGestureRecognizer {
- override func mouseDown(with event: NSEvent) {
- guard isEnabled, let view = self.view as? TextView, event.type == .leftMouseDown else {
- return
- }
-
- let clickPoint = view.convert(event.locationInWindow, from: nil)
- let selectionRects = view.selectionManager.textSelections.filter({ !$0.range.isEmpty }).flatMap {
- view.selectionManager.getFillRects(in: view.frame, for: $0)
- }
- if !selectionRects.contains(where: { $0.contains(clickPoint) }) {
- state = .failed
- }
-
- super.mouseDown(with: event)
- }
- }
-
- /// Adds a gesture for recognizing selection dragging gestures to the text view.
- /// See ``TextView/DragSelectionGesture`` for details.
- func setUpDragGesture() {
- let dragGesture = DragSelectionGesture(target: self, action: #selector(dragGestureHandler(_:)))
- dragGesture.minimumPressDuration = NSEvent.doubleClickInterval / 3
- dragGesture.isEnabled = isSelectable
- addGestureRecognizer(dragGesture)
- }
-
- /// Handles state change on the drag and drop gesture recognizer.
- ///
- /// This will ignore any gesture state besides `.began`, and will end by setting the state to `.ended`. The gesture
- /// is only meant to handle *recognizing* the drag, but the system drag interaction handles the rest.
- ///
- /// This will create a ``DraggingTextRenderer`` with the contents of the visible text selection. That is converted
- /// into an image and given to a new dragging session on the text view
- ///
- /// The rest of the drag interaction is handled by ``performDragOperation(_:)``, ``draggingUpdated(_:)``,
- /// ``draggingSession(_:willBeginAt:)`` and family.
- ///
- /// - Parameter sender: The gesture that's sending the state change.
- @objc private func dragGestureHandler(_ sender: DragSelectionGesture) {
- guard sender.state == .began else { return }
- defer {
- sender.state = .ended
- }
-
- guard let visibleTextRange,
- let draggingView = DraggingTextRenderer(
- ranges: selectionManager.textSelections
- .sorted(using: KeyPathComparator(\.range.location))
- .compactMap { $0.range.intersection(visibleTextRange) },
- layoutManager: layoutManager
- ) else {
- return
- }
-
- guard let bitmap = bitmapImageRepForCachingDisplay(in: draggingView.frame) else {
- return
- }
-
- draggingView.cacheDisplay(in: draggingView.bounds, to: bitmap)
-
- guard let cgImage = bitmap.cgImage else {
- return
- }
-
- let draggingImage = NSImage(cgImage: cgImage, size: draggingView.intrinsicContentSize)
-
- let attributedStrings = selectionManager
- .textSelections
- .sorted(by: { $0.range.location < $1.range.location })
- .map { textStorage.attributedSubstring(from: $0.range) }
- let attributedString = NSMutableAttributedString()
- for (idx, string) in attributedStrings.enumerated() {
- attributedString.append(string)
- if idx < attributedStrings.count - 1 {
- attributedString.append(NSAttributedString(string: layoutManager.detectedLineEnding.rawValue))
- }
- }
-
- let draggingItem = NSDraggingItem(pasteboardWriter: attributedString)
- draggingItem.setDraggingFrame(draggingView.frame, contents: draggingImage)
-
- guard let currentEvent = NSApp.currentEvent else {
- return
- }
-
- beginDraggingSession(with: [draggingItem], event: currentEvent, source: self)
- }
-
- // MARK: - NSDraggingSource
-
- public func draggingSession(
- _ session: NSDraggingSession,
- sourceOperationMaskFor context: NSDraggingContext
- ) -> NSDragOperation {
- context == .outsideApplication ? .copy : .move
- }
-
- public func draggingSession(_ session: NSDraggingSession, willBeginAt screenPoint: NSPoint) {
- if let draggingCursorView {
- draggingCursorView.removeFromSuperview()
- self.draggingCursorView = nil
- }
- isDragging = true
- setUpMouseAutoscrollTimer()
- }
-
- /// Updates the text view about a dragging session. The text view will update the ``TextView/draggingCursorView``
- /// cursor to match the drop destination depending on where the drag is on the text view.
- ///
- /// The text view will not place a dragging cursor view when the dragging destination is in an existing
- /// text selection.
- /// - Parameters:
- /// - session: The dragging session that was updated.
- /// - screenPoint: The position on the screen where the drag exists.
- public func draggingSession(_ session: NSDraggingSession, movedTo screenPoint: NSPoint) {
- guard let windowCoordinates = self.window?.convertPoint(fromScreen: screenPoint) else {
- return
- }
-
- let viewPoint = self.convert(windowCoordinates, from: nil) // Converts from window
- let cursor: NSView
-
- if let draggingCursorView {
- cursor = draggingCursorView
- } else if useSystemCursor, #available(macOS 15, *) {
- let systemCursor = NSTextInsertionIndicator()
- cursor = systemCursor
- systemCursor.displayMode = .visible
- addSubview(cursor)
- } else {
- cursor = CursorView(color: selectionManager.insertionPointColor)
- addSubview(cursor)
- }
-
- self.draggingCursorView = cursor
-
- guard let documentOffset = layoutManager.textOffsetAtPoint(viewPoint),
- let cursorPosition = layoutManager.rectForOffset(documentOffset) else {
- return
- }
-
- // Don't show a cursor in selected areas
- guard !selectionManager.textSelections.contains(where: { $0.range.contains(documentOffset) }) else {
- draggingCursorView?.removeFromSuperview()
- draggingCursorView = nil
- return
- }
-
- cursor.frame.origin = cursorPosition.origin
- cursor.frame.size.height = cursorPosition.height
- }
-
- public func draggingSession(
- _ session: NSDraggingSession,
- endedAt screenPoint: NSPoint,
- operation: NSDragOperation
- ) {
- if let draggingCursorView {
- draggingCursorView.removeFromSuperview()
- self.draggingCursorView = nil
- }
- isDragging = false
- disableMouseAutoscrollTimer()
- }
-
- override public func draggingEntered(_ sender: any NSDraggingInfo) -> NSDragOperation {
- determineDragOperation(sender)
- }
-
- override public func draggingUpdated(_ sender: any NSDraggingInfo) -> NSDragOperation {
- determineDragOperation(sender)
- }
-
- private func determineDragOperation(_ dragInfo: any NSDraggingInfo) -> NSDragOperation {
- let canReadObjects = dragInfo.draggingPasteboard.canReadObject(forClasses: pasteboardObjects)
-
- guard canReadObjects else {
- return NSDragOperation()
- }
-
- if let currentEvent = NSApplication.shared.currentEvent, currentEvent.modifierFlags.contains(.option) {
- return .copy
- }
-
- return .move
- }
-
- // MARK: - Perform Drag
-
- /// Performs the final drop operation.
- ///
- /// This method accepts a number of items from the dragging info's pasteboard, and cuts them into the
- /// destination determined by the ``TextView/draggingCursorView``.
- ///
- /// If the app's current event has the `option` key pressed, this will only paste the text from the pasteboard,
- /// and not remove the original dragged text.
- ///
- /// - Parameter sender: The dragging info to use.
- /// - Returns: `true`, if the drag was accepted.
- override public func performDragOperation(_ sender: any NSDraggingInfo) -> Bool {
- guard let objects = sender.draggingPasteboard.readObjects(forClasses: pasteboardObjects)?
- .compactMap({ anyObject in
- if let object = anyObject as? NSString {
- return String(object)
- } else if let object = anyObject as? NSURL, let string = object.absoluteString {
- return String(string)
- }
- return nil
- }),
- objects.count > 0 else {
- return false
- }
- let insertionString = objects.joined(separator: layoutManager.detectedLineEnding.rawValue)
-
- // Grab the insertion location
- guard let draggingCursorView,
- var insertionOffset = layoutManager.textOffsetAtPoint(draggingCursorView.frame.origin) else {
- // There was no active drag
- return false
- }
-
- let shouldCutSourceText = !(NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false)
-
- undoManager?.beginUndoGrouping()
-
- if shouldCutSourceText, let source = sender.draggingSource as? TextView, source === self {
- // Offset the insertion location so that we can remove the text first before pasting it into the editor.
- var updatedInsertionOffset = insertionOffset
- for selection in source.selectionManager.textSelections.reversed()
- where selection.range.location < insertionOffset {
- if selection.range.upperBound > insertionOffset {
- updatedInsertionOffset -= insertionOffset - selection.range.location
- } else {
- updatedInsertionOffset -= selection.range.length
- }
- }
- insertionOffset = updatedInsertionOffset
- insertText("") // Replace the selected ranges with nothing
- }
-
- replaceCharacters(in: [NSRange(location: insertionOffset, length: 0)], with: insertionString)
-
- undoManager?.endUndoGrouping()
-
- selectionManager.setSelectedRange(
- NSRange(location: insertionOffset, length: NSString(string: insertionString).length)
- )
-
- return true
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+FirstResponder.swift b/Sources/CodeEditTextView/TextView/TextView+FirstResponder.swift
deleted file mode 100644
index 968c1ede3..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+FirstResponder.swift
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// TextView+FirstResponder.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/15/24.
-//
-
-import AppKit
-
-extension TextView {
- open override func becomeFirstResponder() -> Bool {
- isFirstResponder = true
- selectionManager.cursorTimer.resetTimer()
- needsDisplay = true
- return super.becomeFirstResponder()
- }
-
- open override func resignFirstResponder() -> Bool {
- isFirstResponder = false
- selectionManager.removeCursors()
- needsDisplay = true
- return super.resignFirstResponder()
- }
-
- open override var canBecomeKeyView: Bool {
- super.canBecomeKeyView && acceptsFirstResponder && !isHiddenOrHasHiddenAncestor
- }
-
- /// Sent to the window's first responder when `NSWindow.makeKey()` occurs.
- @objc private func becomeKeyWindow() {
- _ = becomeFirstResponder()
- }
-
- /// Sent to the window's first responder when `NSWindow.resignKey()` occurs.
- @objc private func resignKeyWindow() {
- _ = resignFirstResponder()
- }
-
- open override var needsPanelToBecomeKey: Bool {
- isSelectable || isEditable
- }
-
- open override var acceptsFirstResponder: Bool {
- isSelectable
- }
-
- open override func acceptsFirstMouse(for event: NSEvent?) -> Bool {
- return true
- }
-
- open override func resetCursorRects() {
- super.resetCursorRects()
- if isSelectable {
- addCursorRect(
- visibleRect,
- cursor: isOptionPressed ? .crosshair : .iBeam
- )
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Insert.swift b/Sources/CodeEditTextView/TextView/TextView+Insert.swift
deleted file mode 100644
index 05bd092a7..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Insert.swift
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// TextView+Insert.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/3/23.
-//
-
-import AppKit
-
-extension TextView {
- override public func insertNewline(_ sender: Any?) {
- var attachments: [AnyTextAttachment] = selectionManager.textSelections.compactMap({ selection in
- let content = layoutManager.contentRun(at: selection.range.location)
- if case let .attachment(attachment) = content?.data, attachment.range == selection.range {
- return attachment
- }
- return nil
- })
-
- if !attachments.isEmpty {
- for attachment in attachments.sorted(by: { $0.range.location > $1.range.location }) {
- performAttachmentAction(attachment: attachment)
- }
- return
- }
-
- insertText(layoutManager.detectedLineEnding.rawValue)
- }
-
- override public func insertTab(_ sender: Any?) {
- insertText("\t")
- }
-
- override public func yank(_ sender: Any?) {
- let strings = KillRing.shared.yank()
- insertMultipleString(strings)
- }
-
- /// Not documented or in any headers, but required if kill ring size > 1.
- /// From Cocoa docs: "note that yankAndSelect: is not listed in any headers"
- @objc func yankAndSelect(_ sender: Any?) {
- let strings = KillRing.shared.yankAndSelect()
- insertMultipleString(strings)
- }
-
- private func insertMultipleString(_ strings: [String]) {
- let selectedRanges = selectionManager.textSelections.map(\.range)
-
- guard selectedRanges.count > 0 else { return }
-
- for idx in (0.. Bool {
- guard isEditable else {
- return super.performKeyEquivalent(with: event)
- }
-
- switch Int(event.keyCode) {
- case kVK_PageUp:
- if !event.modifierFlags.contains(.shift) {
- self.pageUp(event)
- return true
- }
- case kVK_PageDown:
- if !event.modifierFlags.contains(.shift) {
- self.pageDown(event)
- return true
- }
- default:
- return false
- }
-
- return false
- }
-
- override public func flagsChanged(with event: NSEvent) {
- super.flagsChanged(with: event)
-
- let modifierFlags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
- let modifierFlagsIsOption = modifierFlags == [.option]
-
- if modifierFlagsIsOption != isOptionPressed {
- isOptionPressed = modifierFlagsIsOption
- resetCursorRects()
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Layout.swift b/Sources/CodeEditTextView/TextView/TextView+Layout.swift
deleted file mode 100644
index 2fef2aa1b..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Layout.swift
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// TextView+Layout.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/15/24.
-//
-
-import Foundation
-
-extension TextView {
- override public func layout() {
- super.layout()
- layoutManager.layoutLines()
- selectionManager.updateSelectionViews(skipTimerReset: true)
- }
-
- open override class var isCompatibleWithResponsiveScrolling: Bool {
- true
- }
-
- open override func prepareContent(in rect: NSRect) {
- needsLayout = true
- super.prepareContent(in: rect)
- }
-
- override public func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
- if isSelectable {
- selectionManager.drawSelections(in: dirtyRect)
- }
- emphasisManager?.updateLayerBackgrounds()
- }
-
- override open var isFlipped: Bool {
- true
- }
-
- override public var visibleRect: NSRect {
- if let scrollView {
- var rect = scrollView.documentVisibleRect
- rect.origin.y += scrollView.contentInsets.top
- return rect.pixelAligned
- } else {
- return super.visibleRect
- }
- }
-
- public var visibleTextRange: NSRange? {
- let minY = max(visibleRect.minY, 0)
- let maxY = min(visibleRect.maxY, layoutManager.estimatedHeight())
- guard let minYLine = layoutManager.textLineForPosition(minY),
- let maxYLine = layoutManager.textLineForPosition(maxY) else {
- return nil
- }
- return NSRange(
- location: minYLine.range.location,
- length: (maxYLine.range.location - minYLine.range.location) + maxYLine.range.length
- )
- }
-
- public func updatedViewport(_ newRect: CGRect) {
- if !updateFrameIfNeeded() {
- layoutManager.layoutLines()
- }
- inputContext?.invalidateCharacterCoordinates()
- }
-
- /// Updates the view's frame if needed depending on wrapping lines, a new maximum width, or changed available size.
- /// - Returns: Whether or not the view was updated.
- @discardableResult
- public func updateFrameIfNeeded() -> Bool {
- var availableSize = scrollView?.contentSize ?? .zero
- availableSize.height -= (scrollView?.contentInsets.top ?? 0) + (scrollView?.contentInsets.bottom ?? 0)
-
- let extraHeight = availableSize.height * overscrollAmount
- let newHeight = max(layoutManager.estimatedHeight() + extraHeight, availableSize.height, 0)
- let newWidth = layoutManager.estimatedWidth()
-
- var didUpdate = false
-
- if newHeight >= availableSize.height && frame.size.height != newHeight {
- frame.size.height = newHeight
- // No need to update layout after height adjustment
- }
-
- if wrapLines && frame.size.width != availableSize.width {
- frame.size.width = availableSize.width
- didUpdate = true
- } else if !wrapLines && frame.size.width != max(newWidth, availableSize.width) {
- frame.size.width = max(newWidth, availableSize.width)
- didUpdate = true
- }
-
- if didUpdate {
- needsLayout = true
- needsDisplay = true
- layoutManager.setNeedsLayout()
- }
-
- if isSelectable {
- selectionManager?.updateSelectionViews()
- }
-
- return didUpdate
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift b/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift
deleted file mode 100644
index 812919d0c..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Lifecycle.swift
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// TextView+Lifecycle.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 4/7/25.
-//
-
-import AppKit
-
-extension TextView {
- override public func viewWillMove(toWindow newWindow: NSWindow?) {
- super.viewWillMove(toWindow: newWindow)
- layoutManager.layoutLines()
- }
-
- override public func viewWillMove(toSuperview newSuperview: NSView?) {
- super.viewWillMove(toSuperview: newSuperview)
- guard let clipView = newSuperview as? NSClipView,
- let scrollView = enclosingScrollView ?? clipView.enclosingScrollView else {
- return
- }
-
- setUpScrollListeners(scrollView: scrollView)
- }
-
- override public func viewDidEndLiveResize() {
- super.viewDidEndLiveResize()
- updateFrameIfNeeded()
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Menu.swift b/Sources/CodeEditTextView/TextView/TextView+Menu.swift
deleted file mode 100644
index 508f0caf6..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Menu.swift
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// TextView+Menu.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/21/23.
-//
-
-import AppKit
-
-extension TextView {
- override public func menu(for event: NSEvent) -> NSMenu? {
- guard event.type == .rightMouseDown else { return nil }
-
- let menu = NSMenu()
-
- menu.items = [
- NSMenuItem(title: "Cut", action: #selector(cut(_:)), keyEquivalent: "x"),
- NSMenuItem(title: "Copy", action: #selector(copy(_:)), keyEquivalent: "c"),
- NSMenuItem(title: "Paste", action: #selector(paste(_:)), keyEquivalent: "v")
- ]
-
- return menu
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift b/Sources/CodeEditTextView/TextView/TextView+Mouse.swift
deleted file mode 100644
index 0609665f0..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Mouse.swift
+++ /dev/null
@@ -1,241 +0,0 @@
-//
-// TextView+Mouse.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/19/23.
-//
-
-import AppKit
-
-extension TextView {
- override public func mouseDown(with event: NSEvent) {
- // Set cursor
- guard isSelectable,
- event.type == .leftMouseDown,
- let offset = layoutManager.textOffsetAtPoint(self.convert(event.locationInWindow, from: nil)) else {
- super.mouseDown(with: event)
- return
- }
-
- if let content = layoutManager.contentRun(at: offset),
- case let .attachment(attachment) = content.data, event.clickCount < 3 {
- handleAttachmentClick(event: event, offset: offset, attachment: attachment)
- return
- }
-
- switch event.clickCount {
- case 1:
- handleSingleClick(event: event, offset: offset)
- case 2:
- handleDoubleClick(event: event)
- case 3:
- handleTripleClick(event: event)
- default:
- break
- }
-
- setUpMouseAutoscrollTimer()
- }
-
- /// Single click, if control-shift we add a cursor
- /// if shift, we extend the selection to the click location
- /// else we set the cursor
- fileprivate func handleSingleClick(event: NSEvent, offset: Int) {
- cursorSelectionMode = .character
-
- guard isEditable else {
- super.mouseDown(with: event)
- return
- }
- let eventFlags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
- if eventFlags == [.control, .shift] {
- unmarkText()
- selectionManager.addSelectedRange(NSRange(location: offset, length: 0))
- } else if eventFlags.contains(.shift) {
- unmarkText()
- shiftClickExtendSelection(to: offset)
- } else {
- selectionManager.setSelectedRange(NSRange(location: offset, length: 0))
- unmarkTextIfNeeded()
- }
- }
-
- fileprivate func handleDoubleClick(event: NSEvent) {
- cursorSelectionMode = .word
-
- guard !event.modifierFlags.contains(.shift) else {
- super.mouseDown(with: event)
- return
- }
- unmarkText()
- selectWord(nil)
- }
-
- fileprivate func handleTripleClick(event: NSEvent) {
- cursorSelectionMode = .line
-
- guard !event.modifierFlags.contains(.shift) else {
- super.mouseDown(with: event)
- return
- }
- unmarkText()
- selectLine(nil)
- }
-
- fileprivate func handleAttachmentClick(event: NSEvent, offset: Int, attachment: AnyTextAttachment) {
- switch event.clickCount {
- case 1:
- selectionManager.setSelectedRange(attachment.range)
- case 2:
- performAttachmentAction(attachment: attachment)
- default:
- break
- }
- }
-
- func performAttachmentAction(attachment: AnyTextAttachment) {
- let action = attachment.attachment.attachmentAction()
- switch action {
- case .none:
- return
- case .discard:
- layoutManager.attachments.remove(atOffset: attachment.range.location)
- selectionManager.setSelectedRange(NSRange(location: attachment.range.location, length: 0))
- case let .replace(text):
- replaceCharacters(in: attachment.range, with: text)
- }
- }
-
- override public func mouseUp(with event: NSEvent) {
- mouseDragAnchor = nil
- disableMouseAutoscrollTimer()
- super.mouseUp(with: event)
- }
-
- override public func mouseDragged(with event: NSEvent) {
- guard !(inputContext?.handleEvent(event) ?? false) && isSelectable && !isDragging else {
- return
- }
-
- // We receive global events because our view received the drag event, but we need to clamp the potentially
- // out-of-bounds positions to a position our layout manager can deal with.
- let locationInWindow = convert(event.locationInWindow, from: nil)
- let locationInView = CGPoint(
- x: max(0.0, min(locationInWindow.x, frame.width)),
- y: max(0.0, min(locationInWindow.y, frame.height))
- )
-
- if mouseDragAnchor == nil {
- mouseDragAnchor = locationInView
- super.mouseDragged(with: event)
- } else {
- guard let mouseDragAnchor,
- let startPosition = layoutManager.textOffsetAtPoint(mouseDragAnchor),
- let endPosition = layoutManager.textOffsetAtPoint(locationInView) else {
- return
- }
-
- let modifierFlags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
- if modifierFlags.contains(.option) {
- dragColumnSelection(mouseDragAnchor: mouseDragAnchor, locationInView: locationInView)
- } else {
- dragSelection(startPosition: startPosition, endPosition: endPosition, mouseDragAnchor: mouseDragAnchor)
- }
-
- setNeedsDisplay()
- self.autoscroll(with: event)
- }
- }
-
- /// Extends the current selection to the offset. Only used when the user shift-clicks a location in the document.
- ///
- /// If the offset is within the selection, trims the selection from the nearest edge (start or end) towards the
- /// clicked offset.
- /// Otherwise, extends the selection to the clicked offset.
- ///
- /// - Parameter offset: The offset clicked on.
- fileprivate func shiftClickExtendSelection(to offset: Int) {
- // Use the last added selection, this is behavior copied from Xcode.
- guard var selectedRange = selectionManager.textSelections.last?.range else { return }
- if selectedRange.contains(offset) {
- if offset - selectedRange.location <= selectedRange.max - offset {
- selectedRange.length -= offset - selectedRange.location
- selectedRange.location = offset
- } else {
- selectedRange.length -= selectedRange.max - offset
- }
- } else {
- selectedRange.formUnion(NSRange(
- start: min(offset, selectedRange.location),
- end: max(offset, selectedRange.max)
- ))
- }
- selectionManager.setSelectedRange(selectedRange)
- setNeedsDisplay()
- }
-
- // MARK: - Mouse Autoscroll
-
- /// Sets up a timer that fires at a predetermined period to autoscroll the text view.
- /// Ensure the timer is disabled using ``disableMouseAutoscrollTimer``.
- func setUpMouseAutoscrollTimer() {
- mouseDragTimer?.invalidate()
- // https://cocoadev.github.io/AutoScrolling/ (fired at ~45Hz)
- mouseDragTimer = Timer.scheduledTimer(withTimeInterval: 0.022, repeats: true) { [weak self] _ in
- if let event = self?.window?.currentEvent, event.type == .leftMouseDragged {
- self?.mouseDragged(with: event)
- self?.autoscroll(with: event)
- }
- }
- }
-
- /// Disables the mouse drag timer started by ``setUpMouseAutoscrollTimer``
- func disableMouseAutoscrollTimer() {
- mouseDragTimer?.invalidate()
- mouseDragTimer = nil
- }
-
- // MARK: - Drag Selection
-
- private func dragSelection(startPosition: Int, endPosition: Int, mouseDragAnchor: CGPoint) {
- switch cursorSelectionMode {
- case .character:
- selectionManager.setSelectedRange(
- NSRange(
- location: min(startPosition, endPosition),
- length: max(startPosition, endPosition) - min(startPosition, endPosition)
- )
- )
-
- case .word:
- let startWordRange = findWordBoundary(at: startPosition)
- let endWordRange = findWordBoundary(at: endPosition)
-
- selectionManager.setSelectedRange(
- NSRange(
- location: min(startWordRange.location, endWordRange.location),
- length: max(startWordRange.location + startWordRange.length,
- endWordRange.location + endWordRange.length) -
- min(startWordRange.location, endWordRange.location)
- )
- )
-
- case .line:
- let startLineRange = findLineBoundary(at: startPosition)
- let endLineRange = findLineBoundary(at: endPosition)
-
- selectionManager.setSelectedRange(
- NSRange(
- location: min(startLineRange.location, endLineRange.location),
- length: max(startLineRange.location + startLineRange.length,
- endLineRange.location + endLineRange.length) -
- min(startLineRange.location, endLineRange.location)
- )
- )
- }
- }
-
- private func dragColumnSelection(mouseDragAnchor: CGPoint, locationInView: CGPoint) {
- selectColumns(betweenPointA: mouseDragAnchor, pointB: locationInView)
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Move.swift b/Sources/CodeEditTextView/TextView/TextView+Move.swift
deleted file mode 100644
index d130f16e1..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Move.swift
+++ /dev/null
@@ -1,179 +0,0 @@
-//
-// TextView+Move.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/10/23.
-//
-
-import Foundation
-
-extension TextView {
- fileprivate func updateAfterMove() {
- unmarkTextIfNeeded()
- scrollSelectionToVisible()
- }
-
- /// Moves the cursors up one character.
- override public func moveUp(_ sender: Any?) {
- selectionManager.moveSelections(direction: .up, destination: .character)
- updateAfterMove()
- }
-
- /// Moves the cursors up one character extending the current selection.
- override public func moveUpAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .up, destination: .character, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors down one character.
- override public func moveDown(_ sender: Any?) {
- selectionManager.moveSelections(direction: .down, destination: .character)
- updateAfterMove()
- }
-
- /// Moves the cursors down one character extending the current selection.
- override public func moveDownAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .down, destination: .character, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors left one character.
- override public func moveLeft(_ sender: Any?) {
- selectionManager.moveSelections(direction: .backward, destination: .character)
- updateAfterMove()
- }
-
- /// Moves the cursors left one character extending the current selection.
- override public func moveLeftAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .backward, destination: .character, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors right one character.
- override public func moveRight(_ sender: Any?) {
- selectionManager.moveSelections(direction: .forward, destination: .character)
- updateAfterMove()
- }
-
- /// Moves the cursors right one character extending the current selection.
- override public func moveRightAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .forward, destination: .character, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors left one word.
- override public func moveWordLeft(_ sender: Any?) {
- selectionManager.moveSelections(direction: .backward, destination: .word)
- updateAfterMove()
- }
-
- /// Moves the cursors left one word extending the current selection.
- override public func moveWordLeftAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .backward, destination: .word, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors right one word.
- override public func moveWordRight(_ sender: Any?) {
- selectionManager.moveSelections(direction: .forward, destination: .word)
- updateAfterMove()
- }
-
- /// Moves the cursors right one word extending the current selection.
- override public func moveWordRightAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .forward, destination: .word, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors left to the end of the line.
- override public func moveToLeftEndOfLine(_ sender: Any?) {
- selectionManager.moveSelections(direction: .backward, destination: .visualLine)
- updateAfterMove()
- }
-
- /// Moves the cursors left to the end of the line extending the current selection.
- override public func moveToLeftEndOfLineAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .backward, destination: .visualLine, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors right to the end of the line.
- override public func moveToRightEndOfLine(_ sender: Any?) {
- selectionManager.moveSelections(direction: .forward, destination: .visualLine)
- updateAfterMove()
- }
-
- /// Moves the cursors right to the end of the line extending the current selection.
- override public func moveToRightEndOfLineAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .forward, destination: .visualLine, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors to the beginning of the line, if pressed again selects the next line up.
- override public func moveToBeginningOfParagraph(_ sender: Any?) {
- selectionManager.moveSelections(direction: .up, destination: .line)
- updateAfterMove()
- }
-
- /// Moves the cursors to the beginning of the line, if pressed again selects the next line up extending the current
- /// selection.
- override public func moveToBeginningOfParagraphAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .up, destination: .line, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors to the end of the line, if pressed again selects the next line up.
- override public func moveToEndOfParagraph(_ sender: Any?) {
- selectionManager.moveSelections(direction: .down, destination: .line)
- updateAfterMove()
- }
-
- /// Moves the cursors to the end of the line, if pressed again selects the next line up extending the current
- /// selection.
- override public func moveToEndOfParagraphAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .down, destination: .line, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors to the beginning of the document.
- override public func moveToBeginningOfDocument(_ sender: Any?) {
- selectionManager.moveSelections(direction: .up, destination: .document)
- updateAfterMove()
- }
-
- /// Moves the cursors to the beginning of the document extending the current selection.
- override public func moveToBeginningOfDocumentAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .up, destination: .document, modifySelection: true)
- updateAfterMove()
- }
-
- /// Moves the cursors to the end of the document.
- override public func moveToEndOfDocument(_ sender: Any?) {
- selectionManager.moveSelections(direction: .down, destination: .document)
- updateAfterMove()
- }
-
- /// Moves the cursors to the end of the document extending the current selection.
- override public func moveToEndOfDocumentAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .down, destination: .document, modifySelection: true)
- updateAfterMove()
- }
-
- override public func pageUp(_ sender: Any?) {
- enclosingScrollView?.pageUp(sender)
- }
-
- override public func pageUpAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .up, destination: .page, modifySelection: true)
- updateAfterMove()
- }
-
- override public func pageDown(_ sender: Any?) {
- enclosingScrollView?.pageDown(sender)
- }
-
- override public func pageDownAndModifySelection(_ sender: Any?) {
- selectionManager.moveSelections(direction: .down, destination: .page, modifySelection: true)
- updateAfterMove()
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+NSTextInput.swift b/Sources/CodeEditTextView/TextView/TextView+NSTextInput.swift
deleted file mode 100644
index d64a5a0b3..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+NSTextInput.swift
+++ /dev/null
@@ -1,292 +0,0 @@
-//
-// TextView+NSTextInput.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 7/16/23.
-//
-
-import AppKit
-
-/// # Notes for Marked Text
-///
-/// Marked text is used when a character may need more than one keystroke to insert text. For example pressing option-e
-/// then e again to insert the é character.
-///
-/// The text view needs to maintain a range of marked text and apply attributes indicating the text is marked. When
-/// selection is updated, the marked text range can be discarded if the cursor leaves the marked text range.
-///
-/// ## Notes for multiple cursors
-///
-/// When inserting using multiple cursors, the marked text should be duplicated across all insertion points. However
-/// this should only happen if the `setMarkedText` method is called with `NSNotFound` for the replacement range's
-/// location (indicating that the marked text should appear at the insertion location)
-///
-/// **Note: Visual studio code Does Not correctly support marked text with multiple cursors,*
-/// **use Xcode as an example of this behavior.*
-///
-/// All documentation in these methods is from the `NSTextInputClient` documentation, copied here for easy of use.
-extension TextView: NSTextInputClient {
- // MARK: - Insert Text
-
- /// Converts an `Any` to a valid string type if possible.
- /// Throws an `assertionFailure` if not a valid type (`NSAttributedString`, `NSString`, or `String`)
- private func anyToString(_ string: Any) -> String? {
- switch string {
- case let string as NSString:
- return string as String
- case let string as NSAttributedString:
- return string.string
- default:
- assertionFailure("\(#function) called with invalid string type. Expected String or NSAttributedString.")
- return nil
- }
- }
-
- /// Inserts the string at the replacement range. If replacement range is `NSNotFound`, uses the selection ranges.
- private func _insertText(insertString: String, replacementRange: NSRange) {
- var insertString = insertString
- if LineEnding(rawValue: insertString) == .carriageReturn
- && layoutManager.detectedLineEnding == .carriageReturnLineFeed {
- insertString = LineEnding.carriageReturnLineFeed.rawValue
- }
-
- if replacementRange.location == NSNotFound {
- replaceCharacters(in: selectionManager.textSelections.map(\.range), with: insertString)
- } else {
- replaceCharacters(in: replacementRange, with: insertString)
- }
-
- selectionManager.textSelections.forEach { $0.suggestedXPos = nil }
- }
-
- /// Inserts the given string into the receiver, replacing the specified content.
- ///
- /// Programmatic modification of the text is best done by operating on the text storage directly.
- /// Because this method pertains to the actions of the user, the text view must be editable for the
- /// insertion to work.
- ///
- /// - Parameters:
- /// - string: The text to insert, either an NSString or NSAttributedString instance.
- /// - replacementRange: The range of content to replace in the receiver’s text storage.
- @objc public func insertText(_ string: Any, replacementRange: NSRange) {
- guard isEditable, let insertString = anyToString(string) else { return }
- unmarkText()
- _insertText(insertString: insertString, replacementRange: replacementRange)
- }
-
- override public func insertText(_ insertString: Any) {
- insertText(insertString, replacementRange: NSRange(location: NSNotFound, length: 0))
- }
-
- // MARK: - Marked Text
-
- /// Sets up marked text for a marking session. See ``MarkedTextManager`` for more details.
- ///
- /// Decides whether or not to insert/replace text. Then updates the current marked ranges and updates cursor
- /// positions.
- ///
- /// - Parameters:
- /// - string: The string to insert. Can be either an NSString or NSAttributedString instance.
- /// - selectedRange: The range to set as the selection, computed from the beginning of the inserted string.
- /// - replacementRange: The range to replace, computed from the beginning of the marked text.
- @objc public func setMarkedText(_ string: Any, selectedRange: NSRange, replacementRange: NSRange) {
- guard isEditable, let insertString = anyToString(string) else { return }
- // Needs to insert text, but not notify the undo manager.
- _undoManager?.disable()
- let shouldInsert = layoutManager.markedTextManager.markedRanges.isEmpty
-
- // Copy the text selections *before* we modify them.
- let selectionCopies = selectionManager.textSelections.map(\.range)
-
- if shouldInsert {
- _insertText(insertString: insertString, replacementRange: replacementRange)
- } else {
- replaceCharacters(in: layoutManager.markedTextManager.markedRanges, with: insertString)
- }
- layoutManager.markedTextManager.updateMarkedRanges(
- insertLength: (insertString as NSString).length,
- textSelections: selectionCopies
- )
-
- // Reset the selected ranges to reflect the replaced text.
- selectionManager.setSelectedRanges(layoutManager.markedTextManager.markedRanges.map({
- NSRange(location: $0.max, length: 0)
- }))
-
- _undoManager?.enable()
- }
-
- /// Unmarks text and causes layout if needed after a selection update.
- func unmarkTextIfNeeded() {
- guard layoutManager.markedTextManager.hasMarkedText,
- layoutManager.markedTextManager.updateForNewSelections(
- textSelections: selectionManager.textSelections
- ) else {
- return
- }
-
- layoutManager.markedTextManager.removeAll()
- layoutManager.setNeedsLayout()
- needsLayout = true
- inputContext?.discardMarkedText()
- }
-
- /// Unmarks the marked text.
- ///
- /// The receiver removes any marking from pending input text and disposes of the marked text as it wishes.
- /// The text view should accept the marked text as if it had been inserted normally.
- /// If there is no marked text, the invocation of this method has no effect.
- @objc public func unmarkText() {
- if layoutManager.markedTextManager.hasMarkedText {
- _undoManager?.disable()
- replaceCharacters(in: layoutManager.markedTextManager.markedRanges, with: "")
- _undoManager?.enable()
- layoutManager.markedTextManager.removeAll()
- layoutManager.setNeedsLayout()
- needsLayout = true
- inputContext?.discardMarkedText()
- }
- }
-
- /// Returns the range of selected text.
- /// The returned range measures from the start of the receiver’s text storage, that is, from 0 to the document
- /// length.
- /// - Returns: The range of selected text or {NSNotFound, 0} if there is no selection.
- @objc public func selectedRange() -> NSRange {
- return selectionManager?.textSelections.first?.range ?? NSRange(location: NSNotFound, length: 0)
- }
-
- /// Returns the range of the marked text.
- ///
- /// The returned range measures from the start of the receiver’s text storage. The return value’s location is
- /// `NSNotFound` and its length is `0` if and only if `hasMarkedText()` returns false.
- ///
- /// - Returns: The range of marked text or {NSNotFound, 0} if there is no marked range.
- @objc public func markedRange() -> NSRange {
- return layoutManager?.markedTextManager.markedRanges.first ?? NSRange(location: NSNotFound, length: 0)
- }
-
- /// Returns a Boolean value indicating whether the receiver has marked text.
- ///
- /// The text view itself may call this method to determine whether there currently is marked text.
- /// NSTextView, for example, disables the Edit > Copy menu item when this method returns true.
- ///
- /// - Returns: true if the receiver has marked text; otherwise false.
- @objc public func hasMarkedText() -> Bool {
- return layoutManager.markedTextManager.hasMarkedText
- }
-
- /// Returns an array of attribute names recognized by the receiver.
- ///
- /// Returns an empty array if no attributes are supported. See NSAttributedString Application Kit Additions
- /// Reference for the set of string constants representing standard attributes.
- ///
- /// - Returns: An array of NSString objects representing names for the supported attributes.
- @objc public func validAttributesForMarkedText() -> [NSAttributedString.Key] {
- [.underlineStyle, .underlineColor, .backgroundColor, .font, .foregroundColor]
- }
-
- // MARK: - Contents
-
- /// Returns an attributed string derived from the given range in the receiver's text storage.
- ///
- /// An implementation of this method should be prepared for aRange to be out of bounds.
- /// For example, the InkWell text input service can ask for the contents of the text input client
- /// that extends beyond the document’s range. In this case, you should return the
- /// intersection of the document’s range and aRange. If the location of aRange is completely outside of the
- /// document’s range, return nil.
- ///
- /// - Parameters:
- /// - range: The range in the text storage from which to create the returned string.
- /// - actualRange: The actual range of the returned string if it was adjusted, for example, to a grapheme cluster
- /// boundary or for performance or other reasons. NULL if range was not adjusted.
- /// - Returns: The string created from the given range. May return nil.
- @objc public func attributedSubstring(
- forProposedRange range: NSRange,
- actualRange: NSRangePointer?
- ) -> NSAttributedString? {
- let realRange = (textStorage.string as NSString).rangeOfComposedCharacterSequences(for: range)
- actualRange?.pointee = realRange
- return textStorage.attributedSubstring(from: realRange)
- }
-
- /// Returns an attributed string representing the receiver's text storage.
- /// - Returns: The attributed string of the receiver’s text storage.
- @objc public func attributedString() -> NSAttributedString {
- textStorage.attributedSubstring(from: documentRange)
- }
-
- // MARK: - Positions
-
- /// Returns the first logical boundary rectangle for characters in the given range.
- /// - Parameters:
- /// - range: The character range whose boundary rectangle is returned.
- /// - actualRange: If non-NULL, contains the character range corresponding to the returned area if it was
- /// adjusted, for example, to a grapheme cluster boundary or characters in the first line fragment.
- /// - Returns: The boundary rectangle for the given range of characters, in *screen* coordinates.
- /// The rectangle’s size value can be negative if the text flows to the left.
- @objc public func firstRect(forCharacterRange range: NSRange, actualRange: NSRangePointer?) -> NSRect {
- if actualRange != nil {
- let realRange = (textStorage.string as NSString).rangeOfComposedCharacterSequences(for: range)
- if realRange != range {
- actualRange?.pointee = realRange
- }
- }
-
- let localRect = (layoutManager.rectForOffset(range.location) ?? .zero)
- let windowRect = convert(localRect, to: nil)
- return window?.convertToScreen(windowRect) ?? .zero
- }
-
- /// Returns the index of the character whose bounding rectangle includes the given point.
- /// - Parameter point: The point to test, in *screen* coordinates.
- /// - Returns: The character index, measured from the start of the receiver’s text storage, of the character
- /// containing the given point. Returns NSNotFound if the cursor is not within a character’s
- /// bounding rectangle.
- @objc public func characterIndex(for point: NSPoint) -> Int {
- guard let windowPoint = window?.convertPoint(fromScreen: point) else {
- return NSNotFound
- }
- let localPoint = convert(windowPoint, from: nil)
- return layoutManager.textOffsetAtPoint(localPoint) ?? NSNotFound
- }
-
- /// Returns the fraction of the distance from the left side of the character to the right side that a given point
- /// lies.
- ///
- /// For purposes such as dragging out a selection or placing the insertion point, a partial percentage less than or
- /// equal to 0.5 indicates that aPoint should be considered as falling before the glyph; a partial percentage
- /// greater than 0.5 indicates that it should be considered as falling after the glyph. If the nearest glyph doesn’t
- /// lie under aPoint at all (for example, if aPoint is beyond the beginning or end of a line), this ratio is 0 or 1.
- ///
- /// For example, if the glyph stream contains the glyphs “A” and “b”, with the width of “A” being 13 points, and
- /// aPoint is 8 points from the left side of “A”, then the fraction of the distance is 8/13, or 0.615. In this
- /// case, the aPoint should be considered as falling between “A” and “b” for purposes such as dragging out a
- /// selection or placing the insertion point.
- ///
- /// - Parameter point: The point to test.
- /// - Returns: The fraction of the distance aPoint is through the glyph in which it lies. May be 0 or 1 if aPoint
- /// is not within the bounding rectangle of a glyph (0 if the point is to the left or above the glyph;
- /// 1 if it's to the right or below).
- @objc public func fractionOfDistanceThroughGlyph(for point: NSPoint) -> CGFloat {
- guard let offset = layoutManager.textOffsetAtPoint(point),
- let characterRect = layoutManager.rectForOffset(offset) else { return 0 }
- return (point.x - characterRect.minX)/characterRect.width
- }
-
- /// Returns the baseline position of a given character relative to the origin of rectangle returned by
- /// `firstRect(forCharacterRange:actualRange:)`.
- /// - Parameter anIndex: Index of the character whose baseline is tested.
- /// - Returns: The vertical distance, in points, between the baseline of the character at anIndex and the rectangle
- /// origin.
- @objc public func baselineDeltaForCharacter(at anIndex: Int) -> CGFloat {
- // Return the `descent` value from the line fragment at the index
- guard let linePosition = layoutManager.textLineForOffset(anIndex),
- let fragmentPosition = linePosition.data.typesetter.lineFragments.getLine(
- atOffset: anIndex - linePosition.range.location
- ) else {
- return 0
- }
- return fragmentPosition.data.descent
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift b/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift
deleted file mode 100644
index 9a0c7cec3..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+ReplaceCharacters.swift
+++ /dev/null
@@ -1,96 +0,0 @@
-//
-// TextView+ReplaceCharacters.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/3/23.
-//
-
-import AppKit
-import TextStory
-
-extension TextView {
- /// Replace the characters in the given ranges with the given string.
- /// - Parameters:
- /// - ranges: The ranges to replace
- /// - string: The string to insert in the ranges.
- /// - skipUpdateSelection: Skips the selection update step
- public func replaceCharacters(
- in ranges: [NSRange],
- with string: String,
- skipUpdateSelection: Bool = false
- ) {
- guard isEditable else { return }
- NotificationCenter.default.post(name: Self.textWillChangeNotification, object: self)
- textStorage.beginEditing()
-
- func valid(range: NSRange, string: String) -> Bool {
- (!range.isEmpty || !string.isEmpty) &&
- (delegate?.textView(self, shouldReplaceContentsIn: range, with: string) ?? true)
- }
-
- // Can't insert an empty string into an empty range. One must be not empty
- for range in ranges.sorted(by: { $0.location > $1.location }) where valid(range: range, string: string) {
- delegate?.textView(self, willReplaceContentsIn: range, with: string)
-
- _undoManager?.registerMutation(
- TextMutation(string: string as String, range: range, limit: textStorage.length)
- )
- textStorage.replaceCharacters(
- in: range,
- with: NSAttributedString(string: string, attributes: typingAttributes)
- )
- if !skipUpdateSelection {
- selectionManager.didReplaceCharacters(in: range, replacementLength: (string as NSString).length)
- }
-
- delegate?.textView(self, didReplaceContentsIn: range, with: string)
- }
-
- textStorage.endEditing()
-
- if !skipUpdateSelection {
- selectionManager.notifyAfterEdit()
- }
- NotificationCenter.default.post(name: Self.textDidChangeNotification, object: self)
-
- // `scrollSelectionToVisible` is a little expensive to call every time. Instead we just check if the first
- // selection is entirely visible. `.contains` checks that all points in the rect are inside.
- if let selection = selectionManager.textSelections.first, !visibleRect.contains(selection.boundingRect) {
- scrollSelectionToVisible()
- }
- }
-
- /// Replace the characters in a range with a new string.
- /// - Parameters:
- /// - range: The range to replace.
- /// - string: The string to insert in the range.
- /// - skipUpdateSelection: Skips the selection update step
- public func replaceCharacters(
- in range: NSRange,
- with string: String,
- skipUpdateSelection: Bool = false
- ) {
- replaceCharacters(in: [range], with: string, skipUpdateSelection: skipUpdateSelection)
- }
-
- /// Iterates over all text selections in the `TextView` and applies the provided callback.
- ///
- /// This method is typically used when you need to perform an operation on each text selection in the editor,
- /// such as adjusting indentation, or other selection-based operations. The callback
- /// is executed for each selection, and you can modify the selection or perform related tasks.
- ///
- /// - Parameters:
- /// - callback: A closure that will be executed for each selection in the `TextView`. It takes two parameters:
- /// a `TextView` instance, allowing access to the view's properties and methods and a
- /// `TextSelectionManager.TextSelection` representing the current selection to operate on.
- ///
- /// - Note: The selections are iterated in reverse order, so modifications to earlier selections won't affect later
- /// ones. The method automatically calls `notifyAfterEdit()` on the `selectionManager` after all
- /// selections are processed.
- public func editSelections(callback: (TextView, TextSelectionManager.TextSelection) -> Void) {
- for textSelection in selectionManager.textSelections.reversed() {
- callback(self, textSelection)
- }
- selectionManager.notifyAfterEdit(force: true)
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift b/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift
deleted file mode 100644
index bc5274ed3..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+ScrollToVisible.swift
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// TextView+ScrollToVisible.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/15/24.
-//
-
-import Foundation
-import AppKit
-
-extension TextView {
- fileprivate typealias Direction = TextSelectionManager.Direction
- fileprivate typealias TextSelection = TextSelectionManager.TextSelection
-
- /// Scrolls the upmost selection to the visible rect if `scrollView` is not `nil`.
- public func scrollSelectionToVisible() {
- guard let scrollView else {
- return
- }
-
- // There's a bit of a chicken-and-the-egg issue going on here. We need to know the rect to scroll to, but we
- // can't know the exact rect to make visible without laying out the text. Then, once text is laid out the
- // selection rect may be different again. To solve this, we loop until the frame doesn't change after a layout
- // pass and scroll to that rect.
-
- var lastFrame: CGRect = .zero
- while let boundingRect = getSelection()?.boundingRect, lastFrame != boundingRect {
- lastFrame = boundingRect
- layoutManager.layoutLines()
- selectionManager.updateSelectionViews()
- selectionManager.drawSelections(in: visibleRect)
-
- if lastFrame != .zero {
- scrollView.contentView.scrollToVisible(lastFrame)
- scrollView.reflectScrolledClipView(scrollView.contentView)
- }
- }
- }
-
- /// Scrolls the view to the specified range.
- ///
- /// - Parameters:
- /// - range: The range to scroll to.
- /// - center: A flag that determines if the range should be centered in the view. Defaults to `true`.
- ///
- /// If `center` is `true`, the range will be centered in the visible area.
- /// If `center` is `false`, the range will be aligned at the top-left of the view.
- public func scrollToRange(_ range: NSRange, center: Bool = true) {
- guard let scrollView else { return }
-
- guard let boundingRect = layoutManager.rectForOffset(range.location) else { return }
-
- // Check if the range is already visible
- if visibleRect.contains(boundingRect) {
- return // No scrolling needed
- }
-
- // Calculate the target offset based on the center flag
- let targetOffset: CGPoint
- if center {
- targetOffset = CGPoint(
- x: max(boundingRect.midX - visibleRect.width / 2, 0),
- y: max(boundingRect.midY - visibleRect.height / 2, 0)
- )
- } else {
- targetOffset = CGPoint(
- x: max(boundingRect.origin.x, 0),
- y: max(boundingRect.origin.y, 0)
- )
- }
-
- var lastFrame: CGRect = .zero
-
- // Set a timeout to avoid an infinite loop
- let timeout: TimeInterval = 0.5
- let startTime = Date()
-
- // Adjust layout until stable
- while let newRect = layoutManager.rectForOffset(range.location),
- lastFrame != newRect,
- Date().timeIntervalSince(startTime) < timeout {
- lastFrame = newRect
- layoutManager.layoutLines()
- selectionManager.updateSelectionViews()
- selectionManager.drawSelections(in: visibleRect)
- }
-
- // Scroll to make the range appear at the desired position
- if lastFrame != .zero {
- let animated = false // feature flag
- if animated {
- NSAnimationContext.runAnimationGroup { context in
- context.duration = 0.15 // Adjust duration as needed
- context.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
- scrollView.contentView.animator().setBoundsOrigin(targetOffset)
- }
- } else {
- scrollView.contentView.scroll(to: targetOffset)
- }
- }
- }
-
- /// Get the selection that should be scrolled to visible for the current text selection.
- /// - Returns: The the selection to scroll to.
- private func getSelection() -> TextSelection? {
- selectionManager
- .textSelections
- .sorted(by: { $0.range.max > $1.range.max }) // Get the lowest one.
- .first
- }
-
- /// Returns the offset that isn't the pivot of the selection.
- /// - Parameter selection: The selection to use.
- /// - Returns: The offset suitable for scrolling to.
- private func offsetNotPivot(_ selection: TextSelection) -> Int {
- guard let pivot = selection.pivot else {
- return selection.range.location
- }
- if selection.range.location == pivot {
- return selection.range.max
- } else {
- return selection.range.location
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Select.swift b/Sources/CodeEditTextView/TextView/TextView+Select.swift
deleted file mode 100644
index 390b6225d..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Select.swift
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// TextView+Select.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 10/20/23.
-//
-
-import AppKit
-import TextStory
-
-extension TextView {
- override public func selectAll(_ sender: Any?) {
- selectionManager.setSelectedRange(documentRange)
- unmarkTextIfNeeded()
- needsDisplay = true
- }
-
- override public func selectLine(_ sender: Any?) {
- let newSelections = selectionManager.textSelections.compactMap { textSelection -> NSRange? in
- guard let linePosition = layoutManager.textLineForOffset(textSelection.range.location) else {
- return nil
- }
- return linePosition.range
- }
- selectionManager.setSelectedRanges(newSelections)
- unmarkTextIfNeeded()
- needsDisplay = true
- }
-
- override public func selectWord(_ sender: Any?) {
- let newSelections = selectionManager.textSelections.compactMap { (textSelection) -> NSRange? in
- guard textSelection.range.isEmpty else {
- return nil
- }
- return findWordBoundary(at: textSelection.range.location)
- }
- selectionManager.setSelectedRanges(newSelections)
- unmarkTextIfNeeded()
- needsDisplay = true
- }
-
- /// Given a position, find the range of the word that exists at that position.
- internal func findWordBoundary(at position: Int) -> NSRange {
- guard position >= 0 && position < textStorage.length,
- let char = textStorage.substring(
- from: NSRange(location: position, length: 1)
- )?.first else {
- return NSRange(location: position, length: 0)
- }
-
- let charSet = CharacterSet(charactersIn: String(char))
- let characterSet: CharacterSet
-
- if CharacterSet.codeIdentifierCharacters.isSuperset(of: charSet) {
- characterSet = .codeIdentifierCharacters
- } else if CharacterSet.whitespaces.isSuperset(of: charSet) {
- characterSet = .whitespaces
- } else if CharacterSet.newlines.isSuperset(of: charSet) {
- characterSet = .newlines
- } else if CharacterSet.punctuationCharacters.isSuperset(of: charSet) {
- characterSet = .punctuationCharacters
- } else {
- return NSRange(location: position, length: 0)
- }
-
- guard let start = textStorage.findPrecedingOccurrenceOfCharacter(in: characterSet.inverted, from: position),
- let end = textStorage.findNextOccurrenceOfCharacter(in: characterSet.inverted, from: position) else {
- return NSRange(location: position, length: 0)
- }
-
- return NSRange(start: start, end: end)
- }
-
- /// Given a position, find the range of the entire line that exists at that position.
- internal func findLineBoundary(at position: Int) -> NSRange {
- guard let linePosition = layoutManager.textLineForOffset(position) else {
- return NSRange(location: position, length: 0)
- }
- return linePosition.range
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+SetText.swift b/Sources/CodeEditTextView/TextView/TextView+SetText.swift
deleted file mode 100644
index 6ba66916a..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+SetText.swift
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// TextView+SetText.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 1/12/25.
-//
-
-import AppKit
-
-extension TextView {
- /// Sets the text view's text to a new value.
- /// - Parameter text: The new contents of the text view.
- public func setText(_ text: String) {
- let newStorage = NSTextStorage(string: text)
- self.setTextStorage(newStorage)
- }
-
- /// Set a new text storage object for the view.
- /// - Parameter textStorage: The new text storage to use.
- public func setTextStorage(_ textStorage: NSTextStorage) {
- self.textStorage = textStorage
-
- if let storageDelegate = textStorage.delegate as? MultiStorageDelegate {
- self.storageDelegate = storageDelegate
- }
-
- subviews.forEach { view in
- view.removeFromSuperview()
- }
-
- textStorage.addAttributes(typingAttributes, range: documentRange)
- layoutManager.textStorage = textStorage
- layoutManager.reset()
- storageDelegate.addDelegate(layoutManager)
-
- selectionManager.textStorage = textStorage
- selectionManager.setSelectedRanges(selectionManager.textSelections.map { $0.range })
- NotificationCenter.default.post(
- Notification(
- name: TextSelectionManager.selectionChangedNotification,
- object: selectionManager
- )
- )
-
- _undoManager?.clearStack()
-
- textStorage.delegate = storageDelegate
- needsDisplay = true
- needsLayout = true
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+Setup.swift b/Sources/CodeEditTextView/TextView/TextView+Setup.swift
deleted file mode 100644
index a17d39026..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+Setup.swift
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// TextView+Setup.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/15/23.
-//
-
-import AppKit
-
-extension TextView {
- func setUpLayoutManager(lineHeightMultiplier: CGFloat, wrapLines: Bool) -> TextLayoutManager {
- TextLayoutManager(
- textStorage: textStorage,
- lineHeightMultiplier: lineHeightMultiplier,
- wrapLines: wrapLines,
- textView: self,
- delegate: self
- )
- }
-
- func setUpSelectionManager() -> TextSelectionManager {
- TextSelectionManager(
- layoutManager: layoutManager,
- textStorage: textStorage,
- textView: self,
- delegate: self
- )
- }
-
- func setUpScrollListeners(scrollView: NSScrollView) {
- NotificationCenter.default.addObserver(
- self,
- selector: #selector(scrollViewWillStartScroll),
- name: NSScrollView.willStartLiveScrollNotification,
- object: scrollView
- )
-
- NotificationCenter.default.addObserver(
- self,
- selector: #selector(scrollViewDidEndScroll),
- name: NSScrollView.didEndLiveScrollNotification,
- object: scrollView
- )
-
- NotificationCenter.default.addObserver(
- forName: NSView.boundsDidChangeNotification,
- object: scrollView.contentView,
- queue: .main
- ) { [weak self] _ in
- self?.updatedViewport(self?.visibleRect ?? .zero)
- }
-
- NotificationCenter.default.addObserver(
- forName: NSView.frameDidChangeNotification,
- object: scrollView.contentView,
- queue: .main
- ) { [weak self] _ in
- self?.updatedViewport(self?.visibleRect ?? .zero)
- }
- }
-
- @objc func scrollViewWillStartScroll() {
- if #available(macOS 14.0, *) {
- inputContext?.textInputClientWillStartScrollingOrZooming()
- }
- }
-
- @objc func scrollViewDidEndScroll() {
- if #available(macOS 14.0, *) {
- inputContext?.textInputClientDidEndScrollingOrZooming()
- }
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+StorageDelegate.swift b/Sources/CodeEditTextView/TextView/TextView+StorageDelegate.swift
deleted file mode 100644
index f35ebf1d9..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+StorageDelegate.swift
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// TextView+StorageDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 11/8/23.
-//
-
-import AppKit
-
-extension TextView {
- public func addStorageDelegate(_ delegate: NSTextStorageDelegate) {
- storageDelegate.addDelegate(delegate)
- }
-
- public func removeStorageDelegate(_ delegate: NSTextStorageDelegate) {
- storageDelegate.removeDelegate(delegate)
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+TextLayoutManagerDelegate.swift b/Sources/CodeEditTextView/TextView/TextView+TextLayoutManagerDelegate.swift
deleted file mode 100644
index fcea15fd5..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+TextLayoutManagerDelegate.swift
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// TextView+TextLayoutManagerDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/15/23.
-//
-
-import AppKit
-
-extension TextView: TextLayoutManagerDelegate {
- public func layoutManagerHeightDidUpdate(newHeight: CGFloat) {
- updateFrameIfNeeded()
- }
-
- public func layoutManagerMaxWidthDidChange(newWidth: CGFloat) {
- updateFrameIfNeeded()
- }
-
- public func layoutManagerTypingAttributes() -> [NSAttributedString.Key: Any] {
- typingAttributes
- }
-
- public func textViewportSize() -> CGSize {
- if let scrollView = scrollView {
- var size = scrollView.contentSize
- size.height -= scrollView.contentInsets.top + scrollView.contentInsets.bottom
- return size
- } else {
- return CGSize(width: CGFloat.infinity, height: CGFloat.infinity)
- }
- }
-
- public func layoutManagerYAdjustment(_ yAdjustment: CGFloat) {
- var point = scrollView?.documentVisibleRect.origin ?? .zero
- point.y += yAdjustment
- scrollView?.documentView?.scroll(point)
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+TextSelectionManagerDelegate.swift b/Sources/CodeEditTextView/TextView/TextView+TextSelectionManagerDelegate.swift
deleted file mode 100644
index ff1057271..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+TextSelectionManagerDelegate.swift
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-// TextView+TextSelectionManagerDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/15/24.
-//
-
-import Foundation
-
-extension TextView: TextSelectionManagerDelegate {
- public func setNeedsDisplay() {
- self.setNeedsDisplay(frame)
- }
-
- public func estimatedLineHeight() -> CGFloat {
- layoutManager.estimateLineHeight()
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView+UndoRedo.swift b/Sources/CodeEditTextView/TextView/TextView+UndoRedo.swift
deleted file mode 100644
index 14d803fba..000000000
--- a/Sources/CodeEditTextView/TextView/TextView+UndoRedo.swift
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// TextView+UndoRedo.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/21/23.
-//
-
-import AppKit
-
-extension TextView {
- public func setUndoManager(_ newManager: CEUndoManager) {
- self._undoManager = newManager
- self._undoManager?.setTextView(self)
- }
-
- override public var undoManager: UndoManager? {
- _undoManager
- }
-
- @objc func undo(_ sender: AnyObject?) {
- if allowsUndo {
- undoManager?.undo()
- }
- }
-
- @objc func redo(_ sender: AnyObject?) {
- if allowsUndo {
- undoManager?.redo()
- }
- }
-
-}
diff --git a/Sources/CodeEditTextView/TextView/TextView.swift b/Sources/CodeEditTextView/TextView/TextView.swift
deleted file mode 100644
index 14ed3914e..000000000
--- a/Sources/CodeEditTextView/TextView/TextView.swift
+++ /dev/null
@@ -1,386 +0,0 @@
-//
-// TextView.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/21/23.
-//
-
-import AppKit
-import TextStory
-
-/// # Text View
-///
-/// A view that draws and handles user interactions with text.
-/// Optimized for line-based documents, does not attempt to have feature parity with `NSTextView`.
-///
-/// The text view maintains multiple helper classes for selecting, editing, and laying out text.
-/// ```
-/// TextView
-/// |-> NSTextStorage Base text storage.
-/// |-> TextLayoutManager Creates, manages, and lays out text lines.
-/// | |-> TextLineStorage Extremely fast object for storing and querying lines of text. Does not store text.
-/// | |-> [TextLine] Represents a line of text.
-/// | | |-> Typesetter Calculates line breaks and other layout information for text lines.
-/// | | |-> [LineFragment] Represents a visual line of text, stored in an internal line storage object.
-/// | |-> [LineFragmentView] Reusable line fragment view that draws a line fragment.
-/// | |-> MarkedRangeManager Manages marked ranges, updates layout if needed.
-/// |
-/// |-> TextSelectionManager Maintains, modifies, and renders text selections
-/// | |-> [TextSelection] Represents a range of selected text.
-/// ```
-///
-/// Conforms to [`NSTextContent`](https://developer.apple.com/documentation/appkit/nstextcontent) and
-/// [`NSTextInputClient`](https://developer.apple.com/documentation/appkit/nstextinputclient) to work well with system
-/// text interactions such as inserting text and marked text.
-///
-open class TextView: NSView, NSTextContent {
- // MARK: - Statics
-
- /// The default typing attributes:
- /// - font: System font, size 12
- /// - foregroundColor: System text color
- /// - kern: 0.0
- public static var defaultTypingAttributes: [NSAttributedString.Key: Any] {
- [.font: NSFont.systemFont(ofSize: 12), .foregroundColor: NSColor.textColor, .kern: 0.0]
- }
-
- // swiftlint:disable:next line_length
- public static let textDidChangeNotification: Notification.Name = .init(rawValue: "com.CodeEdit.TextView.TextDidChangeNotification")
-
- // swiftlint:disable:next line_length
- public static let textWillChangeNotification: Notification.Name = .init(rawValue: "com.CodeEdit.TextView.TextWillChangeNotification")
-
- // MARK: - Configuration
-
- /// The string for the text view.
- public var string: String {
- get {
- textStorage.string
- }
- set {
- textStorage.setAttributedString(NSAttributedString(string: newValue, attributes: typingAttributes))
- }
- }
-
- /// The attributes to apply to inserted text.
- public var typingAttributes: [NSAttributedString.Key: Any] = [:] {
- didSet {
- setNeedsDisplay()
- layoutManager?.setNeedsLayout()
- }
- }
-
- /// The default font of the text view.
- /// - Note: Setting the font for the text view will update the font as the user types. To change the font for the
- /// entire view, update the `font` attribute in ``TextView/textStorage``.
- public var font: NSFont {
- get {
- (typingAttributes[.font] as? NSFont) ?? NSFont.systemFont(ofSize: 12)
- }
- set {
- typingAttributes[.font] = newValue
- layoutManager?.setNeedsLayout()
- setNeedsDisplay()
- }
- }
-
- /// The text color of the text view.
- /// - Note: Setting the text color for the text view will update the text color as the user types. To change the
- /// text color for the entire view, update the `foregroundColor` attribute in ``TextView/textStorage``.
- public var textColor: NSColor {
- get {
- (typingAttributes[.foregroundColor] as? NSColor) ?? NSColor.textColor
- }
- set {
- typingAttributes[.foregroundColor] = newValue
- }
- }
-
- /// The line height as a multiple of the font's line height. 1.0 represents no change in height.
- public var lineHeight: CGFloat {
- get {
- layoutManager?.lineHeightMultiplier ?? 1.0
- }
- set {
- layoutManager?.lineHeightMultiplier = newValue
- }
- }
-
- /// The amount of extra space to add when overscroll is enabled, as a percentage of the viewport height
- public var overscrollAmount: CGFloat = 0.5 {
- didSet {
- if overscrollAmount < 0 {
- overscrollAmount = 0
- }
- updateFrameIfNeeded()
- }
- }
-
- /// Whether or not the editor should wrap lines
- public var wrapLines: Bool {
- get {
- layoutManager?.wrapLines ?? false
- }
- set {
- layoutManager?.wrapLines = newValue
- }
- }
-
- /// A multiplier that determines the amount of space between characters. `1.0` indicates no space,
- /// `2.0` indicates one character of space between other characters.
- public var letterSpacing: Double {
- didSet {
- kern = fontCharWidth * (letterSpacing - 1.0)
- layoutManager.setNeedsLayout()
- }
- }
-
- /// Determines if the text view's content can be edited.
- public var isEditable: Bool {
- didSet {
- setNeedsDisplay()
- selectionManager.updateSelectionViews()
- if !isEditable && isFirstResponder {
- _ = resignFirstResponder()
- }
- }
- }
-
- /// Determines if the text view responds to selection events, such as clicks.
- public var isSelectable: Bool = true {
- didSet {
- if !isSelectable {
- selectionManager.removeCursors()
- if isFirstResponder {
- _ = resignFirstResponder()
- }
- }
- setNeedsDisplay()
- }
- }
-
- /// The edge insets for the text view. This value insets every piece of drawable content in the view, including
- /// selection rects.
- ///
- /// To further inset the text from the edge, without modifying how selections are inset, use ``textInsets``
- public var edgeInsets: HorizontalEdgeInsets {
- get {
- selectionManager.edgeInsets
- }
- set {
- layoutManager.edgeInsets = newValue + textInsets
- selectionManager.edgeInsets = newValue
- }
- }
-
- /// Insets just drawn text from the horizontal edges. This is in addition to the insets in ``edgeInsets``, but does
- /// not apply to other drawn content.
- public var textInsets: HorizontalEdgeInsets {
- get {
- layoutManager.edgeInsets - selectionManager.edgeInsets
- }
- set {
- layoutManager.edgeInsets = edgeInsets + newValue
- }
- }
-
- /// The kern to use for characters. Defaults to `0.0` and is updated when `letterSpacing` is set.
- /// - Note: Setting the kern for the text view will update the kern as the user types. To change the
- /// kern for the entire view, update the `kern` attribute in ``TextView/textStorage``.
- public var kern: CGFloat {
- get {
- typingAttributes[.kern] as? CGFloat ?? 0
- }
- set {
- typingAttributes[.kern] = newValue
- }
- }
-
- /// The strategy to use when breaking lines. Defaults to ``LineBreakStrategy/word``.
- public var lineBreakStrategy: LineBreakStrategy {
- get {
- layoutManager?.lineBreakStrategy ?? .word
- }
- set {
- layoutManager.lineBreakStrategy = newValue
- }
- }
-
- /// Determines if the text view uses the macOS system cursor or a ``CursorView`` for cursors.
- ///
- /// - Important: Only available after macOS 14.
- public var useSystemCursor: Bool {
- get {
- selectionManager?.useSystemCursor ?? false
- }
- set {
- guard #available(macOS 14, *) else {
- logger.warning("useSystemCursor only available after macOS 14.")
- return
- }
- selectionManager?.useSystemCursor = newValue
- }
- }
-
- /// The attributes used to render marked text.
- /// Defaults to a single underline.
- public var markedTextAttributes: [NSAttributedString.Key: Any] {
- get {
- layoutManager.markedTextManager.markedTextAttributes
- }
- set {
- layoutManager.markedTextManager.markedTextAttributes = newValue
- layoutManager.layoutLines() // Layout lines to refresh attributes. This should be rare.
- }
- }
-
- open var contentType: NSTextContentType?
-
- /// The text view's delegate.
- public weak var delegate: TextViewDelegate?
-
- /// The text storage object for the text view.
- /// - Warning: Do not update the text storage object directly. Doing so will very likely break the text view's
- /// layout system. Use methods like ``TextView/replaceCharacters(in:with:)-58mt7`` or
- /// ``TextView/insertText(_:)`` to modify content.
- package(set) public var textStorage: NSTextStorage!
-
- /// The layout manager for the text view.
- package(set) public var layoutManager: TextLayoutManager!
-
- /// The selection manager for the text view.
- package(set) public var selectionManager: TextSelectionManager!
-
- /// Manages emphasized text ranges in the text view
- public var emphasisManager: EmphasisManager?
-
- // MARK: - Private Properties
-
- var isFirstResponder: Bool = false
-
- /// When dragging to create a selection, these enable us to scroll the view as the user drags outside the view's
- /// bounds.
- var mouseDragAnchor: CGPoint?
- var mouseDragTimer: Timer?
- var cursorSelectionMode: CursorSelectionMode = .character
-
- /// When we receive a drag operation we add a temporary cursor view not managed by the selection manager.
- /// This is the reference to that view, it is cleaned up when a drag ends.
- var draggingCursorView: NSView?
- var isDragging: Bool = false
-
- var isOptionPressed: Bool = false
-
- private var fontCharWidth: CGFloat {
- (" " as NSString).size(withAttributes: [.font: font]).width
- }
-
- internal(set) public var _undoManager: CEUndoManager?
-
- @objc dynamic open var allowsUndo: Bool
-
- var scrollView: NSScrollView? {
- guard let enclosingScrollView, enclosingScrollView.documentView == self else { return nil }
- return enclosingScrollView
- }
-
- var storageDelegate: MultiStorageDelegate!
-
- // MARK: - Init
-
- /// Initializes the text view.
- /// - Parameters:
- /// - string: The contents of the text view.
- /// - font: The default font.
- /// - textColor: The default text color.
- /// - lineHeightMultiplier: The multiplier to use for line heights.
- /// - wrapLines: Determines how the view will wrap lines to the viewport.
- /// - isEditable: Determines if the view is editable.
- /// - isSelectable: Determines if the view is selectable.
- /// - letterSpacing: Sets the letter spacing on the view.
- /// - useSystemCursor: Set to true to use the system cursor. Only available in macOS >= 14.
- /// - delegate: The text view's delegate.
- public init(
- string: String,
- font: NSFont = .monospacedSystemFont(ofSize: 12, weight: .regular),
- textColor: NSColor = .labelColor,
- lineHeightMultiplier: CGFloat = 1.0,
- wrapLines: Bool = true,
- isEditable: Bool = true,
- isSelectable: Bool = true,
- letterSpacing: Double = 1.0,
- useSystemCursor: Bool = false,
- delegate: TextViewDelegate? = nil
- ) {
- self.textStorage = NSTextStorage(string: string)
- self.delegate = delegate
- self.isEditable = isEditable
- self.isSelectable = isSelectable
- self.letterSpacing = letterSpacing
- self.allowsUndo = true
-
- super.init(frame: .zero)
-
- self.emphasisManager = EmphasisManager(textView: self)
- if let storageDelegate = textStorage.delegate as? MultiStorageDelegate {
- self.storageDelegate = storageDelegate
- } else {
- self.storageDelegate = MultiStorageDelegate()
- }
-
- wantsLayer = true
- postsFrameChangedNotifications = true
- postsBoundsChangedNotifications = true
- autoresizingMask = [.width, .height]
- registerForDraggedTypes([.string, .fileContents, .html, .multipleTextSelection, .tabularText, .rtf])
-
- self.typingAttributes = [
- .font: font,
- .foregroundColor: textColor,
- ]
-
- textStorage.addAttributes(typingAttributes, range: documentRange)
- textStorage.delegate = storageDelegate
-
- layoutManager = setUpLayoutManager(lineHeightMultiplier: lineHeightMultiplier, wrapLines: wrapLines)
- storageDelegate.addDelegate(layoutManager)
-
- selectionManager = setUpSelectionManager()
- selectionManager.useSystemCursor = useSystemCursor
-
- layoutManager.attachments.setUpSelectionListener(for: selectionManager)
-
- _undoManager = CEUndoManager(textView: self)
-
- layoutManager.layoutLines()
- setUpDragGesture()
- }
-
- required public init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- public var documentRange: NSRange {
- NSRange(location: 0, length: textStorage.length)
- }
-
- // MARK: - Hit test
-
- /// Returns the responding view for a given point.
- /// - Parameter point: The point to find.
- /// - Returns: A view at the given point, if any.
- override public func hitTest(_ point: NSPoint) -> NSView? {
- if visibleRect.contains(point) {
- return self
- } else {
- return super.hitTest(point)
- }
- }
-
- deinit {
- layoutManager = nil
- selectionManager = nil
- textStorage = nil
- NotificationCenter.default.removeObserver(self)
- }
-}
diff --git a/Sources/CodeEditTextView/TextView/TextViewDelegate.swift b/Sources/CodeEditTextView/TextView/TextViewDelegate.swift
deleted file mode 100644
index 244cd182d..000000000
--- a/Sources/CodeEditTextView/TextView/TextViewDelegate.swift
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// TextViewDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/3/23.
-//
-
-import Foundation
-
-public protocol TextViewDelegate: AnyObject {
- func textView(_ textView: TextView, willReplaceContentsIn range: NSRange, with string: String)
- func textView(_ textView: TextView, didReplaceContentsIn range: NSRange, with string: String)
- func textView(_ textView: TextView, shouldReplaceContentsIn range: NSRange, with string: String) -> Bool
-}
-
-public extension TextViewDelegate {
- func textView(_ textView: TextView, willReplaceContentsIn range: NSRange, with string: String) { }
- func textView(_ textView: TextView, didReplaceContentsIn range: NSRange, with string: String) { }
- func textView(_ textView: TextView, shouldReplaceContentsIn range: NSRange, with string: String) -> Bool { true }
-}
diff --git a/Sources/CodeEditTextView/Utils/CEUndoManager.swift b/Sources/CodeEditTextView/Utils/CEUndoManager.swift
deleted file mode 100644
index 2af68d9e0..000000000
--- a/Sources/CodeEditTextView/Utils/CEUndoManager.swift
+++ /dev/null
@@ -1,276 +0,0 @@
-//
-// CEUndoManager.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 7/8/23.
-//
-
-import AppKit
-import TextStory
-
-/// Maintains a history of edits applied to the editor and allows for undo/redo actions using those edits.
-///
-/// This object also groups edits into sequences that make for a better undo/redo editing experience such as:
-/// - Breaking undo groups on newlines
-/// - Grouping pasted text
-///
-/// If needed, the automatic undo grouping can be overridden using the `beginGrouping()` and `endGrouping()` methods.
-public class CEUndoManager: UndoManager {
- /// Represents a group of mutations that should be treated as one mutation when undoing/redoing.
- private struct UndoGroup {
- var mutations: [Mutation]
- }
-
- /// A single undo mutation.
- private struct Mutation {
- var mutation: TextMutation
- var inverse: TextMutation
- }
-
- private var _isUndoing: Bool = false
- private var _isRedoing: Bool = false
-
- override public var isUndoing: Bool { _isUndoing }
- override public var isRedoing: Bool { _isRedoing }
-
- override public var undoCount: Int { undoStack.count }
- override public var redoCount: Int { redoStack.count }
-
- override public var canUndo: Bool { !undoStack.isEmpty }
- override public var canRedo: Bool { !redoStack.isEmpty }
-
- /// A stack of operations that can be undone.
- private var undoStack: [UndoGroup] = []
- /// A stack of operations that can be redone.
- private var redoStack: [UndoGroup] = []
-
- private weak var textView: TextView?
- private(set) public var isGrouping: Bool = false
-
- /// After ``endUndoGrouping`` is called, we'd expect the next mutation to be exclusive no matter what. This
- /// flag facilitates that, and is set by ``endUndoGrouping``
- private var shouldBreakNextGroup: Bool = false
-
- /// True when the manager is ignoring mutations.
- private var isDisabled: Bool = false
-
- // MARK: - Init
-
- override public init() { }
-
- convenience init(textView: TextView) {
- self.init()
- self.textView = textView
- }
-
- // MARK: - Undo/Redo
-
- /// Performs an undo operation if there is one available.
- override public func undo() {
- guard !isDisabled, let textView else {
- return
- }
-
- guard let item = undoStack.popLast() else {
- NSSound.beep()
- return
- }
-
- _isUndoing = true
- NotificationCenter.default.post(name: .NSUndoManagerWillUndoChange, object: self)
- textView.textStorage.beginEditing()
- for mutation in item.mutations.reversed() {
- textView.replaceCharacters(
- in: mutation.inverse.range,
- with: mutation.inverse.string,
- skipUpdateSelection: true
- )
- }
- textView.textStorage.endEditing()
-
- updateSelectionsForMutations(mutations: item.mutations.map { $0.mutation })
- textView.scrollSelectionToVisible()
-
- NotificationCenter.default.post(name: .NSUndoManagerDidUndoChange, object: self)
- redoStack.append(item)
- _isUndoing = false
- }
-
- /// Performs a redo operation if there is one available.
- override public func redo() {
- guard !isDisabled, let textView else {
- return
- }
-
- guard let item = redoStack.popLast() else {
- NSSound.beep()
- return
- }
-
- _isRedoing = true
- NotificationCenter.default.post(name: .NSUndoManagerWillRedoChange, object: self)
- textView.selectionManager.removeCursors()
- textView.textStorage.beginEditing()
- for mutation in item.mutations {
- textView.replaceCharacters(
- in: mutation.mutation.range,
- with: mutation.mutation.string,
- skipUpdateSelection: true
- )
- }
- textView.textStorage.endEditing()
-
- updateSelectionsForMutations(mutations: item.mutations.map { $0.inverse })
- textView.scrollSelectionToVisible()
-
- NotificationCenter.default.post(name: .NSUndoManagerDidRedoChange, object: self)
- undoStack.append(item)
- _isRedoing = false
- }
-
- /// We often undo/redo a group of mutations that contain updated ranges that are next to each other but for a user
- /// should be one continuous range. This merges those ranges into a set of disjoint ranges before updating the
- /// selection manager.
- private func updateSelectionsForMutations(mutations: [TextMutation]) {
- if mutations.reduce(0, { $0 + $1.range.length }) == 0 {
- if let minimumMutation = mutations.min(by: { $0.range.location < $1.range.location }) {
- // If the mutations are only deleting text (no replacement), we just place the cursor at the last range,
- // since all the ranges are the same but the other method will return no ranges (empty range).
- textView?.selectionManager.setSelectedRange(
- NSRange(location: minimumMutation.range.location, length: 0)
- )
- }
- } else {
- let mergedRanges = mutations.reduce(into: IndexSet(), { set, mutation in
- set.insert(range: mutation.range)
- })
- textView?.selectionManager.setSelectedRanges(mergedRanges.rangeView.map { NSRange($0) })
- }
- }
-
- /// Clears the undo/redo stacks.
- public func clearStack() {
- undoStack.removeAll()
- redoStack.removeAll()
- }
-
- // MARK: - Mutations
-
- public override func registerUndo(withTarget target: Any, selector: Selector, object anObject: Any?) {
- // no-op, but just in case to save resources:
- removeAllActions()
- }
-
- /// Registers a mutation into the undo stack.
- ///
- /// Calling this method while the manager is in an undo/redo operation will result in a no-op.
- /// - Parameter mutation: The mutation to register for undo/redo
- public func registerMutation(_ mutation: TextMutation) {
- removeAllActions()
- guard let textView,
- let textStorage = textView.textStorage,
- !isUndoing,
- !isRedoing else {
- return
- }
- let newMutation = Mutation(mutation: mutation, inverse: textStorage.inverseMutation(for: mutation))
- // We can continue a group if:
- // - A group exists
- // - We're not direct to break the current group
- // - We're forced grouping OR we automagically detect we can group.
- if !undoStack.isEmpty,
- let lastMutation = undoStack.last?.mutations.last,
- !shouldBreakNextGroup,
- isGrouping || shouldContinueGroup(newMutation, lastMutation: lastMutation) {
- undoStack[undoStack.count - 1].mutations.append(newMutation)
- } else {
- undoStack.append(UndoGroup(mutations: [newMutation]))
- shouldBreakNextGroup = false
- }
- redoStack.removeAll()
- }
-
- // MARK: - Grouping
-
- /// Groups all incoming mutations.
- override public func beginUndoGrouping() {
- guard !isGrouping else { return }
- isGrouping = true
- // This is a new undo group, break for it.
- shouldBreakNextGroup = true
- }
-
- /// Stops grouping all incoming mutations.
- override public func endUndoGrouping() {
- guard isGrouping else { return }
- isGrouping = false
- // We just ended a group, do not allow the next mutation to be added to the group we just made.
- shouldBreakNextGroup = true
- }
-
- /// Determines whether or not two mutations should be grouped.
- ///
- /// Will break group if:
- /// - Last mutation is delete and new is insert, and vice versa *(insert and delete)*.
- /// - Last mutation was not whitespace, new is whitespace *(insert)*.
- /// - New mutation is a newline *(insert and delete)*.
- /// - New mutation is not sequential with the last one *(insert and delete)*.
- ///
- /// - Parameters:
- /// - mutation: The current mutation.
- /// - lastMutation: The last mutation applied to the document.
- /// - Returns: Whether or not the given mutations can be grouped.
- private func shouldContinueGroup(_ mutation: Mutation, lastMutation: Mutation) -> Bool {
- // If last mutation was delete & new is insert or vice versa, split group
- if (mutation.mutation.range.length > 0 && lastMutation.mutation.range.length == 0)
- || (mutation.mutation.range.length == 0 && lastMutation.mutation.range.length > 0) {
- return false
- }
-
- if mutation.mutation.string.isEmpty {
- // Deleting
- return (
- lastMutation.mutation.range.location == mutation.mutation.range.max
- && LineEnding(line: lastMutation.inverse.string) == nil
- )
- } else {
- // Inserting
-
- // Only attempt this check if the mutations are small enough.
- // If the last mutation was not whitespace, and the new one is, break the group.
- if lastMutation.mutation.string.count < 1024
- && mutation.mutation.string.count < 1024
- && !lastMutation.mutation.string.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
- && mutation.mutation.string.trimmingCharacters(in: .whitespaces).isEmpty {
- return false
- }
-
- return (
- lastMutation.mutation.range.max + 1 == mutation.mutation.range.location
- && LineEnding(line: mutation.mutation.string) == nil
- )
- }
- }
-
- // MARK: - Disable
-
- /// Sets the undo manager to ignore incoming mutations until the matching `enable` method is called.
- /// Cannot be nested.
- public func disable() {
- isDisabled = true
- }
-
- /// Sets the undo manager to begin receiving incoming mutations after a call to `disable`
- /// Cannot be nested.
- public func enable() {
- isDisabled = false
- }
-
- // MARK: - Internal
-
- /// Sets a new text view to use for mutation registration, undo/redo operations.
- /// - Parameter newTextView: The new text view.
- func setTextView(_ newTextView: TextView) {
- self.textView = newTextView
- }
-}
diff --git a/Sources/CodeEditTextView/Utils/HorizontalEdgeInsets.swift b/Sources/CodeEditTextView/Utils/HorizontalEdgeInsets.swift
deleted file mode 100644
index 652010085..000000000
--- a/Sources/CodeEditTextView/Utils/HorizontalEdgeInsets.swift
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// HorizontalEdgeInsets.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 9/11/23.
-//
-
-import Foundation
-
-public struct HorizontalEdgeInsets: Codable, Sendable, Equatable, AdditiveArithmetic {
- public var left: CGFloat
- public var right: CGFloat
-
- public var horizontal: CGFloat {
- left + right
- }
-
- public init(left: CGFloat, right: CGFloat) {
- self.left = left
- self.right = right
- }
-
- public init(from decoder: Decoder) throws {
- let container = try decoder.container(keyedBy: CodingKeys.self)
- self.left = try container.decode(CGFloat.self, forKey: .left)
- self.right = try container.decode(CGFloat.self, forKey: .right)
- }
-
- public static let zero: HorizontalEdgeInsets = {
- HorizontalEdgeInsets(left: 0, right: 0)
- }()
-
- public static func + (lhs: HorizontalEdgeInsets, rhs: HorizontalEdgeInsets) -> HorizontalEdgeInsets {
- HorizontalEdgeInsets(left: lhs.left + rhs.left, right: lhs.right + rhs.right)
- }
-
- public static func - (lhs: HorizontalEdgeInsets, rhs: HorizontalEdgeInsets) -> HorizontalEdgeInsets {
- HorizontalEdgeInsets(left: lhs.left - rhs.left, right: lhs.right - rhs.right)
- }
-}
diff --git a/Sources/CodeEditTextView/Utils/KillRing.swift b/Sources/CodeEditTextView/Utils/KillRing.swift
deleted file mode 100644
index cd13bb066..000000000
--- a/Sources/CodeEditTextView/Utils/KillRing.swift
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// KillRing.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/13/24.
-//
-
-import Foundation
-
-// swiftlint:disable line_length
-
-/// A global kill ring similar to emacs. With support for killing and yanking multiple cursors.
-///
-/// Documentation sources:
-/// - [Emacs kill ring](https://www.gnu.org/software/emacs/manual/html_node/emacs/Yanking.html)
-/// - [Cocoa Docs](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/TextDefaultsBindings/TextDefaultsBindings.html)
-class KillRing {
- static let shared: KillRing = KillRing()
-
- // swiftlint:enable line_length
-
- private static let bufferSizeKey = "NSTextKillRingSize"
-
- private var buffer: [[String]]
- private var index = 0
-
- init(_ size: Int? = nil) {
- buffer = Array(
- repeating: [""],
- count: size ?? max(1, UserDefaults.standard.integer(forKey: Self.bufferSizeKey))
- )
- }
-
- /// Performs the kill action in response to a delete action. Saving the deleted text to the kill ring.
- func kill(strings: [String]) {
- incrementIndex()
- buffer[index] = strings
- }
-
- /// Yanks the current item in the ring.
- func yank() -> [String] {
- return buffer[index]
- }
-
- /// Yanks an item from the ring, and selects the next one in the ring.
- func yankAndSelect() -> [String] {
- let retVal = buffer[index]
- incrementIndex()
- return retVal
- }
-
- private func incrementIndex() {
- index = (index + 1) % buffer.count
- }
-}
diff --git a/Sources/CodeEditTextView/Utils/LineEnding.swift b/Sources/CodeEditTextView/Utils/LineEnding.swift
deleted file mode 100644
index 99f1b2090..000000000
--- a/Sources/CodeEditTextView/Utils/LineEnding.swift
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// LineEnding.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/16/23.
-//
-
-import AppKit
-
-public enum LineEnding: String, CaseIterable {
- /// The default unix `\n` character
- case lineFeed = "\n"
- /// MacOS line ending `\r` character
- case carriageReturn = "\r"
- /// Windows line ending sequence `\r\n`
- case carriageReturnLineFeed = "\r\n"
-
- /// Initialize a line ending from a line string.
- /// - Parameter line: The line to use
- public init?(line: String) {
- guard let lastChar = line.last,
- let lineEnding = LineEnding(rawValue: String(lastChar)) else { return nil }
- self = lineEnding
- }
-
- /// Attempts to detect the line ending from a line storage.
- /// - Parameter lineStorage: The line storage to enumerate.
- /// - Returns: A line ending. Defaults to `.lf` if none could be found.
- public static func detectLineEnding(
- lineStorage: TextLineStorage,
- textStorage: NSTextStorage
- ) -> LineEnding {
- var histogram: [LineEnding: Int] = LineEnding.allCases.reduce(into: [LineEnding: Int]()) {
- $0[$1] = 0
- }
- var shouldContinue = true
- var lineIterator = lineStorage.makeIterator()
-
- while let line = lineIterator.next(), shouldContinue {
- guard let lineString = textStorage.substring(from: line.range),
- let lineEnding = LineEnding(line: lineString) else {
- continue
- }
- histogram[lineEnding] = histogram[lineEnding]! + 1
- // after finding 15 lines of a line ending we assume it's correct.
- if histogram[lineEnding]! >= 15 {
- shouldContinue = false
- }
- }
-
- let orderedValues = histogram.sorted(by: { $0.value > $1.value })
- // Return the max of the histogram, but if there's no max
- // we default to lineFeed. This should be a parameter in the future.
- if orderedValues.count >= 2 {
- if orderedValues[0].value == orderedValues[1].value {
- return .lineFeed
- } else {
- return orderedValues[0].key
- }
- } else {
- return .lineFeed
- }
- }
-
- /// The UTF-16 Length of the line ending.
- public var length: Int {
- rawValue.utf16.count
- }
-}
diff --git a/Sources/CodeEditTextView/Utils/Logger.swift b/Sources/CodeEditTextView/Utils/Logger.swift
deleted file mode 100644
index 543b8e5d7..000000000
--- a/Sources/CodeEditTextView/Utils/Logger.swift
+++ /dev/null
@@ -1,3 +0,0 @@
-import os
-
-let logger = Logger(subsystem: "com.CodeEdit.CodeEditTextView", category: "TextView")
diff --git a/Sources/CodeEditTextView/Utils/MultiStorageDelegate.swift b/Sources/CodeEditTextView/Utils/MultiStorageDelegate.swift
deleted file mode 100644
index 97350383d..000000000
--- a/Sources/CodeEditTextView/Utils/MultiStorageDelegate.swift
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// MultiStorageDelegate.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 6/25/23.
-//
-
-import AppKit
-
-public class MultiStorageDelegate: NSObject, NSTextStorageDelegate {
- private var delegates = NSHashTable.weakObjects()
-
- public func addDelegate(_ delegate: NSTextStorageDelegate) {
- delegates.add(delegate)
- }
-
- public func removeDelegate(_ delegate: NSTextStorageDelegate) {
- delegates.remove(delegate)
- }
-
- public func textStorage(
- _ textStorage: NSTextStorage,
- didProcessEditing editedMask: NSTextStorageEditActions,
- range editedRange: NSRange,
- changeInLength delta: Int
- ) {
- delegates.allObjects.forEach { delegate in
- delegate.textStorage?(textStorage, didProcessEditing: editedMask, range: editedRange, changeInLength: delta)
- }
- }
-
- public func textStorage(
- _ textStorage: NSTextStorage,
- willProcessEditing editedMask: NSTextStorageEditActions,
- range editedRange: NSRange,
- changeInLength delta: Int
- ) {
- delegates.allObjects.forEach { delegate in
- delegate
- .textStorage?(textStorage, willProcessEditing: editedMask, range: editedRange, changeInLength: delta)
- }
- }
-}
diff --git a/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift b/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift
deleted file mode 100644
index 3b85c6aeb..000000000
--- a/Sources/CodeEditTextView/Utils/ViewReuseQueue.swift
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// ViewReuseQueue.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 8/14/23.
-//
-
-import AppKit
-import DequeModule
-
-/// Maintains a queue of views available for reuse.
-public class ViewReuseQueue {
- /// A stack of views that are not currently in use
- public var queuedViews: Deque = []
-
- /// Maps views that are no longer queued to the keys they're queued with.
- public var usedViews: [Key: View] = [:]
-
- public init() { }
-
- /// Finds, dequeues, or creates a view for the given key.
- ///
- /// If the view has been dequeued, it will return the view already queued for the given key it will be returned.
- /// If there was no view dequeued for the given key, the returned view will either be a view queued for reuse or a
- /// new view object.
- ///
- /// - Parameters:
- /// - key: The key for the view to find.
- /// - createView: A callback that is called to create a new instance of the queued view types.
- /// - Returns: A view for the given key.
- public func getOrCreateView(forKey key: Key, createView: () -> View) -> View {
- let view: View
- if let usedView = usedViews[key] {
- view = usedView
- } else {
- view = queuedViews.popFirst() ?? createView()
- view.prepareForReuse()
- view.isHidden = false
- usedViews[key] = view
- }
- return view
- }
-
- public func getView(forKey key: Key) -> View? {
- usedViews[key]
- }
-
- /// Removes a view for the given key and enqueues it for reuse.
- /// - Parameter key: The key for the view to reuse.
- public func enqueueView(forKey key: Key) {
- guard let view = usedViews[key] else { return }
- if queuedViews.count < usedViews.count {
- queuedViews.append(view)
- view.frame = .zero
- view.isHidden = true
- } else {
- view.removeFromSuperviewWithoutNeedingDisplay()
- }
- usedViews.removeValue(forKey: key)
- }
-
- /// Enqueues all views not in the given set.
- /// - Parameter outsideSet: The keys who's views should not be enqueued for reuse.
- public func enqueueViews(notInSet keys: Set) {
- // Get all keys that are currently in "use" but not in the given set, and enqueue them for reuse.
- for key in Set(usedViews.keys).subtracting(keys) {
- enqueueView(forKey: key)
- }
- }
-
- /// Enqueues all views keyed by the given set.
- /// - Parameter keys: The keys for all the views that should be enqueued.
- public func enqueueViews(in keys: Set) {
- for key in keys {
- enqueueView(forKey: key)
- }
- }
-
- deinit {
- usedViews.removeAll()
- queuedViews.removeAll()
- }
-}
diff --git a/Sources/CodeEditTextViewObjC/CGContextHidden.m b/Sources/CodeEditTextViewObjC/CGContextHidden.m
deleted file mode 100644
index a5318ea64..000000000
--- a/Sources/CodeEditTextViewObjC/CGContextHidden.m
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// CGContextHidden.m
-// CodeEditTextViewObjC
-//
-// Created by Khan Winter on 2/12/24.
-//
-
-#import
-#import "CGContextHidden.h"
-
-extern void CGContextSetFontSmoothingStyle(CGContextRef, int);
-
-void ContextSetHiddenSmoothingStyle(CGContextRef context, int style) {
- CGContextSetFontSmoothingStyle(context, style);
-}
diff --git a/Sources/CodeEditTextViewObjC/include/CGContextHidden.h b/Sources/CodeEditTextViewObjC/include/CGContextHidden.h
deleted file mode 100644
index 87a5aad12..000000000
--- a/Sources/CodeEditTextViewObjC/include/CGContextHidden.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// CGContextHidden.h
-// CodeEditTextViewObjC
-//
-// Created by Khan Winter on 2/12/24.
-//
-
-#ifndef CGContextHidden_h
-#define CGContextHidden_h
-
-#import
-
-void ContextSetHiddenSmoothingStyle(CGContextRef context, int style);
-
-#endif /* CGContextHidden_h */
diff --git a/Sources/CodeEditTextViewObjC/include/module.modulemap b/Sources/CodeEditTextViewObjC/include/module.modulemap
deleted file mode 100644
index 8b431cb1f..000000000
--- a/Sources/CodeEditTextViewObjC/include/module.modulemap
+++ /dev/null
@@ -1,3 +0,0 @@
-module CodeEditTextViewObjC {
- header "CGContextHidden.h"
-}
diff --git a/Tests/CodeEditTextViewTests/AccessibilityTests.swift b/Tests/CodeEditTextViewTests/AccessibilityTests.swift
deleted file mode 100644
index ed526054b..000000000
--- a/Tests/CodeEditTextViewTests/AccessibilityTests.swift
+++ /dev/null
@@ -1,299 +0,0 @@
-//
-// AccessibilityTests.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 7/17/25.
-//
-
-import Testing
-import AppKit
-@testable import CodeEditTextView
-
-@MainActor
-@Suite
-struct AccessibilityTests {
- let textView: TextView
- let sampleText = "Line 1\nLine 2\nLine 3"
-
- init() {
- textView = TextView(string: sampleText)
- textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000)
- textView.updateFrameIfNeeded()
- }
-
- // MARK: - Basic Accessibility Properties
-
- @Test
- func isAccessibilityElement() {
- #expect(textView.isAccessibilityElement())
- }
-
- @Test
- func isAccessibilityEnabled() {
- #expect(textView.isAccessibilityEnabled())
- }
-
- @Test
- func accessibilityLabel() {
- #expect(textView.accessibilityLabel() == "Text Editor")
- }
-
- @Test
- func accessibilityRole() {
- #expect(textView.accessibilityRole() == .textArea)
- }
-
- @Test
- func accessibilityValue() {
- #expect(textView.accessibilityValue() as? String == sampleText)
- }
-
- @Test
- func setAccessibilityValue() {
- let newValue = "New content"
- textView.setAccessibilityValue(newValue)
- #expect(textView.string == newValue)
- }
-
- @Test
- func setAccessibilityValueInvalidType() {
- let originalString = textView.string
- textView.setAccessibilityValue(42)
- #expect(textView.string == originalString)
- }
-
- // MARK: - Character and String Access
-
- @Test
- func accessibilityNumberOfCharacters() {
- #expect(textView.accessibilityNumberOfCharacters() == sampleText.count)
- }
-
- @Test
- func accessibilityStringForRange() {
- let range = NSRange(location: 0, length: 6)
- let result = textView.accessibilityString(for: range)
- #expect(result == "Line 1")
- }
-
- @Test
- func accessibilityStringForInvalidRange() {
- let range = NSRange(location: 100, length: 5)
- let result = textView.accessibilityString(for: range)
- #expect(result == nil)
- }
-
- @Test
- func accessibilityRangeForCharacterIndex() {
- let range = textView.accessibilityRange(for: 0)
- #expect(range.location == 0)
- #expect(range.length == 1)
- }
-
- @Test
- func accessibilityRangeForInvalidIndex() {
- let range = textView.accessibilityRange(for: 1000)
- #expect(range == .notFound)
- }
-
- // MARK: - Selection Tests
-
- @Test
- func accessibilitySelectedTextNoSelections() {
- textView.selectionManager.setSelectedRanges([])
- #expect(textView.accessibilitySelectedText() == nil)
- }
-
- @Test
- func accessibilitySelectedTextEmpty() {
- textView.selectionManager.setSelectedRange(.zero)
- #expect(textView.accessibilitySelectedText() == "")
- }
-
- @Test
- func accessibilitySelectedText() {
- let range = NSRange(location: 0, length: 6)
- textView.selectionManager.setSelectedRange(range)
- #expect(textView.accessibilitySelectedText() == "Line 1")
- }
-
- @Test
- func accessibilitySelectedTextRange() {
- let range = NSRange(location: 2, length: 4)
- textView.selectionManager.setSelectedRange(range)
- let selectedRange = textView.accessibilitySelectedTextRange()
- #expect(selectedRange.location == 2)
- #expect(selectedRange.length == 4)
- }
-
- @Test
- func accessibilitySelectedTextRangeEmpty() {
- textView.selectionManager.setSelectedRange(.zero)
- let selectedRange = textView.accessibilitySelectedTextRange()
- #expect(selectedRange == .zero)
- }
-
- @Test
- func setAccessibilitySelectedTextRange() {
- let range = NSRange(location: 7, length: 6)
- textView.setAccessibilitySelectedTextRange(range)
- #expect(textView.accessibilitySelectedTextRange() == range)
- }
-
- @Test
- func accessibilitySelectedTextRanges() {
- let ranges = [
- NSRange(location: 0, length: 4),
- NSRange(location: 7, length: 6)
- ]
- textView.selectionManager.setSelectedRanges(ranges)
- let selectedRanges = textView.accessibilitySelectedTextRanges()?.compactMap { $0 as? NSRange }
- #expect(selectedRanges?.count == 2)
- #expect(selectedRanges?.contains(ranges[0]) == true)
- #expect(selectedRanges?.contains(ranges[1]) == true)
- }
-
- @Test
- func setAccessibilitySelectedTextRanges() {
- let ranges = [
- NSRange(location: 0, length: 4) as NSValue,
- NSRange(location: 7, length: 6) as NSValue
- ]
- textView.setAccessibilitySelectedTextRanges(ranges)
- let selectedRanges = textView.accessibilitySelectedTextRanges()
- #expect(selectedRanges?.count == 2)
- }
-
- @Test
- func setAccessibilitySelectedTextRangesNil() {
- textView.setAccessibilitySelectedTextRanges(nil)
- let selectedRanges = textView.accessibilitySelectedTextRanges()
- #expect(selectedRanges?.isEmpty == true)
- }
-
- // MARK: - Line Navigation Tests
-
- @Test
- func accessibilityLineForIndex() {
- let lineIndex = textView.accessibilityLine(for: 0)
- #expect(lineIndex == 0)
- }
-
- @Test
- func accessibilityLineForIndexSecondLine() {
- let lineIndex = textView.accessibilityLine(for: 7)
- #expect(lineIndex == 1)
- }
-
- @Test
- func accessibilityLineForEndOfDocument() {
- let lineIndex = textView.accessibilityLine(for: textView.documentRange.max)
- #expect(lineIndex == 2)
- }
-
- @Test
- func accessibilityLineForInvalidIndex() {
- let lineIndex = textView.accessibilityLine(for: 1000)
- #expect(lineIndex == -1)
- }
-
- @Test
- func accessibilityRangeForLine() {
- let range = textView.accessibilityRange(forLine: 0)
- #expect(range.location == 0)
- #expect(range.length == 7)
- }
-
- @Test
- func accessibilityRangeForLineSecondLine() {
- let range = textView.accessibilityRange(forLine: 1)
- #expect(range.location == 7)
- #expect(range.length == 7)
- }
-
- @Test
- func accessibilityRangeForInvalidLine() {
- let range = textView.accessibilityRange(forLine: 100)
- #expect(range == .zero)
- }
-
- @Test
- func accessibilityRangeForNegativeLine() {
- let range = textView.accessibilityRange(forLine: -1)
- #expect(range == .zero)
- }
-
- @Test
- func accessibilityInsertionPointLineNumber() {
- textView.selectionManager.setSelectedRange(NSRange(location: 7, length: 0))
- let lineNumber = textView.accessibilityInsertionPointLineNumber()
- #expect(lineNumber == 1)
- }
-
- @Test
- func accessibilityInsertionPointLineNumberEmptySelection() {
- textView.selectionManager.setSelectedRange(.zero)
- let lineNumber = textView.accessibilityInsertionPointLineNumber()
- #expect(lineNumber == 0)
- }
-
- @Test
- func accessibilityInsertionPointLineNumberNoSelection() {
- textView.selectionManager.setSelectedRanges([])
- let lineNumber = textView.accessibilityInsertionPointLineNumber()
- #expect(lineNumber == -1)
- }
-
- // MARK: - Visible Range Tests
-
- @Test
- func accessibilityVisibleCharacterRange() {
- let visibleRange = textView.accessibilityVisibleCharacterRange()
- #expect(visibleRange != .notFound)
- }
-
- @Test
- func accessibilityVisibleCharacterRangeNoVisibleText() {
- let emptyTextView = TextView(string: "")
- let visibleRange = emptyTextView.accessibilityVisibleCharacterRange()
- #expect(visibleRange == .zero)
- }
-
- // MARK: - Point and Frame Tests
-
- @Test
- func accessibilityRangeForPoint() {
- let point = NSPoint(x: 10, y: 10)
- let range = textView.accessibilityRange(for: point)
- #expect(range.length == 0)
- }
-
- @Test
- func accessibilityRangeForInvalidPoint() {
- let point = NSPoint(x: -100, y: -100)
- let range = textView.accessibilityRange(for: point)
- #expect(range == .zero)
- }
-
- @Test
- func accessibilityFrameForRange() {
- let range = NSRange(location: 0, length: 6)
- let frame = textView.accessibilityFrame(for: range)
- #expect(frame.size.width > 0)
- #expect(frame.size.height > 0)
- }
-
- @Test
- func accessibilityFrameForEmptyRange() {
- let range = NSRange(location: 0, length: 0)
- let frame = textView.accessibilityFrame(for: range)
- #expect(frame.size.width >= 0)
- #expect(frame.size.height >= 0)
- }
-
- @Test
- func isAccessibilityFocusedWhenNotFirstResponder() {
- textView.window?.makeFirstResponder(nil)
- #expect(!textView.isAccessibilityFocused())
- }
-}
diff --git a/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift b/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift
deleted file mode 100644
index 4cdf8468b..000000000
--- a/Tests/CodeEditTextViewTests/EmphasisManagerTests.swift
+++ /dev/null
@@ -1,37 +0,0 @@
-import Testing
-import Foundation
-@testable import CodeEditTextView
-
-@Suite()
-struct EmphasisManagerTests {
- @Test()
- @MainActor
- func testFlashEmphasisLayersNotLeaked() {
- // Ensure layers are not leaked when switching from flash emphasis to any other emphasis type.
- let textView = TextView(string: "Lorem Ipsum")
- textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 100)
- textView.layoutManager.layoutLines(in: CGRect(origin: .zero, size: CGSize(width: 1000, height: 100)))
- textView.emphasisManager?.addEmphasis(
- Emphasis(range: NSRange(location: 0, length: 5), style: .standard, flash: true),
- for: "e"
- )
-
- // Text layer and emphasis layer
- #expect(textView.layer?.sublayers?.count == 2)
- #expect(textView.emphasisManager?.getEmphases(for: "e").count == 1)
-
- textView.emphasisManager?.addEmphases(
- [Emphasis(range: NSRange(location: 0, length: 5), style: .underline(color: .red), flash: true)],
- for: "e"
- )
-
- #expect(textView.layer?.sublayers?.count == 4)
- #expect(textView.emphasisManager?.getEmphases(for: "e").count == 2)
-
- textView.emphasisManager?.removeAllEmphases()
-
- // No emphasis layers remain
- #expect(textView.layer?.sublayers?.count == nil)
- #expect(textView.emphasisManager?.getEmphases(for: "e").count == 0)
- }
-}
diff --git a/Tests/CodeEditTextViewTests/KillRingTests.swift b/Tests/CodeEditTextViewTests/KillRingTests.swift
deleted file mode 100644
index ad092eb41..000000000
--- a/Tests/CodeEditTextViewTests/KillRingTests.swift
+++ /dev/null
@@ -1,73 +0,0 @@
-import XCTest
-@testable import CodeEditTextView
-
-class KillRingTests: XCTestCase {
- func test_killRingYank() {
- var ring = KillRing.shared
- ring.kill(strings: ["hello"])
- for _ in 0..<100 {
- XCTAssertEqual(ring.yank(), ["hello"])
- }
-
- ring.kill(strings: ["hello", "multiple", "strings"])
- // should never change on yank
- for _ in 0..<100 {
- XCTAssertEqual(ring.yank(), ["hello", "multiple", "strings"])
- }
-
- ring = KillRing(2)
- ring.kill(strings: ["hello"])
- for _ in 0..<100 {
- XCTAssertEqual(ring.yank(), ["hello"])
- }
-
- ring.kill(strings: ["hello", "multiple", "strings"])
- // should never change on yank
- for _ in 0..<100 {
- XCTAssertEqual(ring.yank(), ["hello", "multiple", "strings"])
- }
- }
-
- func test_killRingYankAndSelect() {
- let ring = KillRing(5)
- ring.kill(strings: ["1"])
- ring.kill(strings: ["2"])
- ring.kill(strings: ["3", "3", "3"])
- ring.kill(strings: ["4", "4"])
- ring.kill(strings: ["5"])
- // should loop
- for _ in 0..<5 {
- XCTAssertEqual(ring.yankAndSelect(), ["5"])
- XCTAssertEqual(ring.yankAndSelect(), ["1"])
- XCTAssertEqual(ring.yankAndSelect(), ["2"])
- XCTAssertEqual(ring.yankAndSelect(), ["3", "3", "3"])
- XCTAssertEqual(ring.yankAndSelect(), ["4", "4"])
- }
- }
-
- func test_textViewYank() {
- let view = TextView(string: "Hello World")
- view.selectionManager.setSelectedRange(NSRange(location: 0, length: 1))
- view.delete(self)
- XCTAssertEqual(view.string, "ello World")
-
- view.yank(self)
- XCTAssertEqual(view.string, "Hello World")
- view.selectionManager.setSelectedRange(NSRange(location: 0, length: 0))
- view.yank(self)
- XCTAssertEqual(view.string, "HHello World")
- }
-
- func test_textViewYankMultipleCursors() {
- let view = TextView(string: "Hello World")
- view.selectionManager.setSelectedRanges([NSRange(location: 1, length: 0), NSRange(location: 4, length: 0)])
- view.delete(self)
- XCTAssertEqual(view.string, "elo World")
-
- view.yank(self)
- XCTAssertEqual(view.string, "Hello World")
- view.selectionManager.setSelectedRanges([NSRange(location: 0, length: 0)])
- view.yank(self)
- XCTAssertEqual(view.string, "H\nlHello World")
- }
-}
diff --git a/Tests/CodeEditTextViewTests/LayoutManager/OverridingLayoutManagerRenderingTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/OverridingLayoutManagerRenderingTests.swift
deleted file mode 100644
index 07f222fb6..000000000
--- a/Tests/CodeEditTextViewTests/LayoutManager/OverridingLayoutManagerRenderingTests.swift
+++ /dev/null
@@ -1,112 +0,0 @@
-import Testing
-import AppKit
-@testable import CodeEditTextView
-
-class MockRenderDelegate: TextLayoutManagerRenderDelegate {
- var prepareForDisplay: ((
- _ textLine: TextLine,
- _ displayData: TextLine.DisplayData,
- _ range: NSRange,
- _ stringRef: NSTextStorage,
- _ markedRanges: MarkedRanges?
- ) -> Void)?
-
- var estimatedLineHeightOverride: (() -> CGFloat)?
-
- func prepareForDisplay( // swiftlint:disable:this function_parameter_count
- textLine: TextLine,
- displayData: TextLine.DisplayData,
- range: NSRange,
- stringRef: NSTextStorage,
- markedRanges: MarkedRanges?,
- attachments: [AnyTextAttachment]
- ) {
- prepareForDisplay?(
- textLine,
- displayData,
- range,
- stringRef,
- markedRanges
- ) ?? textLine.prepareForDisplay(
- displayData: displayData,
- range: range,
- stringRef: stringRef,
- markedRanges: markedRanges,
- attachments: []
- )
- }
-
- func estimatedLineHeight() -> CGFloat? {
- estimatedLineHeightOverride?()
- }
-}
-
-@Suite
-@MainActor
-struct OverridingLayoutManagerRenderingTests {
- let mockDelegate: MockRenderDelegate
- let textView: TextView
- let textStorage: NSTextStorage
- let layoutManager: TextLayoutManager
-
- init() throws {
- textView = TextView(string: "A\nB\nC\nD")
- textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000)
- textStorage = textView.textStorage
- layoutManager = try #require(textView.layoutManager)
- mockDelegate = MockRenderDelegate()
- layoutManager.renderDelegate = mockDelegate
- }
-
- @Test
- func overriddenLineHeight() {
- mockDelegate.prepareForDisplay = { textLine, displayData, range, stringRef, markedRanges in
- textLine.prepareForDisplay(
- displayData: displayData,
- range: range,
- stringRef: stringRef,
- markedRanges: markedRanges,
- attachments: []
- )
- // Update all text fragments to be height = 2.0
- textLine.lineFragments.forEach { fragmentPosition in
- let idealHeight: CGFloat = 2.0
- textLine.lineFragments.update(
- atOffset: fragmentPosition.index,
- delta: 0,
- deltaHeight: -(fragmentPosition.height - idealHeight)
- )
- fragmentPosition.data.height = 2.0
- fragmentPosition.data.scaledHeight = 2.0
- }
- }
-
- layoutManager.invalidateLayoutForRect(NSRect(x: 0, y: 0, width: 1000, height: 1000))
- layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000))
-
- // 4 lines, each 2px tall
- #expect(layoutManager.lineStorage.height == 8.0)
-
- // Edit some text
-
- textStorage.replaceCharacters(in: NSRange(location: 0, length: 0), with: "0\n1\r\n2\r")
- layoutManager.layoutLines(in: NSRect(x: 0, y: 0, width: 1000, height: 1000))
-
- #expect(layoutManager.lineCount == 7)
- #expect(layoutManager.lineStorage.height == 14.0)
- layoutManager.lineStorage.validateInternalState()
- }
-
- @Test
- func overriddenEstimatedLineHeight() {
- // The layout manager should use the estimation from the render delegate, not the font size.
- mockDelegate.estimatedLineHeightOverride = {
- 1.0
- }
-
- layoutManager.renderDelegate = mockDelegate
-
- #expect(layoutManager.estimateLineHeight() == 1.0)
- #expect(layoutManager.estimatedHeight() == 4.0) // 4 lines, each 1 high
- }
-}
diff --git a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift
deleted file mode 100644
index 1841cc5ed..000000000
--- a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerAttachmentsTests.swift
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// TextLayoutManagerAttachmentsTests.swift
-// CodeEditTextView
-//
-// Created by Khan Winter on 5/5/25.
-//
-
-import Testing
-import AppKit
-@testable import CodeEditTextView
-
-@Suite
-@MainActor
-struct TextLayoutManagerAttachmentsTests {
- let textView: TextView
- let textStorage: NSTextStorage
- let layoutManager: TextLayoutManager
-
- init() throws {
- textView = TextView(string: "12\n45\n78\n01\n")
- textView.frame = NSRect(x: 0, y: 0, width: 1000, height: 1000)
- textStorage = textView.textStorage
- layoutManager = try #require(textView.layoutManager)
- }
-
- @Test
- func addAndGetAttachments() throws {
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 8))
- #expect(layoutManager.attachments.getAttachmentsOverlapping(textView.documentRange).count == 1)
- #expect(layoutManager.attachments.getAttachmentsOverlapping(NSRange(start: 0, end: 3)).count == 1)
- #expect(layoutManager.attachments.getAttachmentsStartingIn(NSRange(start: 0, end: 3)).count == 1)
- }
-
- // MARK: - Determine Visible Line Tests
-
- @Test
- func determineVisibleLinesMovesForwards() throws {
- // From middle of the first line, to middle of the third line
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 8))
-
- // Start with the first line, should extend to the third line
- let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 0)) // zero-indexed
- let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition))
-
- #expect(newPosition.indexRange == 0...2)
- #expect(newPosition.position.range == NSRange(start: 0, end: 9)) // Lines one -> three
- }
-
- @Test
- func determineVisibleLinesMovesBackwards() throws {
- // From middle of the first line, to middle of the third line
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 8))
-
- // Start with the third line, should extend back to the first line
- let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 2)) // zero-indexed
- let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition))
-
- #expect(newPosition.indexRange == 0...2)
- #expect(newPosition.position.range == NSRange(start: 0, end: 9)) // Lines one -> three
- }
-
- @Test
- func determineVisibleLinesMergesMultipleAttachments() throws {
- // Two attachments, meeting at the third line. `determineVisiblePosition` should merge all four lines.
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 7))
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 7, end: 11))
-
- let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 2)) // zero-indexed
- let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition))
-
- #expect(newPosition.indexRange == 0...3)
- #expect(newPosition.position.range == NSRange(start: 0, end: 12)) // Lines one -> four
- }
-
- @Test
- func determineVisibleLinesMergesOverlappingAttachments() throws {
- // Two attachments, overlapping at the third line. `determineVisiblePosition` should merge all four lines.
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 7))
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 5, end: 11))
-
- let originalPosition = try #require(layoutManager.lineStorage.getLine(atIndex: 2)) // zero-indexed
- let newPosition = try #require(layoutManager.determineVisiblePosition(for: originalPosition))
-
- #expect(newPosition.indexRange == 0...3)
- #expect(newPosition.position.range == NSRange(start: 0, end: 12)) // Lines one -> four
- }
-
- // MARK: - Iterator Tests
-
- @Test
- func iterateWithAttachments() {
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 1, end: 2))
-
- let lines = layoutManager.linesStartingAt(0, until: 1000)
-
- // Line "5" is from the trailing newline. That shows up as an empty line in the view.
- #expect(lines.map { $0.index } == [0, 1, 2, 3, 4])
- }
-
- @Test
- func iterateWithMultilineAttachments() {
- // Two attachments, meeting at the third line.
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 2, end: 7))
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 7, end: 11))
-
- let lines = layoutManager.linesStartingAt(0, until: 1000)
-
- // Line "5" is from the trailing newline. That shows up as an empty line in the view.
- #expect(lines.map { $0.index } == [0, 4])
- }
-
- @Test
- func addingAttachmentThatMeetsEndOfLineMergesNextLine() throws {
- let height = try #require(layoutManager.textLineForOffset(0)).height
- layoutManager.attachments.add(DemoTextAttachment(), for: NSRange(start: 0, end: 3))
-
- // With bug: the line for offset 3 would be the 2nd line (index 1). They should be merged
- #expect(layoutManager.textLineForOffset(0)?.index == 0)
- #expect(layoutManager.textLineForOffset(3)?.index == 0)
- }
-}
diff --git a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift b/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift
deleted file mode 100644
index f40c1b878..000000000
--- a/Tests/CodeEditTextViewTests/LayoutManager/TextLayoutManagerTests.swift
+++ /dev/null
@@ -1,272 +0,0 @@
-import Testing
-import AppKit
-@testable import CodeEditTextView
-
-extension TextLineStorage {
- /// Validate that the internal tree is intact and correct.
- ///
- /// Ensures that:
- /// - All lines can be queried by their index starting from `0`.
- /// - All lines can be found by iterating `y` positions.
- func validateInternalState() {
- func validateLines(_ lines: [TextLineStorage.TextLinePosition]) {
- var _lastLine: TextLineStorage.TextLinePosition?
- for line in lines {
- guard let lastLine = _lastLine else {
- #expect(line.index == 0)
- _lastLine = line
- return
- }
-
- #expect(line.index == lastLine.index + 1)
- #expect(line.yPos >= lastLine.yPos + lastLine.height)
- #expect(line.range.location == lastLine.range.max + 1)
- _lastLine = line
- }
- }
-
- let linesUsingIndex = (0..()
- lineStorage.buildFromTextStorage(storage, estimatedLineHeight: 10)
- let detected = LineEnding.detectLineEnding(lineStorage: lineStorage, textStorage: storage)
- XCTAssertEqual(detected, .lineFeed)
- }
- }
-
- let corpus = "abcdefghijklmnopqrstuvwxyz123456789"
- func makeRandomText(_ goalLineEnding: LineEnding) -> String {
- (10..()
- lineStorage.buildFromTextStorage(storage, estimatedLineHeight: 10)
-
- let detected = LineEnding.detectLineEnding(lineStorage: lineStorage, textStorage: storage)
- XCTAssertEqual(detected, goalLineEnding)
- }
-
- func test_detectLineEndingCLRF() {
- let goalLineEnding = LineEnding.carriageReturnLineFeed
-
- let storage = NSTextStorage(string: makeRandomText(goalLineEnding))
- let lineStorage = TextLineStorage()
- lineStorage.buildFromTextStorage(storage, estimatedLineHeight: 10)
-
- let detected = LineEnding.detectLineEnding(lineStorage: lineStorage, textStorage: storage)
- XCTAssertEqual(detected, goalLineEnding)
- }
-
- func test_detectLineEndingMacOS() {
- let goalLineEnding = LineEnding.carriageReturn
-
- let storage = NSTextStorage(string: makeRandomText(goalLineEnding))
- let lineStorage = TextLineStorage()
- lineStorage.buildFromTextStorage(storage, estimatedLineHeight: 10)
-
- let detected = LineEnding.detectLineEnding(lineStorage: lineStorage, textStorage: storage)
- XCTAssertEqual(detected, goalLineEnding)
- }
-}
diff --git a/Tests/CodeEditTextViewTests/MarkedTextTests.swift b/Tests/CodeEditTextViewTests/MarkedTextTests.swift
deleted file mode 100644
index 412337164..000000000
--- a/Tests/CodeEditTextViewTests/MarkedTextTests.swift
+++ /dev/null
@@ -1,127 +0,0 @@
-import XCTest
-@testable import CodeEditTextView
-
-class MarkedTextTests: XCTestCase {
- func test_markedTextSingleChar() {
- let textView = TextView(string: "")
- textView.selectionManager.setSelectedRange(.zero)
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "´")
-
- textView.insertText("é", replacementRange: .notFound)
- XCTAssertEqual(textView.string, "é")
- XCTAssertEqual(textView.selectionManager.textSelections.map(\.range), [NSRange(location: 1, length: 0)])
- }
-
- func test_markedTextSingleCharInStrings() {
- let textView = TextView(string: "Lorem Ipsum")
- textView.selectionManager.setSelectedRange(NSRange(location: 5, length: 0))
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "Lorem´ Ipsum")
-
- textView.insertText("é", replacementRange: .notFound)
- XCTAssertEqual(textView.string, "Loremé Ipsum")
- XCTAssertEqual(textView.selectionManager.textSelections.map(\.range), [NSRange(location: 6, length: 0)])
- }
-
- func test_markedTextReplaceSelection() {
- let textView = TextView(string: "ABCDE")
- textView.selectionManager.setSelectedRange(NSRange(location: 4, length: 1))
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "ABCD´")
-
- textView.insertText("é", replacementRange: .notFound)
- XCTAssertEqual(textView.string, "ABCDé")
- XCTAssertEqual(textView.selectionManager.textSelections.map(\.range), [NSRange(location: 5, length: 0)])
- }
-
- func test_markedTextMultipleSelection() {
- let textView = TextView(string: "ABC")
- textView.selectionManager.setSelectedRanges([NSRange(location: 1, length: 0), NSRange(location: 2, length: 0)])
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "A´B´C")
-
- textView.insertText("é", replacementRange: .notFound)
- XCTAssertEqual(textView.string, "AéBéC")
- XCTAssertEqual(
- textView.selectionManager.textSelections.map(\.range).sorted(by: { $0.location < $1.location }),
- [NSRange(location: 2, length: 0), NSRange(location: 4, length: 0)]
- )
- }
-
- func test_markedTextMultipleSelectionReplaceSelection() {
- let textView = TextView(string: "ABCDE")
- textView.selectionManager.setSelectedRanges([NSRange(location: 0, length: 1), NSRange(location: 4, length: 1)])
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "´BCD´")
-
- textView.insertText("é", replacementRange: .notFound)
- XCTAssertEqual(textView.string, "éBCDé")
- XCTAssertEqual(
- textView.selectionManager.textSelections.map(\.range).sorted(by: { $0.location < $1.location }),
- [NSRange(location: 1, length: 0), NSRange(location: 5, length: 0)]
- )
- }
-
- func test_markedTextMultipleSelectionMultipleChar() {
- let textView = TextView(string: "ABCDE")
- textView.selectionManager.setSelectedRanges([NSRange(location: 0, length: 1), NSRange(location: 4, length: 1)])
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "´BCD´")
-
- textView.setMarkedText("´´´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "´´´BCD´´´")
- XCTAssertEqual(
- textView.selectionManager.textSelections.map(\.range).sorted(by: { $0.location < $1.location }),
- [NSRange(location: 3, length: 0), NSRange(location: 9, length: 0)]
- )
-
- textView.insertText("é", replacementRange: .notFound)
- XCTAssertEqual(textView.string, "éBCDé")
- XCTAssertEqual(
- textView.selectionManager.textSelections.map(\.range).sorted(by: { $0.location < $1.location }),
- [NSRange(location: 1, length: 0), NSRange(location: 5, length: 0)]
- )
- }
-
- func test_cancelMarkedText() {
- let textView = TextView(string: "")
- textView.selectionManager.setSelectedRange(.zero)
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "´")
-
- // The NSTextInputContext performs the following actions when a marked text segment is ended w/o replacing the
- // marked text:
- textView.insertText("´", replacementRange: .notFound)
- textView.insertText("4", replacementRange: .notFound)
-
- XCTAssertEqual(textView.string, "´4")
- XCTAssertEqual(textView.selectionManager.textSelections.map(\.range), [NSRange(location: 2, length: 0)])
- }
-
- func test_cancelMarkedTextMultipleCursor() {
- let textView = TextView(string: "ABC")
- textView.selectionManager.setSelectedRanges([NSRange(location: 1, length: 0), NSRange(location: 2, length: 0)])
-
- textView.setMarkedText("´", selectedRange: .notFound, replacementRange: .notFound)
- XCTAssertEqual(textView.string, "A´B´C")
-
- // The NSTextInputContext performs the following actions when a marked text segment is ended w/o replacing the
- // marked text:
- textView.insertText("´", replacementRange: .notFound)
- textView.insertText("4", replacementRange: .notFound)
-
- XCTAssertEqual(textView.string, "A´4B´4C")
- XCTAssertEqual(
- textView.selectionManager.textSelections.map(\.range).sorted(by: { $0.location < $1.location }),
- [NSRange(location: 3, length: 0), NSRange(location: 6, length: 0)]
- )
- }
-}
diff --git a/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift b/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift
deleted file mode 100644
index 5316f1638..000000000
--- a/Tests/CodeEditTextViewTests/TextLayoutLineStorageTests.swift
+++ /dev/null
@@ -1,387 +0,0 @@
-import XCTest
-@testable import CodeEditTextView
-
-fileprivate extension CGFloat {
- func approxEqual(_ value: CGFloat) -> Bool {
- return abs(self - value) < 0.05
- }
-}
-
-extension UUID: @retroactive Identifiable {
- public var id: UUID { self }
-}
-
-final class TextLayoutLineStorageTests: XCTestCase { // swiftlint:disable:this type_body_length
-
- /// Creates a balanced height=3 tree useful for testing and debugging.
- /// - Returns: A new tree.
- fileprivate func createBalancedTree() -> TextLineStorage {
- let tree = TextLineStorage()
- var data = [TextLineStorage.BuildItem]()
- for idx in 0..<15 {
- data.append(.init(data: TextLine(), length: idx + 1, height: 1.0))
- }
- tree.build(from: data, estimatedLineHeight: 1.0)
- return tree
- }
-
- struct ChildData {
- let length: Int
- let count: Int
- let height: CGFloat
- }
-
- /// Recursively checks that the given tree has the correct metadata everywhere.
- /// - Parameter tree: The tree to check.
- fileprivate func assertTreeMetadataCorrect(_ tree: TextLineStorage) throws {
- func checkChildren(_ node: TextLineStorage.Node?) -> ChildData {
- guard let node else { return ChildData(length: 0, count: 0, height: 0.0) }
- let leftSubtreeData = checkChildren(node.left)
- let rightSubtreeData = checkChildren(node.right)
-
- XCTAssert(leftSubtreeData.length == node.leftSubtreeOffset, "Left subtree length incorrect")
- XCTAssert(leftSubtreeData.count == node.leftSubtreeCount, "Left subtree node count incorrect")
- XCTAssert(leftSubtreeData.height.approxEqual(node.leftSubtreeHeight), "Left subtree height incorrect")
-
- return ChildData(
- length: node.length + leftSubtreeData.length + rightSubtreeData.length,
- count: 1 + leftSubtreeData.count + rightSubtreeData.count,
- height: node.height + leftSubtreeData.height + rightSubtreeData.height
- )
- }
-
- let rootData = checkChildren(tree.root)
-
- XCTAssert(rootData.count == tree.count, "Node count incorrect")
- XCTAssert(rootData.length == tree.length, "Length incorrect")
- XCTAssert(rootData.height.approxEqual(tree.height), "Height incorrect")
-
- var lastIdx = -1
- for line in tree {
- XCTAssert(lastIdx == line.index - 1, "Incorrect index found")
- lastIdx = line.index
- }
- }
-
- func test_insert() throws {
- var tree = TextLineStorage()
-
- // Single Element
- tree.insert(line: TextLine(), atOffset: 0, length: 1, height: 50.0)
- XCTAssert(tree.length == 1, "Tree length incorrect")
- XCTAssert(tree.count == 1, "Tree count incorrect")
- XCTAssert(tree.height == 50.0, "Tree height incorrect")
- XCTAssert(tree.root?.right == nil && tree.root?.left == nil, "Somehow inserted an extra node.")
- try assertTreeMetadataCorrect(tree)
-
- // Insert into first
- tree = createBalancedTree()
- tree.insert(line: TextLine(), atOffset: 0, length: 1, height: 1.0)
- try assertTreeMetadataCorrect(tree)
-
- // Insert into last
- tree = createBalancedTree()
- tree.insert(line: TextLine(), atOffset: tree.length - 1, length: 1, height: 1.0)
- try assertTreeMetadataCorrect(tree)
-
- tree = createBalancedTree()
- tree.insert(line: TextLine(), atOffset: 45, length: 1, height: 1.0)
- try assertTreeMetadataCorrect(tree)
- }
-
- func test_update() throws {
- var tree = TextLineStorage()
-
- // Single Element
- tree.insert(line: TextLine(), atOffset: 0, length: 1, height: 1.0)
- tree.update(atOffset: 0, delta: 20, deltaHeight: 5.0)
- XCTAssertEqual(tree.length, 21, "Tree length incorrect")
- XCTAssertEqual(tree.count, 1, "Tree count incorrect")
- XCTAssertEqual(tree.height, 6, "Tree height incorrect")
- XCTAssert(tree.root?.right == nil && tree.root?.left == nil, "Somehow inserted an extra node.")
- try assertTreeMetadataCorrect(tree)
-
- // Update First
- tree = createBalancedTree()
- tree.update(atOffset: 0, delta: 12, deltaHeight: -0.5)
- XCTAssertEqual(tree.height, 14.5, "Tree height incorrect")
- XCTAssertEqual(tree.count, 15, "Tree count changed")
- XCTAssertEqual(tree.length, 132, "Tree length incorrect")
- XCTAssertEqual(tree.first?.range.length, 13, "First node wasn't updated correctly.")
- try assertTreeMetadataCorrect(tree)
-
- // Update Last
- tree = createBalancedTree()
- tree.update(atOffset: tree.length - 1, delta: -14, deltaHeight: 1.75)
- XCTAssertEqual(tree.height, 16.75, "Tree height incorrect")
- XCTAssertEqual(tree.count, 15, "Tree count changed")
- XCTAssertEqual(tree.length, 106, "Tree length incorrect")
- XCTAssertEqual(tree.last?.range.length, 1, "Last node wasn't updated correctly.")
- try assertTreeMetadataCorrect(tree)
-
- // Update middle
- tree = createBalancedTree()
- tree.update(atOffset: 45, delta: -9, deltaHeight: 1.0)
- XCTAssertEqual(tree.height, 16.0, "Tree height incorrect")
- XCTAssertEqual(tree.count, 15, "Tree count changed")
- XCTAssertEqual(tree.length, 111, "Tree length incorrect")
- XCTAssert(tree.root?.right?.left?.height == 2.0 && tree.root?.right?.left?.length == 1, "Node wasn't updated")
- try assertTreeMetadataCorrect(tree)
-
- // Update at random
- tree = createBalancedTree()
- for _ in 0..<20 {
- let delta = Int.random(in: 1..<20)
- let deltaHeight = Double.random(in: 0..<20.0)
- let originalHeight = tree.height
- let originalCount = tree.count
- let originalLength = tree.length
- tree.update(atOffset: Int.random(in: 0..()
-
- // Single Element
- tree.insert(line: TextLine(), atOffset: 0, length: 1, height: 1.0)
- XCTAssert(tree.length == 1, "Tree length incorrect")
- tree.delete(lineAt: 0)
- XCTAssert(tree.length == 0, "Tree failed to delete single node")
- XCTAssert(tree.root == nil, "Tree root should be nil")
- try assertTreeMetadataCorrect(tree)
-
- // Delete first
-
- tree = createBalancedTree()
- tree.delete(lineAt: 0)
- XCTAssert(tree.count == 14, "Tree length incorrect")
- XCTAssert(tree.first?.range.length == 2, "Failed to delete leftmost node")
- try assertTreeMetadataCorrect(tree)
-
- // Delete last
-
- tree = createBalancedTree()
- tree.delete(lineAt: tree.length - 1)
- XCTAssert(tree.count == 14, "Tree length incorrect")
- XCTAssert(tree.last?.range.length == 14, "Failed to delete rightmost node")
- try assertTreeMetadataCorrect(tree)
-
- // Delete mid leaf
-
- tree = createBalancedTree()
- tree.delete(lineAt: 45)
- XCTAssert(tree.root?.right?.left?.length == 11, "Failed to remove node 10")
- XCTAssert(tree.root?.right?.leftSubtreeOffset == 20, "Failed to update metadata on parent of node 10")
- XCTAssert(tree.root?.right?.left?.right == nil, "Failed to replace node 10 with node 11")
- XCTAssert(tree.count == 14, "Tree length incorrect")
- try assertTreeMetadataCorrect(tree)
-
- tree = createBalancedTree()
- tree.delete(lineAt: 66)
- XCTAssert(tree.root?.right?.length == 13, "Failed to remove node 12")
- XCTAssert(tree.root?.right?.leftSubtreeOffset == 30, "Failed to update metadata on parent of node 13")
- XCTAssert(tree.root?.right?.left?.right?.left == nil, "Failed to replace node 12 with node 13")
- XCTAssert(tree.count == 14, "Tree length incorrect")
- try assertTreeMetadataCorrect(tree)
-
- // Delete root
-
- tree = createBalancedTree()
- tree.delete(lineAt: tree.root!.leftSubtreeOffset + 1)
- XCTAssert(tree.root?.color == .black, "Root color incorrect")
- XCTAssert(tree.root?.right?.left?.left == nil, "Replacement node was not moved to root")
- XCTAssert(tree.root?.leftSubtreeCount == 7, "Replacement node was not given correct metadata.")
- XCTAssert(tree.root?.leftSubtreeHeight == 7.0, "Replacement node was not given correct metadata.")
- XCTAssert(tree.root?.leftSubtreeOffset == 28, "Replacement node was not given correct metadata.")
- XCTAssert(tree.count == 14, "Tree length incorrect")
- try assertTreeMetadataCorrect(tree)
-
- // Delete a bunch of random
-
- for _ in 0..<20 {
- tree = createBalancedTree()
- var lastCount = 15
- while !tree.isEmpty {
- lastCount -= 1
- tree.delete(lineAt: Int.random(in: 0.. last, "Out of order after deletion")
- last = line.range.length
- }
- try assertTreeMetadataCorrect(tree)
- }
- }
- }
-
- func test_insertPerformance() {
- let tree = TextLineStorage()
- var lines: [TextLineStorage.BuildItem] = []
- for idx in 0..<250_000 {
- lines.append(TextLineStorage.BuildItem(
- data: TextLine(),
- length: idx + 1,
- height: 0.0
- ))
- }
- tree.build(from: lines, estimatedLineHeight: 1.0)
- // Measure time when inserting randomly into an already built tree.
- // Start 0.667s
- // 10/6/23 0.563s -15.59%
- measure {
- for _ in 0..<100_000 {
- tree.insert(
- line: TextLine(), atOffset: Int.random(in: 0..()
- let lines: [TextLineStorage.BuildItem] = (0..<250_000).map {
- TextLineStorage.BuildItem(
- data: TextLine(),
- length: $0 + 1,
- height: 0.0
- )
- }
- // Start 0.113s
- measure {
- tree.build(from: lines, estimatedLineHeight: 1.0)
- }
- }
-
- func test_iterationPerformance() {
- let tree = TextLineStorage()
- var lines: [TextLineStorage.BuildItem] = []
- for idx in 0..<100_000 {
- lines.append(TextLineStorage.BuildItem(
- data: TextLine(),
- length: idx + 1,
- height: 0.0
- ))
- }
- tree.build(from: lines, estimatedLineHeight: 1.0)
- // Start 0.181s
- measure {
- for line in tree {
- _ = line
- }
- }
- }
-
- func test_transplantWithExistingLeftNodes() throws { // swiftlint:disable:this function_body_length
- typealias Storage = TextLineStorage
- typealias Node = TextLineStorage.Node
- // Test that when transplanting a node with no left nodes, with a node with left nodes, that
- // the resulting tree has valid 'left_' metadata
- // 1
- // / \
- // 7 2
- // /
- // 3 ← this will be moved, this test ensures 4 retains it's left subtree count
- // \
- // 4
- // | |
- // 5 6
-
- let node5 = Node(
- length: 5,
- data: UUID(),
- leftSubtreeOffset: 0,
- leftSubtreeHeight: 0,
- leftSubtreeCount: 0,
- height: 1,
- left: nil,
- right: nil,
- parent: nil,
- color: .black
- )
-
- let node6 = Node(
- length: 6,
- data: UUID(),
- leftSubtreeOffset: 0,
- leftSubtreeHeight: 0,
- leftSubtreeCount: 0,
- height: 1,
- left: nil,
- right: nil,
- parent: nil,
- color: .black
- )
-
- let node4 = Node(
- length: 4,
- data: UUID(),
- leftSubtreeOffset: 5,
- leftSubtreeHeight: 1,
- leftSubtreeCount: 1, // node5 is on the left
- height: 1,
- left: node5,
- right: node6,
- parent: nil,
- color: .black
- )
- node5.parent = node4
- node6.parent = node4
-
- let node3 = Node(
- length: 3,
- data: UUID(),
- leftSubtreeOffset: 0,
- leftSubtreeHeight: 0,
- leftSubtreeCount: 0,
- height: 1,
- left: nil,
- right: node4,
- parent: nil,
- color: .black
- )
- node4.parent = node3
-
- let node2 = Node(
- length: 2,
- data: UUID(),
- leftSubtreeOffset: 18,
- leftSubtreeHeight: 4,
- leftSubtreeCount: 4, // node3 is on the left
- height: 1,
- left: node3,
- right: nil,
- parent: nil,
- color: .black
- )
- node3.parent = node2
-
- let node7 = Node(length: 7, data: UUID(), height: 1)
-
- let node1 = Node(
- length: 1,
- data: UUID(),
- leftSubtreeOffset: 7,
- leftSubtreeHeight: 1,
- leftSubtreeCount: 1,
- height: 1,
- left: node7,
- right: node2,
- parent: nil,
- color: .black
- )
- node2.parent = node1
-
- let storage = Storage(root: node1, count: 7, length: 28, height: 7)
-
- storage.delete(lineAt: 7) // Delete the root
-
- try assertTreeMetadataCorrect(storage)
- }
-}
diff --git a/Tests/CodeEditTextViewTests/TextSelectionManagerTests.swift b/Tests/CodeEditTextViewTests/TextSelectionManagerTests.swift
deleted file mode 100644
index ecfa6ab84..000000000
--- a/Tests/CodeEditTextViewTests/TextSelectionManagerTests.swift
+++ /dev/null
@@ -1,226 +0,0 @@
-import XCTest
-@testable import CodeEditTextView
-
-final class TextSelectionManagerTests: XCTestCase {
- var textStorage: NSTextStorage!
- var layoutManager: TextLayoutManager!
-
- func selectionManager(_ text: String = "Loren Ipsum 💯") -> TextSelectionManager {
- textStorage = NSTextStorage(string: text)
- layoutManager = TextLayoutManager(
- textStorage: textStorage,
- lineHeightMultiplier: 1.0,
- wrapLines: false,
- textView: NSView(),
- delegate: nil
- )
- return TextSelectionManager(
- layoutManager: layoutManager,
- textStorage: textStorage,
- textView: nil,
- delegate: nil
- )
- }
-
- func test_updateSelectionLeft() {
- let selectionManager = selectionManager()
- let locations = [2, 0, 14, 14]
- let expectedRanges = [(1, 1), (0, 0), (12, 2), (13, 1)]
- let decomposeCharacters = [false, false, false, true]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .backward,
- destination: .character,
- decomposeCharacters: decomposeCharacters[idx]
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_updateSelectionRight() {
- let selectionManager = selectionManager()
- let locations = [2, 0, 14, 13, 12]
- let expectedRanges = [(2, 1), (0, 1), (14, 0), (12, 2), (12, 1)]
- let decomposeCharacters = [false, false, false, false, true]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .forward,
- destination: .character,
- decomposeCharacters: decomposeCharacters[idx]
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_updateSelectionLeftWord() {
- let selectionManager = selectionManager()
- let locations = [2, 0, 12]
- let expectedRanges = [(0, 2), (0, 0), (6, 6)]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .backward,
- destination: .word,
- decomposeCharacters: false
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_updateSelectionRightWord() {
- // "Loren Ipsum 💯"
- let selectionManager = selectionManager()
- let locations = [2, 0, 6]
- let expectedRanges = [(2, 3), (0, 5), (6, 5)]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .forward,
- destination: .word,
- decomposeCharacters: false
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_updateSelectionLeftLine() {
- // "Loren Ipsum 💯"
- let selectionManager = selectionManager()
- let locations = [2, 0, 14, 12]
- let expectedRanges = [(0, 2), (0, 0), (0, 14), (0, 12)]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .backward,
- destination: .line,
- decomposeCharacters: false
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_updateSelectionRightLine() {
- let selectionManager = selectionManager("Loren Ipsum 💯\nHello World")
- let locations = [2, 0, 14, 12, 17]
- let expectedRanges = [(2, 12), (0, 14), (14, 0), (12, 2), (17, 9)]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .forward,
- destination: .line,
- decomposeCharacters: false
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_updateSelectionUpDocument() {
- let selectionManager = selectionManager("Loren Ipsum 💯\nHello World\n1\n2\n3\n")
- let locations = [0, 27, 30, 33]
- let expectedRanges = [(0, 0), (0, 27), (0, 30), (0, 33)]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .up,
- destination: .document,
- decomposeCharacters: false
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_updateSelectionDownDocument() {
- let selectionManager = selectionManager("Loren Ipsum 💯\nHello World\n1\n2\n3\n")
- let locations = [0, 2, 27, 30, 33]
- let expectedRanges = [(0, 33), (2, 31), (27, 6), (30, 3), (33, 0)]
-
- for idx in locations.indices {
- let range = selectionManager.rangeOfSelection(
- from: locations[idx],
- direction: .down,
- destination: .document,
- decomposeCharacters: false
- )
-
- XCTAssert(
- range.location == expectedRanges[idx].0,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- XCTAssert(
- range.length == expectedRanges[idx].1,
- "Invalid Location. Testing location \(locations[idx]). Expected \(expectedRanges[idx]). Got \(range)"
- )
- }
- }
-
- func test_selectionEndOfDocumentHasXPos() {
- let selectionManager = selectionManager("1\n2\n3\n")
- selectionManager.setSelectedRange(NSRange(location: 6, length: 0)) // Beyond text.length, end of doc
- XCTAssertNotNil(selectionManager.textSelections.first?.suggestedXPos)
- }
-}
diff --git a/Tests/CodeEditTextViewTests/TextViewTests.swift b/Tests/CodeEditTextViewTests/TextViewTests.swift
deleted file mode 100644
index 7b6ba44bb..000000000
--- a/Tests/CodeEditTextViewTests/TextViewTests.swift
+++ /dev/null
@@ -1,81 +0,0 @@
-import Testing
-import AppKit
-@testable import CodeEditTextView
-
-@Suite
-@MainActor
-struct TextViewTests {
- class MockDelegate: TextViewDelegate {
- var shouldReplaceContents: ((_ textView: TextView, _ range: NSRange, _ string: String) -> Bool)?
-
- func textView(_ textView: TextView, shouldReplaceContentsIn range: NSRange, with string: String) -> Bool {
- shouldReplaceContents?(textView, range, string) ?? true
- }
- }
-
- let textView: TextView
- let delegate: MockDelegate
-
- init() {
- textView = TextView(string: "Lorem Ipsum")
- delegate = MockDelegate()
- textView.delegate = delegate
- }
-
- @Test
- func delegateChangesText() {
- var hasReplaced = false
- delegate.shouldReplaceContents = { textView, _, _ -> Bool in
- if !hasReplaced {
- hasReplaced.toggle()
- textView.replaceCharacters(in: NSRange(location: 0, length: 0), with: " World ")
- }
-
- return true
- }
-
- textView.replaceCharacters(in: NSRange(location: 0, length: 0), with: "Hello")
-
- #expect(textView.string == "Hello World Lorem Ipsum")
- // available in test module
- textView.layoutManager.lineStorage.validateInternalState()
- }
-
- @Test
- func sharedTextStorage() {
- let storage = NSTextStorage(string: "Hello world")
-
- let textView1 = TextView(string: "")
- textView1.frame = NSRect(x: 0, y: 0, width: 100, height: 100)
- textView1.layoutSubtreeIfNeeded()
- textView1.setTextStorage(storage)
-
- let textView2 = TextView(string: "")
- textView2.frame = NSRect(x: 0, y: 0, width: 100, height: 100)
- textView2.layoutSubtreeIfNeeded()
- textView2.setTextStorage(storage)
-
- // Expect both text views to receive edited events from the storage
- #expect(textView1.layoutManager.lineCount == 1)
- #expect(textView2.layoutManager.lineCount == 1)
-
- storage.replaceCharacters(in: NSRange(location: 11, length: 0), with: "\nMore Lines\n")
-
- #expect(textView1.layoutManager.lineCount == 3)
- #expect(textView2.layoutManager.lineCount == 3)
- }
-
- @Test("Custom UndoManager class receives events")
- func customUndoManagerReceivesEvents() {
- let textView = TextView(string: "")
-
- textView.replaceCharacters(in: .zero, with: "Hello World")
- textView.undo(nil)
-
- #expect(textView.string == "")
-
- textView.redo(nil)
-
- #expect(textView.string == "Hello World")
- }
-}
diff --git a/Tests/CodeEditTextViewTests/TypesetterTests.swift b/Tests/CodeEditTextViewTests/TypesetterTests.swift
deleted file mode 100644
index 92826c365..000000000
--- a/Tests/CodeEditTextViewTests/TypesetterTests.swift
+++ /dev/null
@@ -1,287 +0,0 @@
-import XCTest
-@testable import CodeEditTextView
-
-final class DemoTextAttachment: TextAttachment {
- var width: CGFloat
- var isSelected: Bool = false
-
- init(width: CGFloat = 100) {
- self.width = width
- }
-
- func draw(in context: CGContext, rect: NSRect) {
- context.saveGState()
- context.setFillColor(NSColor.red.cgColor)
- context.fill(rect)
- context.restoreGState()
- }
-}
-
-class TypesetterTests: XCTestCase {
- // NOTE: makes chars that are ~6.18 pts wide
- let attributes: [NSAttributedString.Key: Any] = [.font: NSFont.monospacedSystemFont(ofSize: 10, weight: .regular)]
- var typesetter: Typesetter!
-
- override func setUp() {
- typesetter = Typesetter()
- continueAfterFailure = false
- }
-
- func test_LineFeedBreak() {
- typesetter.typeset(
- NSAttributedString(string: "testline\n"),
- documentRange: NSRange(location: 0, length: 9),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .word
- ),
- markedRanges: nil
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1, "Typesetter typeset incorrect number of lines.")
-
- typesetter.typeset(
- NSAttributedString(string: "testline\n"),
- documentRange: NSRange(location: 0, length: 9),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1, "Typesetter typeset incorrect number of lines.")
- }
-
- func test_carriageReturnBreak() {
- typesetter.typeset(
- NSAttributedString(string: "testline\r"),
- documentRange: NSRange(location: 0, length: 9),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .word
- ),
- markedRanges: nil
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1, "Typesetter typeset incorrect number of lines.")
-
- typesetter.typeset(
- NSAttributedString(string: "testline\r"),
- documentRange: NSRange(location: 0, length: 9),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1, "Typesetter typeset incorrect number of lines.")
- }
-
- func test_carriageReturnLineFeedBreak() {
- typesetter.typeset(
- NSAttributedString(string: "testline\r\n"),
- documentRange: NSRange(location: 0, length: 10),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .word
- ),
- markedRanges: nil
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1, "Typesetter typeset incorrect number of lines.")
-
- typesetter.typeset(
- NSAttributedString(string: "testline\r\n"),
- documentRange: NSRange(location: 0, length: 10),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1, "Typesetter typeset incorrect number of lines.")
- }
-
- func test_wrapLinesReturnsValidFragmentRanges() throws {
- // Ensure that when wrapping, each wrapped line fragment has correct ranges.
- typesetter.typeset(
- NSAttributedString(string: String(repeating: "A", count: 1000), attributes: attributes),
- documentRange: NSRange(location: 0, length: 1000),
- displayData: TextLine.DisplayData(
- maxWidth: 150,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil,
- attachments: []
- )
-
- let firstFragment = try XCTUnwrap(typesetter.lineFragments.first)
-
- for fragment in typesetter.lineFragments {
- // The end of the fragment shouldn't extend beyond the valid document range
- XCTAssertLessThanOrEqual(fragment.range.max, 1000)
- // Because we're breaking on characters, and filling each line with the same char
- // Each fragment should be as long or shorter than the first fragment.
- XCTAssertLessThanOrEqual(fragment.range.length, firstFragment.range.length)
- }
- }
-
- // MARK: - Attachments
-
- func test_layoutSingleFragmentWithAttachment() throws {
- let attachment = DemoTextAttachment()
- typesetter.typeset(
- NSAttributedString(string: "ABC"),
- documentRange: NSRange(location: 0, length: 3),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil,
- attachments: [AnyTextAttachment(range: NSRange(location: 1, length: 1), attachment: attachment)]
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1)
- let fragment = try XCTUnwrap(typesetter.lineFragments.first?.data)
- XCTAssertEqual(fragment.contents.count, 3)
- XCTAssertTrue(fragment.contents[0].isText)
- XCTAssertFalse(fragment.contents[1].isText)
- XCTAssertTrue(fragment.contents[2].isText)
- XCTAssertEqual(
- fragment.contents[1],
- .init(
- data: .attachment(attachment: .init(range: NSRange(location: 1, length: 1), attachment: attachment)),
- width: attachment.width
- )
- )
- }
-
- func test_layoutSingleFragmentEntirelyAttachment() throws {
- let attachment = DemoTextAttachment()
- typesetter.typeset(
- NSAttributedString(string: "ABC"),
- documentRange: NSRange(location: 0, length: 3),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil,
- attachments: [AnyTextAttachment(range: NSRange(location: 0, length: 3), attachment: attachment)]
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1)
- let fragment = try XCTUnwrap(typesetter.lineFragments.first?.data)
- XCTAssertEqual(fragment.contents.count, 1)
- XCTAssertFalse(fragment.contents[0].isText)
- XCTAssertEqual(
- fragment.contents[0],
- .init(
- data: .attachment(attachment: .init(range: NSRange(location: 0, length: 3), attachment: attachment)),
- width: attachment.width
- )
- )
- }
-
- func test_wrapLinesWithAttachment() throws {
- let attachment = DemoTextAttachment(width: 130)
-
- // Total should be slightly > 160px, breaking off 2 and 3
- typesetter.typeset(
- NSAttributedString(string: "ABC123", attributes: attributes),
- documentRange: NSRange(location: 0, length: 6),
- displayData: TextLine.DisplayData(
- maxWidth: 150,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil,
- attachments: [.init(range: NSRange(location: 1, length: 1), attachment: attachment)]
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 2)
-
- var fragment = try XCTUnwrap(typesetter.lineFragments.first?.data)
- XCTAssertEqual(fragment.contents.count, 3) // First fragment includes the attachment and characters after
- XCTAssertTrue(fragment.contents[0].isText)
- XCTAssertFalse(fragment.contents[1].isText)
- XCTAssertTrue(fragment.contents[2].isText)
-
- fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 1)?.data)
- XCTAssertEqual(fragment.contents.count, 1) // Second fragment is only text
- XCTAssertTrue(fragment.contents[0].isText)
- }
-
- func test_wrapLinesWithWideAttachment() throws {
- // Attachment takes up more than the available room.
- // Expected result: attachment is on it's own line fragment with no other text.
- let attachment = DemoTextAttachment(width: 150)
-
- typesetter.typeset(
- NSAttributedString(string: "ABC123", attributes: attributes),
- documentRange: NSRange(location: 0, length: 6),
- displayData: TextLine.DisplayData(
- maxWidth: 150,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .character
- ),
- markedRanges: nil,
- attachments: [.init(range: NSRange(location: 1, length: 1), attachment: attachment)]
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 3)
-
- var fragment = try XCTUnwrap(typesetter.lineFragments.first?.data)
- XCTAssertEqual(fragment.contents.count, 1)
- XCTAssertTrue(fragment.contents[0].isText)
-
- fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 1)?.data)
- XCTAssertEqual(fragment.contents.count, 1)
- XCTAssertFalse(fragment.contents[0].isText)
-
- fragment = try XCTUnwrap(typesetter.lineFragments.getLine(atIndex: 2)?.data)
- XCTAssertEqual(fragment.contents.count, 1)
- XCTAssertTrue(fragment.contents[0].isText)
- }
-
- func test_wrapLinesDoesNotBreakOnLastNewline() throws {
- let attachment = DemoTextAttachment(width: 50)
- let string = NSAttributedString(string: "AB CD\n12 34\nWX YZ\n", attributes: attributes)
- typesetter.typeset(
- string,
- documentRange: NSRange(location: 0, length: 15),
- displayData: TextLine.DisplayData(
- maxWidth: .infinity,
- lineHeightMultiplier: 1.0,
- estimatedLineHeight: 20.0,
- breakStrategy: .word
- ),
- markedRanges: nil,
- attachments: [.init(range: NSRange(start: 4, end: 15), attachment: attachment)]
- )
-
- XCTAssertEqual(typesetter.lineFragments.count, 1)
- }
-}
diff --git a/css/866.2d08a543.css b/css/866.2d08a543.css
new file mode 100644
index 000000000..ff00324ad
--- /dev/null
+++ b/css/866.2d08a543.css
@@ -0,0 +1,9 @@
+/*!
+ * This source file is part of the Swift.org open source project
+ *
+ * Copyright (c) 2021 Apple Inc. and the Swift project authors
+ * Licensed under Apache License v2.0 with Runtime Library Exception
+ *
+ * See https://swift.org/LICENSE.txt for license information
+ * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
+ */aside[data-v-3ccce809]{-moz-column-break-inside:avoid;break-inside:avoid;border-radius:var(--aside-border-radius,var(--border-radius,4px));border-style:var(--aside-border-style,solid);border-width:var(--aside-border-width,0 0 0 6px);padding:.9411764706rem;text-align:start}aside .label[data-v-3ccce809]{font-size:1rem;line-height:1.5294117647;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}aside .label+[data-v-3ccce809]{margin-top:var(--spacing-stacked-margin-small)}aside.deprecated[data-v-3ccce809]{background-color:var(--color-aside-deprecated-background);border-color:var(--color-aside-deprecated-border);box-shadow:0 0 0 0 var(--color-aside-deprecated-border) inset,0 0 0 0 var(--color-aside-deprecated-border)}aside.deprecated .label[data-v-3ccce809]{color:var(--color-aside-deprecated)}aside.experiment[data-v-3ccce809]{background-color:var(--color-aside-experiment-background);border-color:var(--color-aside-experiment-border);box-shadow:0 0 0 0 var(--color-aside-experiment-border) inset,0 0 0 0 var(--color-aside-experiment-border)}aside.experiment .label[data-v-3ccce809]{color:var(--color-aside-experiment)}aside.important[data-v-3ccce809]{background-color:var(--color-aside-important-background);border-color:var(--color-aside-important-border);box-shadow:0 0 0 0 var(--color-aside-important-border) inset,0 0 0 0 var(--color-aside-important-border)}aside.important .label[data-v-3ccce809]{color:var(--color-aside-important)}aside.note[data-v-3ccce809]{background-color:var(--color-aside-note-background);border-color:var(--color-aside-note-border);box-shadow:0 0 0 0 var(--color-aside-note-border) inset,0 0 0 0 var(--color-aside-note-border)}aside.note .label[data-v-3ccce809]{color:var(--color-aside-note)}aside.tip[data-v-3ccce809]{background-color:var(--color-aside-tip-background);border-color:var(--color-aside-tip-border);box-shadow:0 0 0 0 var(--color-aside-tip-border) inset,0 0 0 0 var(--color-aside-tip-border)}aside.tip .label[data-v-3ccce809]{color:var(--color-aside-tip)}aside.warning[data-v-3ccce809]{background-color:var(--color-aside-warning-background);border-color:var(--color-aside-warning-border);box-shadow:0 0 0 0 var(--color-aside-warning-border) inset,0 0 0 0 var(--color-aside-warning-border)}aside.warning .label[data-v-3ccce809]{color:var(--color-aside-warning)}code[data-v-08295b2f]:before{content:attr(data-before-code)}code[data-v-08295b2f]:after{content:attr(data-after-code)}code[data-v-08295b2f]:after,code[data-v-08295b2f]:before{display:block;position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}.swift-file-icon.file-icon[data-v-c01a6890]{height:1rem}.file-icon[data-v-7c381064]{position:relative;align-items:flex-end;height:24px;margin:0 .5rem 0 1rem}.filename[data-v-c8c40662]{color:var(--text,var(--colors-secondary-label,var(--color-secondary-label)));font-size:.9411764706rem;line-height:1.1875;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:1rem}@media only screen and (max-width:735px){.filename[data-v-c8c40662]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0}}.filename>a[data-v-c8c40662],.filename>span[data-v-c8c40662]{display:flex;align-items:center;line-height:normal}a[data-v-c8c40662]{color:var(--url,var(--color-link))}.code-line-container[data-v-13e6923e]{display:inline-block;width:100%;box-sizing:border-box}.code-number[data-v-13e6923e]{display:inline-block;padding:0 1rem 0 8px;text-align:right;min-width:2em;color:#666;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-13e6923e]:before{content:attr(data-line-number)}.highlighted[data-v-13e6923e]{background:var(--line-highlight,var(--color-code-line-highlight));border-left:4px solid var(--color-code-line-highlight-border)}.highlighted .code-number[data-v-13e6923e]{padding-left:4px}pre[data-v-13e6923e]{padding:14px 0;display:flex;overflow:unset;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal;height:100%;-moz-tab-size:var(--code-indentationWidth,4);-o-tab-size:var(--code-indentationWidth,4);tab-size:var(--code-indentationWidth,4)}@media only screen and (max-width:735px){pre[data-v-13e6923e]{padding-top:.8235294118rem}}code[data-v-13e6923e]{white-space:pre;word-wrap:normal;flex-grow:9999}.code-listing[data-v-13e6923e],.container-general[data-v-13e6923e]{display:flex}.code-listing[data-v-13e6923e]{flex-direction:column;border-radius:var(--code-border-radius,var(--border-radius,4px));overflow:hidden;filter:blur(0)}.code-listing.single-line[data-v-13e6923e]{border-radius:var(--border-radius,4px)}.container-general[data-v-13e6923e]{overflow:auto}.container-general[data-v-13e6923e],pre[data-v-13e6923e]{flex-grow:1}.header-anchor[data-v-0d0d1d08]{color:inherit;text-decoration:none;position:relative;padding-right:23px;display:inline-block}.header-anchor[data-v-0d0d1d08]:after{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;content:attr(data-after-text)}.header-anchor .icon[data-v-0d0d1d08]{position:absolute;right:0;bottom:.2em;display:none;height:16px;margin-left:7px}.header-anchor:focus .icon[data-v-0d0d1d08],.header-anchor:hover .icon[data-v-0d0d1d08]{display:inline}code[data-v-05f4a5b7]{speak-punctuation:code}.container-general[data-v-25a17a0e]{display:flex;flex-flow:row wrap}.container-general .code-line[data-v-25a17a0e]{flex:1 0 auto}.code-line-container[data-v-25a17a0e]{width:100%;align-items:center;display:flex;border-left:4px solid transparent;counter-increment:linenumbers;padding-right:14px}.code-number[data-v-25a17a0e]{font-size:.7058823529rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);padding:0 1rem 0 8px;text-align:right;min-width:2.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-25a17a0e]:before{content:counter(linenumbers)}.code-line[data-v-25a17a0e]{display:flex}pre[data-v-25a17a0e]{padding:14px 0;display:flex;flex-flow:row wrap;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal}@media only screen and (max-width:735px){pre[data-v-25a17a0e]{padding-top:.8235294118rem}}.collapsible-code-listing[data-v-25a17a0e]{background:var(--background,var(--color-code-background));border-color:var(--colors-grid,var(--color-grid));color:var(--text,var(--color-code-plain));border-radius:var(--border-radius,4px);border-style:solid;border-width:1px;counter-reset:linenumbers;font-size:15px}.collapsible-code-listing.single-line[data-v-25a17a0e]{border-radius:var(--border-radius,4px)}.collapsible[data-v-25a17a0e]{background:var(--color-code-collapsible-background);color:var(--color-code-collapsible-text)}.collapsed[data-v-25a17a0e]:before{content:"⋯";display:inline-block;font-family:monospace;font-weight:700;height:100%;line-height:1;text-align:right;width:2.3rem}.collapsed .code-line-container[data-v-25a17a0e]{height:0;visibility:hidden}.row[data-v-be73599c]{box-sizing:border-box;display:flex;flex-flow:row wrap}.col[data-v-2ee3ad8b]{box-sizing:border-box;flex:none}.xlarge-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.xlarge-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.xlarge-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.xlarge-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.xlarge-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.xlarge-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.xlarge-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.xlarge-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.xlarge-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.xlarge-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.xlarge-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.xlarge-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.xlarge-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.xlarge-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}.large-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.large-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.large-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.large-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.large-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.large-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.large-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.large-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.large-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.large-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.large-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.large-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.large-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.large-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}@media only screen and (max-width:1250px){.medium-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.medium-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.medium-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.medium-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.medium-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.medium-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.medium-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.medium-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.medium-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.medium-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.medium-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.medium-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.medium-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.medium-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:735px){.small-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.small-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.small-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.small-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.small-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.small-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.small-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.small-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.small-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.small-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.small-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.small-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.small-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.small-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}@media only screen and (max-width:320px){.xsmall-1[data-v-2ee3ad8b]{flex-basis:8.3333333333%;max-width:8.3333333333%}.xsmall-2[data-v-2ee3ad8b]{flex-basis:16.6666666667%;max-width:16.6666666667%}.xsmall-3[data-v-2ee3ad8b]{flex-basis:25%;max-width:25%}.xsmall-4[data-v-2ee3ad8b]{flex-basis:33.3333333333%;max-width:33.3333333333%}.xsmall-5[data-v-2ee3ad8b]{flex-basis:41.6666666667%;max-width:41.6666666667%}.xsmall-6[data-v-2ee3ad8b]{flex-basis:50%;max-width:50%}.xsmall-7[data-v-2ee3ad8b]{flex-basis:58.3333333333%;max-width:58.3333333333%}.xsmall-8[data-v-2ee3ad8b]{flex-basis:66.6666666667%;max-width:66.6666666667%}.xsmall-9[data-v-2ee3ad8b]{flex-basis:75%;max-width:75%}.xsmall-10[data-v-2ee3ad8b]{flex-basis:83.3333333333%;max-width:83.3333333333%}.xsmall-11[data-v-2ee3ad8b]{flex-basis:91.6666666667%;max-width:91.6666666667%}.xsmall-12[data-v-2ee3ad8b]{flex-basis:100%;max-width:100%}.xsmall-centered[data-v-2ee3ad8b]{margin-left:auto;margin-right:auto}.xsmall-uncentered[data-v-2ee3ad8b]{margin-left:0;margin-right:0}}.tabnav[data-v-5572fe1d]{margin:0 0 1.4705882353rem 0;display:flex}.tabnav--center[data-v-5572fe1d]{justify-content:center}.tabnav--end[data-v-5572fe1d]{justify-content:flex-end}.tabnav--vertical[data-v-5572fe1d]{flex-flow:column wrap}.tabnav--vertical .tabnav-items[data-v-5572fe1d]{flex-flow:column;overflow:hidden}.tabnav--vertical[data-v-5572fe1d] .tabnav-item{padding-left:0}.tabnav--vertical[data-v-5572fe1d] .tabnav-item .tabnav-link{padding-top:8px}.tabnav-items[data-v-5572fe1d]{display:flex;margin:0;text-align:center}.tabnav-item[data-v-6aa9882a]{border-bottom:1px solid;border-color:var(--colors-tabnav-item-border-color,var(--color-tabnav-item-border-color));display:flex;list-style:none;padding-left:1.7647058824rem;margin:0;outline:none}.tabnav-item[data-v-6aa9882a]:first-child{padding-left:0}.tabnav-item[data-v-6aa9882a]:nth-child(n+1){margin:0}.tabnav-link[data-v-6aa9882a]{color:var(--colors-secondary-label,var(--color-secondary-label));font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:6px 0;margin-top:4px;margin-bottom:4px;text-align:left;text-decoration:none;display:block;position:relative;z-index:0;width:100%}.tabnav-link[data-v-6aa9882a]:hover{text-decoration:none}.tabnav-link[data-v-6aa9882a]:focus{outline-offset:-1px}.tabnav-link[data-v-6aa9882a]:after{content:"";position:absolute;bottom:-5px;left:0;width:100%;border:1px solid transparent}.tabnav-link.active[data-v-6aa9882a]{color:var(--colors-text,var(--color-text));cursor:default;z-index:10}.tabnav-link.active[data-v-6aa9882a]:after{border-bottom-color:var(--colors-text,var(--color-text))}.controls[data-v-c84e62a6]{margin-top:5px;font-size:14px;display:flex;justify-content:flex-end}.controls a[data-v-c84e62a6]{color:var(--colors-text,var(--color-text));display:flex;align-items:center}.controls .control-icon[data-v-c84e62a6]{width:1.05em;margin-right:.3em}.caption[data-v-869c6f6e]{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin:0 0 var(--spacing-stacked-margin-large) 0}.caption.trailing[data-v-869c6f6e]{margin:var(--spacing-stacked-margin-large) 0 0 0;text-align:center}caption.trailing[data-v-869c6f6e]{caption-side:bottom}[data-v-869c6f6e] p{display:inline-block}[data-v-bf997940] img{max-width:100%}.table-wrapper[data-v-f3322390]{overflow:auto;-webkit-overflow-scrolling:touch}*+.table-wrapper[data-v-f3322390],.table-wrapper[data-v-f3322390]+*{margin-top:var(--spacing-stacked-margin-xlarge)}table[data-v-f3322390]{border-style:hidden}[data-v-f3322390] th{font-weight:600;word-break:keep-all;-webkit-hyphens:auto;hyphens:auto}[data-v-f3322390] td,[data-v-f3322390] th{border-color:var(--color-fill-gray-tertiary);border-style:solid;border-width:var(--table-border-width,1px 1px);padding:.5882352941rem}[data-v-f3322390] td.left-cell,[data-v-f3322390] th.left-cell{text-align:left}[data-v-f3322390] td.right-cell,[data-v-f3322390] th.right-cell{text-align:right}[data-v-f3322390] td.center-cell,[data-v-f3322390] th.center-cell{text-align:center}s[data-v-7fc51673]:before{content:attr(data-before-text)}s[data-v-7fc51673]:after{content:attr(data-after-text)}s[data-v-7fc51673]:after,s[data-v-7fc51673]:before{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}small[data-v-77035f61]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray)}.device-frame[data-v-c2eac128]{position:relative;width:var(--frame-width);aspect-ratio:var(--frame-aspect);max-width:100%;margin-left:auto;margin-right:auto;overflow:hidden}*+.device-frame[data-v-c2eac128],.device-frame[data-v-c2eac128]+*{margin-top:40px}.device[data-v-c2eac128]{background-image:var(--device-light-url);background-repeat:no-repeat;background-size:100%;width:100%;height:100%;position:relative;pointer-events:none}@media screen{[data-color-scheme=dark] .device[data-v-c2eac128]{background-image:var(--device-dark-url,var(--device-light-url))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .device[data-v-c2eac128]{background-image:var(--device-dark-url,var(--device-light-url))}}.no-device .device[data-v-c2eac128]{display:none}.device-screen.with-device[data-v-c2eac128]{position:absolute;left:var(--screen-left);top:var(--screen-top);height:var(--screen-height);width:var(--screen-width);display:flex}.device-screen.with-device>[data-v-c2eac128]{flex:1}.device-screen.with-device[data-v-c2eac128] img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;margin:0}.device-screen.with-device[data-v-c2eac128] video{-o-object-fit:contain;object-fit:contain;-o-object-position:top;object-position:top;width:100%;height:auto}.video-replay-container .control-button[data-v-3fb37a97]{display:flex;align-items:center;justify-content:center;cursor:pointer;margin-top:.5rem;-webkit-tap-highlight-color:rgba(0,0,0,0)}.video-replay-container .control-button svg.control-icon[data-v-3fb37a97]{height:12px;width:12px;margin-left:.3em}[data-v-6ab0b718] img,[data-v-6ab0b718] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.asset[data-v-4f18340d]{margin-left:auto;margin-right:auto}*+.asset[data-v-4f18340d],.asset[data-v-4f18340d]+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-4f18340d] video{display:block;margin-left:auto;margin-right:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.column[data-v-0f654188]{grid-column:span var(--col-span);min-width:0}@media only screen and (max-width:735px){.column[data-v-0f654188]{grid-column:span 1}}.row[data-v-1bcb2d0f]{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:var(--col-gap,20px)}@media only screen and (max-width:735px){.row[data-v-1bcb2d0f]{grid-template-columns:1fr;grid-auto-flow:row}}.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-large);grid-template-columns:repeat(var(--col-count),1fr);grid-auto-flow:row}@media only screen and (max-width:1250px){.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-medium,var(--col-count-large))}}@media only screen and (max-width:735px){.row.with-columns[data-v-1bcb2d0f]{--col-count:var(--col-count-small)}}*+.TabNavigator[data-v-e671a734],*+.row[data-v-1bcb2d0f],.TabNavigator[data-v-e671a734]+*,.row[data-v-1bcb2d0f]+*{margin-top:var(--spacing-stacked-margin-xlarge)}.TabNavigator .tabnav[data-v-e671a734]{overflow:auto;white-space:nowrap}.TabNavigator .tabs-content-container[data-v-e671a734]{position:relative;overflow:hidden}.tabs--vertical[data-v-e671a734]{display:flex;flex-flow:row-reverse}@media only screen and (max-width:735px){.tabs--vertical[data-v-e671a734]{flex-flow:column-reverse}}.tabs--vertical .tabnav[data-v-e671a734]{width:30%;flex:0 0 auto;white-space:normal;margin:0}@media only screen and (max-width:735px){.tabs--vertical .tabnav[data-v-e671a734]{width:100%}}.tabs--vertical .tabs-content[data-v-e671a734]{flex:1 1 auto;min-width:0;padding-right:var(--spacing-stacked-margin-xlarge)}@media only screen and (max-width:735px){.tabs--vertical .tabs-content[data-v-e671a734]{padding-right:0;padding-bottom:var(--spacing-stacked-margin-large)}}.fade-enter-active[data-v-e671a734],.fade-leave-active[data-v-e671a734]{transition:opacity .2s ease-in-out}.fade-enter[data-v-e671a734],.fade-leave-to[data-v-e671a734]{opacity:0}.fade-leave-active[data-v-e671a734]{position:absolute;top:0;left:0;right:0}.tasklist[data-v-6a56a858]{--checkbox-width:1rem;--indent-width:calc(var(--checkbox-width)/2);--content-margin:var(--indent-width);list-style-type:none;margin-left:var(--indent-width)}p[data-v-6a56a858]{margin-left:var(--content-margin)}p[data-v-6a56a858]:only-child{--content-margin:calc(var(--checkbox-width) + var(--indent-width))}input[type=checkbox]+p[data-v-6a56a858]{display:inline-block}.pager-control[data-v-58c8390a]{align-items:center;background:var(--control-color-fill,var(--color-fill));border:1px solid var(--control-color-fill,var(--color-grid));border-radius:50%;display:flex;height:var(--control-size,1rem);justify-content:center;opacity:1;transition:opacity .15s ease-in-out;width:var(--control-size,1rem)}.pager-control[disabled][data-v-58c8390a]{opacity:.6}@media only screen and (min-width:1251px){.pager-control[disabled][data-v-58c8390a]{opacity:0}.with-compact-controls .pager-control[disabled][data-v-58c8390a]{opacity:.6}}.icon[data-v-58c8390a]{height:var(--control-icon-size,50%);width:var(--control-icon-size,50%)}.pager-control.next .icon[data-v-58c8390a]{transform:scale(1)}.pager-control.previous .icon[data-v-58c8390a]{transform:scaleX(-1)}.pager[data-v-1ed6aae0]{--control-size:3em;--control-color-fill:var(--color-fill-tertiary);--control-color-figure:currentColor;--indicator-size:0.65em;--indicator-color-fill-active:currentColor;--indicator-color-fill-inactive:var(--color-fill-tertiary);--color-svg-icon:currentColor;--gutter-width:80px}.viewport[data-v-1ed6aae0]{display:flex;overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.viewport[data-v-1ed6aae0]::-webkit-scrollbar{height:0;width:0}.container[data-v-1ed6aae0]{position:relative}.gutter[data-v-1ed6aae0]{align-items:center;display:flex;justify-content:center;position:absolute;height:100%;top:0;width:var(--gutter-width);z-index:42}.with-compact-controls .gutter[data-v-1ed6aae0]{display:none}.gutter.left[data-v-1ed6aae0]{left:calc(var(--gutter-width)*-1)}.gutter.right[data-v-1ed6aae0]{right:calc(var(--gutter-width)*-1)}.page[data-v-1ed6aae0]{flex-shrink:0;margin-right:var(--gutter-width);position:relative;scroll-snap-align:start;transform:scale(1);transform-origin:center center;transition:transform .5s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}@media(prefers-reduced-motion){.page[data-v-1ed6aae0]{transition:none}}.page.active[data-v-1ed6aae0]{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.gutter .pager-control[data-v-1ed6aae0]{margin-top:calc(var(--control-size)*-1)}.indicators[data-v-1ed6aae0]{display:flex;flex-wrap:wrap;gap:1em;justify-content:center;margin-top:1rem}.with-compact-controls .indicators[data-v-1ed6aae0]{display:none}.indicator[data-v-1ed6aae0]{background:var(--indicator-color-fill-inactive);border:1px solid var(--indicator-color-fill-inactive);border-radius:50%;color:currentColor;display:block;flex:0 0 auto;height:var(--indicator-size);width:var(--indicator-size)}.indicator.active[data-v-1ed6aae0]{background:var(--indicator-color-fill-active);border-color:var(--indicator-color-fill-active)}.compact-controls[data-v-1ed6aae0]{display:none;gap:1em;justify-content:flex-end}.with-compact-controls .compact-controls[data-v-1ed6aae0]{display:flex}.button-cta[data-v-c9c81868]{background:var(--colors-button-light-background,var(--color-button-background));border-color:var(--color-button-border,currentcolor);border-radius:var(--button-border-radius,var(--border-radius,4px));border-style:var(--button-border-style,none);border-width:var(--button-border-width,medium);color:var(--colors-button-text,var(--color-button-text));cursor:pointer;min-width:1.7647058824rem;padding:.2352941176rem .8823529412rem;text-align:center;white-space:nowrap;display:inline-block;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.button-cta[data-v-c9c81868]:active{background:var(--colors-button-light-backgroundActive,var(--color-button-background-active));outline:none}.button-cta[data-v-c9c81868]:hover:not([disabled]){background:var(--colors-button-light-backgroundHover,var(--color-button-background-hover));text-decoration:none}.button-cta[data-v-c9c81868]:disabled{opacity:.32;cursor:default}.fromkeyboard .button-cta[data-v-c9c81868]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.button-cta.is-dark[data-v-c9c81868]{background:var(--colors-button-dark-background,#06f)}.button-cta.is-dark[data-v-c9c81868]:active{background:var(--colors-button-dark-backgroundActive,var(--color-button-background-active))}.button-cta.is-dark[data-v-c9c81868]:hover:not([disabled]){background:var(--colors-button-dark-backgroundHover,var(--color-button-background-hover))}.card-cover-wrap.rounded[data-v-28b14a83]{border-radius:var(--border-radius,4px);overflow:hidden}.card-cover[data-v-28b14a83]{background-color:var(--color-card-background);display:block;height:var(--card-cover-height,180px)}.card-cover.fallback[data-v-28b14a83],.card-cover[data-v-28b14a83] img{width:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;display:block;margin:0}.card-cover[data-v-28b14a83] img{height:100%}.card[data-v-0f7a4f31]{--margin-link:17px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow,transform .16s ease-out;will-change:box-shadow,transform;backface-visibility:hidden;border-radius:var(--border-radius,4px)}.card.large[data-v-0f7a4f31]{--margin-link:25.5px}.card.large.floating-style[data-v-0f7a4f31]{--margin-link:var(--spacing-stacked-margin-large)}.card[data-v-0f7a4f31]:hover{text-decoration:none}.card:hover .link[data-v-0f7a4f31]{text-decoration:underline}.card[data-v-0f7a4f31]:hover{transform:scale(1.007)}@media(prefers-reduced-motion:reduce){.card[data-v-0f7a4f31]:hover{transform:none}}.card.small[data-v-0f7a4f31]{--card-cover-height:235px}@media only screen and (max-width:1250px){.card.small[data-v-0f7a4f31]{--card-cover-height:163px}}.card.large[data-v-0f7a4f31]{--card-cover-height:359px}@media only screen and (max-width:1250px){.card.large[data-v-0f7a4f31]{--card-cover-height:249px}}.card.floating-style[data-v-0f7a4f31]{--color-card-shadow:transparent}.details[data-v-0f7a4f31]{flex-grow:1;display:flex;flex-direction:column;background-color:var(--color-card-background);padding:17px;position:relative;font-size:.8235294118rem;line-height:1.2857142857}.details[data-v-0f7a4f31],.large .details[data-v-0f7a4f31]{font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.large .details[data-v-0f7a4f31]{font-size:1rem;line-height:1.4705882353}@media only screen and (max-width:1250px){.large .details[data-v-0f7a4f31]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.floating-style .details[data-v-0f7a4f31]{--color-card-background:transparent;padding:17px 0}.eyebrow[data-v-0f7a4f31]{color:var(--color-card-eyebrow);display:block;margin-bottom:4px;font-size:.8235294118rem;line-height:1.2857142857}.eyebrow[data-v-0f7a4f31],.large .eyebrow[data-v-0f7a4f31]{font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.large .eyebrow[data-v-0f7a4f31]{font-size:1rem;line-height:1.2352941176}@media only screen and (max-width:1250px){.large .eyebrow[data-v-0f7a4f31]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title[data-v-0f7a4f31]{color:var(--color-card-content-text);font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.title[data-v-0f7a4f31]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-0f7a4f31]{font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.large .title[data-v-0f7a4f31]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.large .title[data-v-0f7a4f31]{font-size:1rem;line-height:1.2352941176;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.card-content[data-v-0f7a4f31]{flex-grow:1;color:var(--color-card-content-text);margin-top:4px}.link[data-v-0f7a4f31]{margin-top:var(--margin-link);display:flex;align-items:center}.link .link-icon[data-v-0f7a4f31]{height:.6em;width:.6em;margin-left:.3em}@media only screen and (max-width:735px){.card[data-v-0f7a4f31]{margin-left:auto;margin-right:auto}.card+.card[data-v-0f7a4f31]{margin-bottom:20px;margin-top:20px}.card.large[data-v-0f7a4f31],.card.small[data-v-0f7a4f31]{min-width:280px;--card-cover-height:227px}.card.large .link[data-v-0f7a4f31],.card.small .link[data-v-0f7a4f31]{margin-top:7px;position:relative}}.TopicTypeIcon[data-v-3b1b4787]{width:1em;height:1em;flex:0 0 auto;color:var(--icon-color,var(--color-figure-gray-secondary))}.TopicTypeIcon[data-v-3b1b4787] picture{flex:1}.TopicTypeIcon svg[data-v-3b1b4787],.TopicTypeIcon[data-v-3b1b4787] img{display:block;width:100%;height:100%}.nav-menu-items[data-v-a101abb4]{display:flex;justify-content:flex-end}.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]{display:block;opacity:0;padding:1rem 1.8823529412rem 1.6470588235rem 1.8823529412rem;transform:translate3d(0,-50px,0);transition:transform 1s cubic-bezier(.07,1.06,.27,.95) .5s,opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s}.nav--is-open.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]{opacity:1;transform:translateZ(0);transition-delay:.2s,.4s}.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]:not(:only-child):not(:last-child){padding-bottom:0}.nav--in-breakpoint-range .nav-menu-items[data-v-a101abb4]:not(:only-child):last-child{padding-top:0}.reference-card-grid-item[data-v-87dd3302]{--card-cover-height:auto}.reference-card-grid-item.card.large[data-v-87dd3302]{--card-cover-height:auto;min-width:0;max-width:none}.reference-card-grid-item[data-v-87dd3302] .card-cover{aspect-ratio:16/9}.reference-card-grid-item[data-v-87dd3302] .card-cover-wrap{border:1px solid var(--color-link-block-card-border)}.reference-card-grid-item__image[data-v-87dd3302]{display:flex;align-items:center;justify-content:center;font-size:80px;background-color:var(--color-fill-gray-quaternary)}.reference-card-grid-item__icon[data-v-87dd3302]{margin:0;display:flex;justify-content:center}.reference-card-grid-item__icon[data-v-87dd3302] .icon-inline{flex:1 1 auto}*+.links-block[data-v-b1a75c1c],.links-block[data-v-b1a75c1c]+*{margin-top:var(--spacing-stacked-margin-xlarge)}.topic-link-block[data-v-b1a75c1c]{margin-top:15px}.nav[data-v-40ae4336]{position:sticky;top:0;width:100%;height:3.0588235294rem;z-index:9997;--nav-padding:1.2941176471rem;color:var(--color-nav-color)}@media print{.nav[data-v-40ae4336]{position:relative}}@media only screen and (max-width:767px){.nav[data-v-40ae4336]{--nav-padding:0.9411764706rem;min-width:320px;height:2.8235294118rem}}.theme-dark.nav[data-v-40ae4336]{background:none;color:var(--color-nav-dark-color)}.nav__wrapper[data-v-40ae4336]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.nav__background[data-v-40ae4336]{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;transition:background-color 0s ease-in;background-color:var(--color-nav-background,none)}.nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-keyline)}.nav--is-sticking.nav__background[data-v-40ae4336]{background-color:none}.nav--no-bg-transition .nav__background[data-v-40ae4336]{transition:none!important}.nav--solid-background .nav__background[data-v-40ae4336]{background-color:var(--color-nav-solid-background);-webkit-backdrop-filter:none;backdrop-filter:none}.nav--is-open.nav--solid-background .nav__background[data-v-40ae4336],.nav--is-sticking.nav--solid-background .nav__background[data-v-40ae4336]{background-color:var(--color-nav-solid-background)}.nav--is-open.theme-dark.nav--solid-background .nav__background[data-v-40ae4336],.nav--is-sticking.theme-dark.nav--solid-background .nav__background[data-v-40ae4336],.theme-dark.nav--solid-background .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-solid-background)}.nav--in-breakpoint-range .nav__background[data-v-40ae4336]{min-height:2.8235294118rem;transition:background-color 0s ease .7s}.nav--is-sticking .nav__background[data-v-40ae4336]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color 0s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-sticking .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-sticking .nav__background[data-v-40ae4336]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-stuck)}}.theme-dark.nav--is-sticking .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-stuck)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-sticking .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-uiblur-stuck)}}.nav--is-open .nav__background[data-v-40ae4336]{background-color:var(--color-nav-expanded);max-height:none;transition:background-color 0s ease;transition-property:background-color,-webkit-backdrop-filter;transition-property:background-color,backdrop-filter;transition-property:background-color,backdrop-filter,-webkit-backdrop-filter}.nav--is-open .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-sticking-expanded-keyline)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.nav--is-open .nav__background[data-v-40ae4336]{-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--color-nav-uiblur-expanded)}}.theme-dark.nav--is-open .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-expanded)}@supports((-webkit-backdrop-filter:initial) or (backdrop-filter:initial)){.theme-dark.nav--is-open .nav__background[data-v-40ae4336]{background-color:var(--color-nav-dark-uiblur-expanded)}}.theme-dark .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-dark-keyline)}.nav--is-open.theme-dark .nav__background[data-v-40ae4336]:after,.nav--is-sticking.theme-dark .nav__background[data-v-40ae4336]:after{background-color:var(--color-nav-dark-sticking-expanded-keyline)}.nav__background[data-v-40ae4336]:after{content:"";display:block;position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:980px;height:1px;z-index:1}@media only screen and (max-width:1023px){.nav__background[data-v-40ae4336]:after{width:100%}}.nav--noborder .nav__background[data-v-40ae4336]:after{display:none}.nav--is-sticking.nav--noborder .nav__background[data-v-40ae4336]:after{display:block}.nav--fullwidth-border .nav__background[data-v-40ae4336]:after,.nav--is-open .nav__background[data-v-40ae4336]:after,.nav--is-sticking .nav__background[data-v-40ae4336]:after,.nav--solid-background .nav__background[data-v-40ae4336]:after{width:100%}.nav-overlay[data-v-40ae4336]{position:fixed;left:0;right:0;top:0;display:block;opacity:0}.nav--is-open .nav-overlay[data-v-40ae4336]{background-color:rgba(51,51,51,.4);transition:opacity .7s cubic-bezier(.07,1.06,.27,.95) .2s;bottom:0;opacity:1}.nav-wrapper[data-v-40ae4336]{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%;z-index:1}.pre-title[data-v-40ae4336]{display:flex}.nav-content[data-v-40ae4336]{display:flex;padding:0 var(--nav-padding);max-width:980px;margin:0 auto;position:relative;z-index:2;justify-content:space-between}.nav--is-wide-format .nav-content[data-v-40ae4336]{box-sizing:border-box;max-width:1920px;margin-left:auto;margin-right:auto}@supports(padding:calc(max(0px))){.nav-content[data-v-40ae4336]{padding-left:max(var(--nav-padding),env(safe-area-inset-left));padding-right:max(var(--nav-padding),env(safe-area-inset-right))}}.nav--in-breakpoint-range .nav-content[data-v-40ae4336]{display:grid;grid-template-columns:auto 1fr auto;grid-auto-rows:minmax(min-content,max-content);grid-template-areas:"pre-title title actions" "menu menu menu"}.nav-menu[data-v-40ae4336]{font-size:.7058823529rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);flex:1 1 auto;display:flex;justify-content:flex-end;min-width:0}@media only screen and (max-width:767px){.nav-menu[data-v-40ae4336]{font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.nav--in-breakpoint-range .nav-menu[data-v-40ae4336]{font-size:.8235294118rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);grid-area:menu}.nav-menu-tray[data-v-40ae4336]{align-items:center;display:flex;justify-content:space-between}.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{display:block;overflow:hidden;pointer-events:none;visibility:hidden;max-height:0;transition:max-height .4s ease-in 0s,visibility 0s linear 1s;width:100%}.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{max-height:calc(100vh - 5.64706rem);overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:auto;visibility:visible;transition-delay:.2s,0s}.nav--is-transitioning.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{overflow-y:hidden}.nav--is-sticking.nav--is-open.nav--in-breakpoint-range .nav-menu-tray[data-v-40ae4336]{max-height:calc(100vh - 2.82353rem)}.nav-actions[data-v-40ae4336]{display:flex;align-items:center}.nav--in-breakpoint-range .nav-actions[data-v-40ae4336]{grid-area:actions;justify-content:flex-end}.nav--in-breakpoint-range .pre-title+.nav-title[data-v-40ae4336]{grid-area:title}.nav--is-wide-format.nav--in-breakpoint-range .pre-title+.nav-title[data-v-40ae4336]{width:100%}.nav-title[data-v-40ae4336]{height:3.0588235294rem;font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:center;white-space:nowrap;box-sizing:border-box}@media only screen and (max-width:767px){.nav-title[data-v-40ae4336]{padding-top:0;height:2.8235294118rem;width:90%}}.nav-title[data-v-40ae4336] span{line-height:normal}.nav-title a[data-v-40ae4336]{letter-spacing:inherit;line-height:normal;margin:0;text-decoration:none;white-space:nowrap}.nav-title a[data-v-40ae4336]:hover{text-decoration:none}@media only screen and (max-width:767px){.nav-title a[data-v-40ae4336]{display:flex}}.nav-title a[data-v-40ae4336],.nav-title[data-v-40ae4336]{color:var(--color-figure-gray);transition:color 0s ease-in}.nav--is-open.theme-dark .nav-title a[data-v-40ae4336],.nav--is-open.theme-dark .nav-title[data-v-40ae4336],.nav--is-sticking.theme-dark .nav-title a[data-v-40ae4336],.nav--is-sticking.theme-dark .nav-title[data-v-40ae4336],.theme-dark .nav-title a[data-v-40ae4336],.theme-dark .nav-title[data-v-40ae4336]{color:var(--color-nav-dark-link-color)}.nav-ax-toggle[data-v-40ae4336]{display:none;position:absolute;top:0;left:0;width:1px;height:1px;z-index:10}.nav-ax-toggle[data-v-40ae4336]:focus{outline-offset:-6px;width:100%;height:100%}.nav--in-breakpoint-range .nav-ax-toggle[data-v-40ae4336]{display:block}.nav-menucta[data-v-40ae4336]{cursor:pointer;display:none;align-items:center;overflow:hidden;width:1.1764705882rem;-webkit-tap-highlight-color:rgba(0,0,0,0);height:2.8235294118rem}.nav--in-breakpoint-range .nav-menucta[data-v-40ae4336]{display:flex}.nav-menucta-chevron[data-v-40ae4336]{display:block;position:relative;width:100%;height:.7058823529rem;transition:transform .3s linear}.nav-menucta-chevron[data-v-40ae4336]:after,.nav-menucta-chevron[data-v-40ae4336]:before{content:"";display:block;position:absolute;top:.5882352941rem;width:.7058823529rem;height:.0588235294rem;transition:transform .3s linear;background:var(--color-figure-gray)}.nav-menucta-chevron[data-v-40ae4336]:before{right:50%;border-radius:.5px 0 0 .5px}.nav-menucta-chevron[data-v-40ae4336]:after{left:50%;border-radius:0 .5px .5px 0}.nav-menucta-chevron[data-v-40ae4336]:before{transform-origin:100% 100%;transform:rotate(40deg) scaleY(1.5)}.nav-menucta-chevron[data-v-40ae4336]:after{transform-origin:0 100%;transform:rotate(-40deg) scaleY(1.5)}.nav--is-open .nav-menucta-chevron[data-v-40ae4336]{transform:scaleY(-1)}.theme-dark .nav-menucta-chevron[data-v-40ae4336]:after,.theme-dark .nav-menucta-chevron[data-v-40ae4336]:before{background:var(--color-nav-dark-link-color)}[data-v-40ae4336] .nav-menu-link{color:var(--color-nav-link-color)}[data-v-40ae4336] .nav-menu-link:hover{color:var(--color-nav-link-color-hover);text-decoration:none}.theme-dark[data-v-40ae4336] .nav-menu-link{color:var(--color-nav-dark-link-color)}.theme-dark[data-v-40ae4336] .nav-menu-link:hover{color:var(--color-nav-dark-link-color-hover)}[data-v-40ae4336] .nav-menu-link.current{color:var(--color-nav-current-link);cursor:default}[data-v-40ae4336] .nav-menu-link.current:hover{color:var(--color-nav-current-link)}.theme-dark[data-v-40ae4336] .nav-menu-link.current,.theme-dark[data-v-40ae4336] .nav-menu-link.current:hover{color:var(--color-nav-dark-current-link)}.nav-menu-item[data-v-296e4e0c]{margin-left:1.4117647059rem;list-style:none;min-width:0}.nav--in-breakpoint-range .nav-menu-item[data-v-296e4e0c]{margin-left:0;width:100%;min-height:2.4705882353rem}.nav--in-breakpoint-range .nav-menu-item[data-v-296e4e0c]:first-child .nav-menu-link{border-top:0}.nav--in-breakpoint-range .nav-menu-item--animated[data-v-296e4e0c]{opacity:0;transform:none;transition:.5s ease;transition-property:transform,opacity}.nav--is-open.nav--in-breakpoint-range .nav-menu-item--animated[data-v-296e4e0c]{opacity:1;transform:translateZ(0);transition-delay:0s}.thematic-break[data-v-62d2922a]{border-top-color:var(--color-grid,currentColor);border-top-style:solid;border-width:1px 0 0 0}*+.thematic-break[data-v-62d2922a],.thematic-break[data-v-62d2922a]+*{margin-top:var(--spacing-stacked-margin-xlarge)}
\ No newline at end of file
diff --git a/css/989.4f123103.css b/css/989.4f123103.css
new file mode 100644
index 000000000..cced45bf1
--- /dev/null
+++ b/css/989.4f123103.css
@@ -0,0 +1,9 @@
+/*!
+ * This source file is part of the Swift.org open source project
+ *
+ * Copyright (c) 2021 Apple Inc. and the Swift project authors
+ * Licensed under Apache License v2.0 with Runtime Library Exception
+ *
+ * See https://swift.org/LICENSE.txt for license information
+ * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
+ */.badge[data-v-04624022]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;padding:2px 4px;white-space:nowrap;border-radius:var(--badge-border-radius,1px);border-style:var(--badge-border-style,none);border-width:var(--badge-border-width,1px);margin:auto;margin-left:5px;color:var(--colors-badge-text,var(--color-badge-text));background-color:var(--badge-color)}@media screen{[data-color-scheme=dark] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}.badge-deprecated[data-v-04624022]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-04624022]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}[data-v-3a32ffd0] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:var(--code-border-width,1px);border-style:var(--code-border-style,solid)}[data-v-3a32ffd0] .code-listing pre{padding:var(--code-block-style-elements-padding)}[data-v-3a32ffd0] .code-listing pre>code{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}[data-v-3a32ffd0] *+.code-listing,[data-v-3a32ffd0] *+.endpoint-example,[data-v-3a32ffd0] *+.inline-image-container,[data-v-3a32ffd0] *+aside,[data-v-3a32ffd0] *+figure,[data-v-3a32ffd0] .code-listing+*,[data-v-3a32ffd0] .endpoint-example+*,[data-v-3a32ffd0] .inline-image-container+*,[data-v-3a32ffd0] aside+*,[data-v-3a32ffd0] figure+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-3a32ffd0] *+dl,[data-v-3a32ffd0] dl+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] img{display:block;margin:auto;max-width:100%}[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ol li:not(:first-child),[data-v-3a32ffd0] ul,[data-v-3a32ffd0] ul li:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ul{margin-left:1.25rem}}[data-v-3a32ffd0] dt:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] dd{margin-left:2em}.topic-icon-wrapper[data-v-55f9d05d]{display:flex;align-items:center;justify-content:center;height:1.4705882353rem;flex:0 0 1.294rem;width:1.294rem;margin-right:1rem}.topic-icon[data-v-55f9d05d]{height:.8823529412rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon[data-v-55f9d05d] img{margin:0;display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.topic-icon.curly-brackets-icon[data-v-55f9d05d]{height:1rem}.token-method[data-v-295ad0ff]{font-weight:700}.token-keyword[data-v-295ad0ff]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-295ad0ff]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-295ad0ff]{color:var(--syntax-string,var(--color-syntax-strings))}.attribute-link[data-v-295ad0ff],.token-attribute[data-v-295ad0ff]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-295ad0ff]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-295ad0ff]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-295ad0ff]{background-color:var(--color-highlight-red)}.token-added[data-v-295ad0ff]{background-color:var(--color-highlight-green)}.decorator[data-v-17c84f82],.label[data-v-17c84f82]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-17c84f82]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.empty-token[data-v-17c84f82]{font-size:0}.empty-token[data-v-17c84f82]:after{content:" ";font-size:1rem}.abstract[data-v-0d9c6bcc],.link-block[data-v-0d9c6bcc] .badge{margin-left:2.294rem}.link-block .badge+.badge[data-v-0d9c6bcc]{margin-left:1rem}.link[data-v-0d9c6bcc]{display:flex}.link-block .badge[data-v-0d9c6bcc]{margin-top:.5rem}.link-block.has-inline-element[data-v-0d9c6bcc]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-0d9c6bcc]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-0d9c6bcc]{padding-top:5px;padding-bottom:5px;display:inline-flex}.link-block[data-v-0d9c6bcc],.link[data-v-0d9c6bcc]{box-sizing:inherit}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}}.abstract .topic-required[data-v-0d9c6bcc]:not(:first-child){margin-top:4px}.topic-required[data-v-0d9c6bcc]{font-size:.8em}.deprecated[data-v-0d9c6bcc]{text-decoration:line-through}
\ No newline at end of file
diff --git a/css/documentation-topic.da0b1931.css b/css/documentation-topic.da0b1931.css
new file mode 100644
index 000000000..8ae363d23
--- /dev/null
+++ b/css/documentation-topic.da0b1931.css
@@ -0,0 +1,9 @@
+/*!
+ * This source file is part of the Swift.org open source project
+ *
+ * Copyright (c) 2021 Apple Inc. and the Swift project authors
+ * Licensed under Apache License v2.0 with Runtime Library Exception
+ *
+ * See https://swift.org/LICENSE.txt for license information
+ * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
+ */.betainfo[data-v-ba3b3cc0]{font-size:.9411764706rem;padding:3rem 0;background-color:var(--color-fill-secondary)}.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .betainfo-container[data-v-ba3b3cc0]{padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{width:auto;padding-left:20px;padding-right:20px}}.static-width-container .betainfo-container[data-v-ba3b3cc0]{margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:692px}}@media only screen and (max-width:735px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:87.5%}}@media only screen and (max-width:320px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:215px}}.betainfo-label[data-v-ba3b3cc0]{font-weight:600;font-size:.9411764706rem}.betainfo-content[data-v-ba3b3cc0] p{margin-bottom:10px}a[data-v-2ca5e993]{text-decoration:underline;color:inherit;font-weight:600}.summary-section[data-v-3aa6f694]:last-of-type{margin-right:0}@media only screen and (max-width:735px){.summary-section[data-v-3aa6f694]{margin-right:0}}.title[data-v-246c819c]{color:var(--colors-text,var(--color-text));font-size:.8235294118rem;margin-right:.5rem;text-rendering:optimizeLegibility}.language[data-v-0e39c0ba]{padding-bottom:10px;justify-content:flex-end}.language-list[data-v-0e39c0ba],.language[data-v-0e39c0ba]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0;display:flex;align-items:center}.language-option.swift[data-v-0e39c0ba]{padding-right:10px;border-right:1px solid var(--colors-secondary-label,var(--color-secondary-label))}.language-option.objc[data-v-0e39c0ba]{padding-left:10px}.view-more-link[data-v-3f54e653]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;flex-flow:row-reverse;margin-bottom:1.3rem}.documentation-hero[data-v-283b44ff]{color:var(--color-documentation-intro-figure,var(--color-figure-gray));overflow:hidden;text-align:left;position:relative;padding-right:var(--doc-hero-right-offset)}.documentation-hero[data-v-283b44ff]:before{content:"";background:var(--standard-accent-color,var(--color-documentation-intro-fill,var(--color-fill-tertiary)));position:absolute;width:100%;height:100%}.documentation-hero[data-v-283b44ff]:after{background:transparent;opacity:.85;width:100%;position:absolute;content:"";height:100%;left:0;top:0}@media screen{[data-color-scheme=dark] .documentation-hero[data-v-283b44ff]:after{opacity:.55}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .documentation-hero[data-v-283b44ff]:after{opacity:.55}}.documentation-hero .icon[data-v-283b44ff]{position:absolute;margin-top:10px;margin-right:25px;right:0;width:250px;height:calc(100% - 20px);box-sizing:border-box}@media only screen and (max-width:735px){.documentation-hero .icon[data-v-283b44ff]{display:none}}.documentation-hero .background-icon[data-v-283b44ff]{color:var(--color-documentation-intro-accent,var(--color-figure-gray-secondary));display:block;width:250px;height:auto;opacity:.15;mix-blend-mode:normal;position:absolute;top:50%;left:0;transform:translateY(-50%);max-height:100%}.documentation-hero .background-icon[data-v-283b44ff] img,.documentation-hero .background-icon[data-v-283b44ff] svg{width:100%;height:100%}@media screen{[data-color-scheme=dark] .documentation-hero .background-icon[data-v-283b44ff]{mix-blend-mode:normal;opacity:.15}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .documentation-hero .background-icon[data-v-283b44ff]{mix-blend-mode:normal;opacity:.15}}.documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){padding-top:2.3529411765rem;padding-bottom:2.3529411765rem;position:relative;z-index:1}.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:692px}}@media only screen and (max-width:735px){.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .documentation-hero__content[data-v-283b44ff]:not(.minimized-hero){width:215px}}.documentation-hero .minimized-hero[data-v-283b44ff]{padding:1.3em 1.4em;position:relative;z-index:1}.documentation-hero__above-content[data-v-283b44ff]{position:relative;z-index:1}.documentation-hero--disabled[data-v-283b44ff]{background:none;color:var(--colors-text,var(--color-text))}.documentation-hero--disabled[data-v-283b44ff]:after,.documentation-hero--disabled[data-v-283b44ff]:before{content:none}.short-hero[data-v-283b44ff]{padding-top:3.5294117647rem;padding-bottom:3.5294117647rem}.extra-bottom-padding[data-v-283b44ff]{padding-bottom:3.8235294118rem}ul[data-v-068842ec]{list-style-type:none;margin:0}ul li:first-child .base-link[data-v-068842ec]{margin-top:0}.parent-item .base-link[data-v-068842ec]{font-weight:700}.base-link[data-v-068842ec]{color:var(--color-figure-gray-secondary);font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;margin:5px 0;transition:color .15s ease-in;max-width:100%}.active .base-link[data-v-068842ec]{color:var(--color-text)}[data-v-3a32ffd0] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:var(--code-border-width,1px);border-style:var(--code-border-style,solid)}[data-v-3a32ffd0] .code-listing pre{padding:var(--code-block-style-elements-padding)}[data-v-3a32ffd0] .code-listing pre>code{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}[data-v-3a32ffd0] *+.code-listing,[data-v-3a32ffd0] *+.endpoint-example,[data-v-3a32ffd0] *+.inline-image-container,[data-v-3a32ffd0] *+aside,[data-v-3a32ffd0] *+figure,[data-v-3a32ffd0] .code-listing+*,[data-v-3a32ffd0] .endpoint-example+*,[data-v-3a32ffd0] .inline-image-container+*,[data-v-3a32ffd0] aside+*,[data-v-3a32ffd0] figure+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-3a32ffd0] *+dl,[data-v-3a32ffd0] dl+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] img{display:block;margin:auto;max-width:100%}[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ol li:not(:first-child),[data-v-3a32ffd0] ul,[data-v-3a32ffd0] ul li:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ul{margin-left:1.25rem}}[data-v-3a32ffd0] dt:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] dd{margin-left:2em}.conditional-constraints[data-v-4c6f3ed1] code{color:var(--colors-secondary-label,var(--color-secondary-label))}.token-method[data-v-295ad0ff]{font-weight:700}.token-keyword[data-v-295ad0ff]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-295ad0ff]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-295ad0ff]{color:var(--syntax-string,var(--color-syntax-strings))}.attribute-link[data-v-295ad0ff],.token-attribute[data-v-295ad0ff]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-295ad0ff]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-295ad0ff]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-295ad0ff]{background-color:var(--color-highlight-red)}.token-added[data-v-295ad0ff]{background-color:var(--color-highlight-green)}.source[data-v-dc9cfb3a]{background:var(--background,var(--color-code-background));border-color:var(--color-grid);color:var(--text,var(--color-code-plain));border-style:solid;border-width:1px;padding:var(--code-block-style-elements-padding);speak:literal-punctuation;line-height:25px;filter:blur(0)}.source.displays-multiple-lines[data-v-dc9cfb3a],.source[data-v-dc9cfb3a]{border-radius:var(--border-radius,4px)}.source>code[data-v-dc9cfb3a]{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);display:block}.platforms[data-v-f961f3da]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:.45rem;margin-top:var(--spacing-stacked-margin-xlarge)}.changed .platforms[data-v-f961f3da]{padding-left:.588rem}.platforms[data-v-f961f3da]:first-of-type{margin-top:1rem}.source[data-v-f961f3da]{transition:margin .3s linear}.platforms+.source[data-v-f961f3da]{margin:0}.declaration-pill:not(.declaration-pill--expanded) .source[data-v-f961f3da] .highlighted{background:unset;font-weight:400}.declaration-pill--expanded .source[data-v-f961f3da]{border-width:1px}.declaration-pill--expanded .source[data-v-f961f3da] a{pointer-events:none}.declaration-pill--expanded.selected-declaration .source[data-v-f961f3da]{border-color:var(--color-focus-border-color,var(--color-focus-border-color))}.declaration-pill--expanded:not(.selected-declaration) .source[data-v-f961f3da]{background:none}.changed .source[data-v-f961f3da]{background:none;border:none;margin-top:0;margin-bottom:0;margin-left:2.1764705882rem;padding-left:0}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.declaration-pill--expanded[data-v-18e7c20c]{transition-timing-function:linear;transition-property:opacity,height;margin:var(--declaration-code-listing-margin)}.declaration-pill--expanded>button[data-v-18e7c20c]{display:block;width:100%}.declaration-pill--expanded.expand-enter[data-v-18e7c20c],.declaration-pill--expanded.expand-leave-to[data-v-18e7c20c]{opacity:0}.declaration-pill--expanded.expand-enter .source[data-v-18e7c20c],.declaration-pill--expanded.expand-leave-to .source[data-v-18e7c20c]{margin:0}.declaration-pill--expanded[data-v-18e7c20c] .highlighted{background:var(--color-syntax-highlighted,mark);font-weight:600;transition:background .3s linear,font-weight .3s linear}.changed.selected-declaration[data-v-18e7c20c],.declaration-diff[data-v-0c2301a5]{background:var(--background,var(--color-code-background))}.declaration-diff-version[data-v-0c2301a5]{padding-left:.588rem;padding-left:2.1764705882rem;font-size:1rem;line-height:1.5294117647;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);margin:0}.declaration-diff-current[data-v-0c2301a5]{padding-top:8px;padding-bottom:5px}.declaration-diff-previous[data-v-0c2301a5]{padding-top:5px;padding-bottom:8px;background-color:var(--color-changes-modified-previous-background);border-radius:0 0 var(--border-radius,4px) var(--border-radius,4px);position:relative}.declaration-source-link[data-v-5863919c]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:center;margin-top:var(--declaration-source-link-margin,var(--spacing-stacked-margin-large))}.declaration-icon[data-v-5863919c]{width:1em;margin-right:5px}.conditional-constraints[data-v-722d45cf],.declaration-list[data-v-722d45cf]:not(:first-child){margin-top:var(--declaration-conditional-constraints-margin,20px)}.abstract[data-v-f3f57cbe]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.abstract[data-v-f3f57cbe]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-f3f57cbe] p:last-child{margin-bottom:0}.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:692px}}@media only screen and (max-width:735px){.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .container[data-v-0e6b292c]:not(.minimized-container){width:215px}}.container[data-v-0e6b292c]{--section-spacing-single-side:40px;padding-bottom:var(--section-spacing-single-side)}.container.minimized-container[data-v-0e6b292c]{--section-spacing-single-side:1.5em}.container.minimized-container .contenttable-section[data-v-0e6b292c],.title[data-v-0e6b292c]{padding-top:var(--section-spacing-single-side)}.title[data-v-0e6b292c]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border-top-color:var(--color-grid);border-top-style:solid;border-top-width:var(--content-table-title-border-width,1px)}@media only screen and (max-width:1250px){.title[data-v-0e6b292c]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-0e6b292c]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title+.contenttable-section[data-v-1b0546d9]{margin-top:0}.contenttable-section[data-v-1b0546d9]{align-items:baseline;padding-top:2.353rem}.contenttable-section[data-v-1b0546d9]:last-child{margin-bottom:0}[data-v-1b0546d9] .contenttable-title{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-1b0546d9] .contenttable-title{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.contenttable-section[data-v-1b0546d9]{align-items:unset;border-top:none;display:inherit;margin:0}.section-content[data-v-1b0546d9],.section-title[data-v-1b0546d9]{padding:0}[data-v-1b0546d9] .contenttable-title{margin:0 0 2.353rem 0;padding-bottom:.5rem}}.badge[data-v-04624022]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;padding:2px 4px;white-space:nowrap;border-radius:var(--badge-border-radius,1px);border-style:var(--badge-border-style,none);border-width:var(--badge-border-width,1px);margin:auto;margin-left:5px;color:var(--colors-badge-text,var(--color-badge-text));background-color:var(--badge-color)}@media screen{[data-color-scheme=dark] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .badge[data-v-04624022]{background-color:var(--badge-dark-color)}}.badge-deprecated[data-v-04624022]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-04624022]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}.topic-icon-wrapper[data-v-55f9d05d]{display:flex;align-items:center;justify-content:center;height:1.4705882353rem;flex:0 0 1.294rem;width:1.294rem;margin-right:1rem}.topic-icon[data-v-55f9d05d]{height:.8823529412rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon[data-v-55f9d05d] img{margin:0;display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.topic-icon.curly-brackets-icon[data-v-55f9d05d]{height:1rem}.decorator[data-v-17c84f82],.label[data-v-17c84f82]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-17c84f82]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.empty-token[data-v-17c84f82]{font-size:0}.empty-token[data-v-17c84f82]:after{content:" ";font-size:1rem}.abstract[data-v-0d9c6bcc],.link-block[data-v-0d9c6bcc] .badge{margin-left:2.294rem}.link-block .badge+.badge[data-v-0d9c6bcc]{margin-left:1rem}.link[data-v-0d9c6bcc]{display:flex}.link-block .badge[data-v-0d9c6bcc]{margin-top:.5rem}.link-block.has-inline-element[data-v-0d9c6bcc]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-0d9c6bcc]{margin-left:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-0d9c6bcc]{padding-top:5px;padding-bottom:5px;display:inline-flex}.link-block[data-v-0d9c6bcc],.link[data-v-0d9c6bcc]{box-sizing:inherit}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-0d9c6bcc],.link.changed.changed[data-v-0d9c6bcc]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-0d9c6bcc],.link.changed[data-v-0d9c6bcc]{padding-left:0;padding-right:0}}.abstract .topic-required[data-v-0d9c6bcc]:not(:first-child){margin-top:4px}.topic-required[data-v-0d9c6bcc]{font-size:.8em}.deprecated[data-v-0d9c6bcc]{text-decoration:line-through}.section-content>.content[data-v-1c2724f5],.topic[data-v-1c2724f5]{margin-top:15px}.no-title .section-content>.content[data-v-1c2724f5]:first-child,.no-title .topic[data-v-1c2724f5]:first-child{margin-top:0}.property-metadata[data-v-f911f232]{color:var(--color-figure-gray-secondary)}.parameter-attributes[data-v-c0edcb84]{margin-left:1rem}[data-v-c0edcb84] .property-metadata{color:currentColor}.datalist dd{padding-left:2rem}.datalist dt{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.datalist dt:first-of-type{padding-top:0}.type[data-v-791bac44]:first-letter{text-transform:capitalize}.detail-type[data-v-d66cd00c]{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.detail-type[data-v-d66cd00c]:first-child{padding-top:0}@media only screen and (max-width:735px){.detail-type[data-v-d66cd00c]{padding-left:0}}.detail-content[data-v-d66cd00c]{padding-left:2rem}@media only screen and (max-width:735px){.detail-content[data-v-d66cd00c]{padding-left:0}}.param-name[data-v-5ef1227e]{font-weight:600;padding-left:1rem;padding-top:var(--spacing-param)}.param-name[data-v-5ef1227e]:first-child{padding-top:0}@media only screen and (max-width:735px){.param-name[data-v-5ef1227e]{padding-left:0}}.param-content[data-v-5ef1227e]{padding-left:2rem}@media only screen and (max-width:735px){.param-content[data-v-5ef1227e]{padding-left:0}}.param-content[data-v-5ef1227e] dt{font-weight:600}.param-content[data-v-5ef1227e] dd{margin-left:1em}.parameters-table[data-v-eee7e94e] .change-added,.parameters-table[data-v-eee7e94e] .change-removed{display:inline-block;max-width:100%}.parameters-table[data-v-eee7e94e] .change-removed,.parameters-table[data-v-eee7e94e] .token-removed{text-decoration:line-through}.param[data-v-eee7e94e]{font-size:.8823529412rem;box-sizing:border-box}.param.changed[data-v-eee7e94e]{display:flex;flex-flow:row wrap;padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.param.changed.changed[data-v-eee7e94e]{padding-right:1rem}@media only screen and (max-width:735px){.param.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}.param.changed.changed[data-v-eee7e94e]{padding-right:17px;padding-left:2.1764705882rem}.param.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}}.param.changed.changed[data-v-eee7e94e]{padding-left:0;padding-right:0}.param.changed+.param.changed[data-v-eee7e94e]{margin-top:calc(var(--spacing-param)/2)}.changed .param-content[data-v-eee7e94e],.changed .param-symbol[data-v-eee7e94e]{padding-top:2px;padding-bottom:2px}@media only screen and (max-width:735px){.changed .param-content[data-v-eee7e94e]{padding-top:0}.changed .param-symbol[data-v-eee7e94e]{padding-bottom:0}}.param-symbol[data-v-eee7e94e]{text-align:right}.changed .param-symbol[data-v-eee7e94e]{padding-left:2.1764705882rem}@media only screen and (max-width:735px){.param-symbol[data-v-eee7e94e]{text-align:left}.changed .param-symbol[data-v-eee7e94e]{padding-left:0}}.param-symbol[data-v-eee7e94e] .type-identifier-link{color:var(--color-link)}.param+.param[data-v-eee7e94e]{margin-top:var(--spacing-param)}.param+.param[data-v-eee7e94e]:first-child{margin-top:0}.param-content[data-v-eee7e94e]{padding-left:1rem;padding-left:2.1764705882rem}.changed .param-content[data-v-eee7e94e]{padding-right:1rem}@media only screen and (max-width:735px){.param-content[data-v-eee7e94e]{padding-left:0;padding-right:0}}.property-text{font-weight:700}.property-metadata[data-v-549ed0a8]{color:var(--color-figure-gray-secondary)}.property-name[data-v-39899ccf]{font-weight:700}.property-name.deprecated[data-v-39899ccf]{text-decoration:line-through}.property-deprecated[data-v-39899ccf]{margin-left:0}.content[data-v-39899ccf],.content[data-v-39899ccf] p:first-child{display:inline}.response-mimetype[data-v-18890a0f]{color:var(--color-figure-gray-secondary)}.part-name[data-v-68facc94]{font-weight:700}.content[data-v-68facc94],.content[data-v-68facc94] p:first-child{display:inline}.param-name[data-v-0d9b752e]{font-weight:700}.param-name.deprecated[data-v-0d9b752e]{text-decoration:line-through}.param-deprecated[data-v-0d9b752e]{margin-left:0}.content[data-v-0d9b752e],.content[data-v-0d9b752e] p:first-child{display:inline}.response-name[data-v-362f5b54],.response-reason[data-v-362f5b54]{font-weight:700}@media only screen and (max-width:735px){.response-reason[data-v-362f5b54]{display:none}}.response-name>code>.reason[data-v-362f5b54]{display:none}@media only screen and (max-width:735px){.response-name>code>.reason[data-v-362f5b54]{display:initial}}.link[data-v-241f4141]{display:flex;margin-bottom:.5rem}.link-block[data-v-241f4141],.link[data-v-241f4141]{box-sizing:inherit}.link-block.changed[data-v-241f4141],.link.changed[data-v-241f4141]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.link-block.changed.changed[data-v-241f4141],.link.changed.changed[data-v-241f4141]{padding-right:1rem}@media only screen and (max-width:735px){.link-block.changed[data-v-241f4141],.link.changed[data-v-241f4141]{padding-left:0;padding-right:0}.link-block.changed.changed[data-v-241f4141],.link.changed.changed[data-v-241f4141]{padding-right:17px;padding-left:2.1764705882rem}.link-block.changed[data-v-241f4141],.link.changed[data-v-241f4141]{padding-left:0;padding-right:0}}.mention-icon[data-v-241f4141]{margin-right:.25rem}.primary-content.with-border[data-v-65c116be]:before{border-top-color:var(--colors-grid,var(--color-grid));border-top-style:solid;border-top-width:var(--content-table-title-border-width,1px);content:"";display:block}.primary-content[data-v-65c116be]>*{margin-bottom:40px;margin-top:40px}.primary-content[data-v-65c116be]>:first-child{margin-top:2.353rem}.relationships-list[data-v-ba5cad92]{list-style:none}.relationships-list.column[data-v-ba5cad92]{margin-left:0;margin-top:15px}.relationships-list.inline[data-v-ba5cad92]{display:flex;flex-direction:row;flex-wrap:wrap;margin-top:15px;margin-left:0}.relationships-list.inline li[data-v-ba5cad92]:not(:last-child):after{content:", "}.relationships-list.changed[data-v-ba5cad92]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:inline-flex;width:100%;box-sizing:border-box}.relationships-list.changed.changed[data-v-ba5cad92]{padding-right:1rem}@media only screen and (max-width:735px){.relationships-list.changed[data-v-ba5cad92]{padding-left:0;padding-right:0}.relationships-list.changed.changed[data-v-ba5cad92]{padding-right:17px;padding-left:2.1764705882rem}.relationships-list.changed[data-v-ba5cad92]{padding-left:0;padding-right:0}}.relationships-list.changed[data-v-ba5cad92]:after{margin-top:.6176470588rem}.relationships-list.changed.column[data-v-ba5cad92]{display:block;box-sizing:border-box}.relationships-item[data-v-ba5cad92],.relationships-list[data-v-ba5cad92]{box-sizing:inherit}.conditional-constraints[data-v-ba5cad92]{font-size:.8235294118rem;margin:.1764705882rem 0 .5882352941rem 1.1764705882rem}.platform[data-v-3da26baa],.technology[data-v-3da26baa]{display:inline-flex;align-items:center}.tech-icon[data-v-3da26baa]{height:12px;padding-right:5px;--color-svg-icon:var(--color-figure-gray)}.changed[data-v-3da26baa]{padding-left:17px;border:none}.changed[data-v-3da26baa]:after{all:unset}.changed[data-v-3da26baa]:before{background-image:url(../img/modified-icon.efb2697d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:8px;position:absolute;top:0;width:20px;height:20px;margin:0;left:-5px}@media screen{[data-color-scheme=dark] .changed[data-v-3da26baa]:before{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed[data-v-3da26baa]:before{background-image:url(../img/modified-icon.efb2697d.svg)}}.changed-added[data-v-3da26baa]:before{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .changed-added[data-v-3da26baa]:before{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added[data-v-3da26baa]:before{background-image:url(../img/added-icon.832a5d2c.svg)}}.changed-deprecated[data-v-3da26baa]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated[data-v-3da26baa]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated[data-v-3da26baa]:before{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.availability[data-v-3da26baa]{display:flex;flex-flow:row wrap;gap:10px;margin-top:.8823529412rem;font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.availability>[data-v-3da26baa]:after{content:"";display:inline-block;width:1px;height:1em;background:currentColor;margin-left:10px}.availability>[data-v-3da26baa]:last-child:after{content:none}.topictitle[data-v-6630a012]{margin-bottom:.7058823529rem}.topictitle[data-v-6630a012]:last-child{margin-bottom:0}@media only screen and (max-width:735px){.topictitle[data-v-6630a012]{margin:0}}.eyebrow[data-v-6630a012]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-documentation-intro-eyebrow,var(--colors-secondary-label,var(--color-secondary-label)));display:block;margin-bottom:.8823529412rem}@media only screen and (max-width:735px){.eyebrow[data-v-6630a012]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title[data-v-6630a012]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-documentation-intro-title,var(--colors-header-text,var(--color-header-text)))}@media only screen and (max-width:1250px){.title[data-v-6630a012]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-6630a012]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}small[data-v-6630a012]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding-left:10px}@media only screen and (max-width:1250px){small[data-v-6630a012]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}small[data-v-6630a012]:before{content:attr(data-tag-name)}small.Beta[data-v-6630a012]{color:var(--color-badge-beta)}@media screen{[data-color-scheme=dark] small.Beta[data-v-6630a012]{color:var(--color-badge-dark-beta)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] small.Beta[data-v-6630a012]{color:var(--color-badge-dark-beta)}}small.Deprecated[data-v-6630a012]{color:var(--color-badge-deprecated)}@media screen{[data-color-scheme=dark] small.Deprecated[data-v-6630a012]{color:var(--color-badge-dark-deprecated)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] small.Deprecated[data-v-6630a012]{color:var(--color-badge-dark-deprecated)}}.OnThisPageStickyContainer[data-v-39ac6ed0]{margin-top:2.353rem;position:sticky;top:3.8235294118rem;align-self:flex-start;flex:0 0 auto;width:192px;padding-right:1.2941176471rem;box-sizing:border-box;padding-bottom:var(--spacing-stacked-margin-small);max-height:calc(100vh - 3.82353rem);overflow:auto}@media print{.OnThisPageStickyContainer[data-v-39ac6ed0]{display:none}}@media only screen and (max-width:735px){.OnThisPageStickyContainer[data-v-39ac6ed0]{display:none}}.nav-menu-link[data-v-2ad31daf]{display:inline-block;line-height:22px;white-space:nowrap}.nav--in-breakpoint-range .nav-menu-link[data-v-2ad31daf]{line-height:42px;border-top:1px solid;border-color:var(--color-nav-rule);display:flex;flex:1 0 100%;height:100%;align-items:center}.theme-dark.nav--in-breakpoint-range .nav-menu-link[data-v-2ad31daf]{border-color:var(--color-nav-dark-rule)}.hierarchy-collapsed-items[data-v-7b701104]{position:relative;display:inline-flex;align-items:center}.hierarchy-collapsed-items[data-v-7b701104]:before{content:"/";width:.2941176471rem;margin:0 .2941176471rem}.nav--in-breakpoint-range .hierarchy-collapsed-items[data-v-7b701104],:root.no-js .hierarchy-collapsed-items[data-v-7b701104]{display:none}.hierarchy-collapsed-items .toggle[data-v-7b701104]{background:var(--color-nav-hierarchy-collapse-background);border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:var(--border-radius,4px);border-style:solid;border-width:0;font-weight:600;height:1.1176470588rem;text-align:center;width:2.1176470588rem;display:flex;align-items:center;justify-content:center}.theme-dark .hierarchy-collapsed-items .toggle[data-v-7b701104]{background:var(--color-nav-dark-hierarchy-collapse-background)}.hierarchy-collapsed-items .toggle.focused[data-v-7b701104],.hierarchy-collapsed-items .toggle[data-v-7b701104]:active,.hierarchy-collapsed-items .toggle[data-v-7b701104]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.indicator[data-v-7b701104]{width:1em;height:1em;display:flex;align-items:center}.indicator .toggle-icon[data-v-7b701104]{width:100%}.dropdown[data-v-7b701104]{background:var(--color-nav-hierarchy-collapse-background);margin:0;list-style-type:none;border-color:var(--color-nav-hierarchy-collapse-borders);border-radius:var(--border-radius,4px);border-style:solid;box-shadow:0 1px 4px -1px var(--color-figure-gray-secondary);border-width:0;padding:0 .5rem;position:absolute;z-index:42;top:calc(100% + .41176rem)}.theme-dark .dropdown[data-v-7b701104]{background:var(--color-nav-dark-hierarchy-collapse-background);border-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown.collapsed[data-v-7b701104]{opacity:0;transform:translate3d(0,-.4117647059rem,0);transition:opacity .25s ease,transform .25s ease,visibility 0s linear .25s;visibility:hidden}.dropdown[data-v-7b701104]:not(.collapsed){opacity:1;transform:none;transition:opacity .25s ease,transform .25s ease,visibility 0s linear 0s;visibility:visible}.nav--in-breakpoint-range .dropdown[data-v-7b701104]:not(.collapsed){display:none}.dropdown[data-v-7b701104]:before{border-bottom-color:var(--color-nav-hierarchy-collapse-background);border-bottom-style:solid;border-bottom-width:.5rem;border-left-color:transparent;border-left-style:solid;border-left-width:.5rem;border-right-color:transparent;border-right-style:solid;border-right-width:.5rem;content:"";left:1.4411764706rem;position:absolute;top:-.4411764706rem}.theme-dark .dropdown[data-v-7b701104]:before{border-bottom-color:var(--color-nav-dark-hierarchy-collapse-background)}.dropdown-item[data-v-7b701104]{border-top-color:var(--color-nav-hierarchy-collapse-borders);border-top-style:solid;border-top-width:1px}.theme-dark .dropdown-item[data-v-7b701104]{border-top-color:var(--color-nav-dark-hierarchy-collapse-borders)}.dropdown-item[data-v-7b701104]:first-child{border-top:none}.nav-menu-link[data-v-7b701104]{max-width:57.6470588235rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;padding:.75rem 1rem}.hierarchy-item[data-v-13293168]{display:flex;align-items:center;margin-left:0}.hierarchy-item[data-v-13293168]:not(:first-child):before{content:"/";width:.2941176471rem;margin:0 .2941176471rem}.nav--in-breakpoint-range .hierarchy-item[data-v-13293168]{border-top:1px solid var(--color-nav-hierarchy-item-borders);display:flex;align-items:center}.theme-dark.nav--in-breakpoint-range .hierarchy-item[data-v-13293168]{border-top-color:var(--color-nav-dark-hierarchy-item-borders)}.nav--in-breakpoint-range .hierarchy-item[data-v-13293168]:first-of-type{border-top:none}.hierarchy-item.collapsed[data-v-13293168]{display:none}:root.no-js .hierarchy-item.collapsed[data-v-13293168]{display:flex}.nav--in-breakpoint-range .hierarchy-item.collapsed[data-v-13293168]{display:inline-block}.item[data-v-13293168]{display:inline-block;vertical-align:middle}.nav--in-breakpoint-range .item[data-v-13293168]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:100%;line-height:2.4705882353rem}@media only screen and (min-width:768px){.hierarchy-item:first-child:last-child .item[data-v-13293168],.hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-13293168]{max-width:45rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:last-child .item[data-v-13293168],.has-badge .hierarchy-item:first-child:last-child~.hierarchy-item .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(2) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-13293168]{max-width:36rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(2) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(2)~.hierarchy-item .item[data-v-13293168]{max-width:28.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(3) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-13293168]{max-width:27rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(3) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(3)~.hierarchy-item .item[data-v-13293168]{max-width:21.6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(4) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(4)~.hierarchy-item .item[data-v-13293168]{max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(4) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(4)~.hierarchy-item .item[data-v-13293168]{max-width:14.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-item:first-child:nth-last-child(5) .item[data-v-13293168],.hierarchy-item:first-child:nth-last-child(5)~.hierarchy-item .item[data-v-13293168]{max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.has-badge .hierarchy-item:first-child:nth-last-child(5) .item[data-v-13293168],.has-badge .hierarchy-item:first-child:nth-last-child(5)~.hierarchy-item .item[data-v-13293168]{max-width:7.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item .item[data-v-13293168]{max-width:10.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hierarchy-collapsed-items~.hierarchy-item:last-child .item[data-v-13293168]{max-width:none}.has-badge .hierarchy-collapsed-items~.hierarchy-item .item[data-v-13293168]{max-width:8.64rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.hierarchy[data-v-d54f3438]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);justify-content:flex-start;align-items:center;margin:0 0 1.1764705882rem 0;min-width:0}.nav--in-breakpoint-range .hierarchy[data-v-d54f3438]{margin:0}.hierarchy .root-hierarchy .item[data-v-d54f3438]{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-v-d54f3438] a.nav-menu-link{color:inherit;text-decoration:underline}.declaration-list-menu[data-v-7c6f2f58]{position:relative;width:100%}.declaration-list-menu .declaration-list-toggle[data-v-7c6f2f58]{display:flex;flex-direction:row;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--color-other-decl-button);padding:5px 15px;color:var(--colors-link,var(--color-link));z-index:1;gap:5px;white-space:nowrap;align-items:center}.declaration-list-menu .icon[data-v-7c6f2f58]{display:flex}.declaration-list-menu .icon svg[data-v-7c6f2f58]{transition-duration:.4s;transition-timing-function:linear;transition-property:transform;width:15px;height:15px;fill:var(--colors-link,var(--color-link))}.declaration-list-menu .icon svg.expand[data-v-7c6f2f58]{transform:rotate(45deg)}.doc-topic[data-v-7c6f2f58]{display:flex;flex-direction:column;height:100%}.doc-topic.with-on-this-page[data-v-7c6f2f58]{--doc-hero-right-offset:192px}#app-main[data-v-7c6f2f58]{outline-style:none;height:100%}[data-v-7c6f2f58] .minimized-title{margin-bottom:.833rem}[data-v-7c6f2f58] .minimized-title .title{font-size:1.416rem;font-weight:700}[data-v-7c6f2f58] .minimized-title small{font-size:1rem;padding-left:.416rem}.minimized-abstract[data-v-7c6f2f58]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.container[data-v-7c6f2f58]:not(.minimized-container){outline-style:none}.full-width-container .container[data-v-7c6f2f58]:not(.minimized-container){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .container[data-v-7c6f2f58]:not(.minimized-container){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .container[data-v-7c6f2f58]:not(.minimized-container){max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .container[data-v-7c6f2f58]:not(.minimized-container){max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .container[data-v-7c6f2f58]:not(.minimized-container){width:auto;padding-left:20px;padding-right:20px}}.static-width-container .container[data-v-7c6f2f58]:not(.minimized-container){margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .container[data-v-7c6f2f58]:not(.minimized-container){width:692px}}@media only screen and (max-width:735px){.static-width-container .container[data-v-7c6f2f58]:not(.minimized-container){width:87.5%}}@media only screen and (max-width:320px){.static-width-container .container[data-v-7c6f2f58]:not(.minimized-container){width:215px}}[data-v-7c6f2f58] .minimized-container{outline-style:none;--spacing-stacked-margin-large:0.667em;--spacing-stacked-margin-xlarge:1em;--declaration-code-listing-margin:1em 0 0 0;--declaration-conditional-constraints-margin:1em;--declaration-source-link-margin:0.833em;--code-block-style-elements-padding:7px 12px;--spacing-param:var(--spacing-stacked-margin-large);--aside-border-radius:6px;--code-border-radius:6px}[data-v-7c6f2f58] .minimized-container:not(.declarations-container){padding-left:1.4rem;padding-right:1.4rem}[data-v-7c6f2f58] .minimized-container .description{margin-bottom:1.5em}[data-v-7c6f2f58] .minimized-container>.primary-content>*{margin-top:1.5em;margin-bottom:1.5em}[data-v-7c6f2f58] .minimized-container .description{margin-top:0}[data-v-7c6f2f58] .minimized-container h1,[data-v-7c6f2f58] .minimized-container h2,[data-v-7c6f2f58] .minimized-container h3,[data-v-7c6f2f58] .minimized-container h4,[data-v-7c6f2f58] .minimized-container h5,[data-v-7c6f2f58] .minimized-container h6{font-size:1rem;font-weight:700}[data-v-7c6f2f58] .minimized-container h2{font-size:1.083rem}[data-v-7c6f2f58] .minimized-container h1{font-size:1.416rem}[data-v-7c6f2f58] .minimized-container aside{padding:.667rem 1rem}[data-v-7c6f2f58] .minimized-container .source{border-radius:var(--code-border-radius);margin:var(--declaration-code-listing-margin)}[data-v-7c6f2f58] .minimized-container .single-line{border-radius:var(--code-border-radius)}.description[data-v-7c6f2f58]{margin-bottom:2.353rem}.description[data-v-7c6f2f58]:empty{display:none}.description.after-enhanced-hero[data-v-7c6f2f58]{margin-top:2.353rem}.description[data-v-7c6f2f58] .content+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-7c6f2f58] .no-primary-content{--content-table-title-border-width:0px}.sample-download[data-v-7c6f2f58]{margin-top:20px}.declarations-container[data-v-7c6f2f58]{margin-top:40px}.declarations-container.minimized-container[data-v-7c6f2f58]{margin-top:0}[data-v-7c6f2f58] h1{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7c6f2f58] h1{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7c6f2f58] h1{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7c6f2f58] h2{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7c6f2f58] h2{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7c6f2f58] h2{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7c6f2f58] h3{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7c6f2f58] h3{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7c6f2f58] h3{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7c6f2f58] h4{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7c6f2f58] h4{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7c6f2f58] h5{font-size:1.2941176471rem;line-height:1.1818181818;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7c6f2f58] h5{font-size:1.1764705882rem;line-height:1.2;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7c6f2f58] h5{font-size:1.0588235294rem;line-height:1.4444444444;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7c6f2f58] h6{font-size:1rem;line-height:1.4705882353;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.doc-content-wrapper[data-v-7c6f2f58]{display:flex;justify-content:center}.doc-content-wrapper .doc-content[data-v-7c6f2f58]{min-width:0;width:100%}.doc-content-wrapper .doc-content .container:only-child .declaration-list-menu[data-v-7c6f2f58]:last-child:before{border-top-color:var(--colors-grid,var(--color-grid));border-top-style:solid;border-top-width:var(--content-table-title-border-width,1px);content:"";display:block;margin-bottom:40px}.with-on-this-page .doc-content-wrapper .doc-content[data-v-7c6f2f58]{max-width:820px}@media only screen and (min-width:1251px){.with-on-this-page .doc-content-wrapper .doc-content[data-v-7c6f2f58]{max-width:980px}}@media only screen and (min-width:1500px){.with-on-this-page .doc-content-wrapper .doc-content[data-v-7c6f2f58]{max-width:1080px}}.quick-navigation-open[data-v-96c35eb8]{display:flex;align-items:center;justify-content:center;width:16px;border:1px solid var(--color-grid);height:100%;border-radius:var(--border-radius,4px);transition:background-color .15s;box-sizing:border-box}.quick-navigation-open[data-v-96c35eb8]:hover{background-color:var(--color-fill-tertiary)}@media only screen and (max-width:1023px){.quick-navigation-open[data-v-96c35eb8]{display:none}}.fromkeyboard .quick-navigation-open[data-v-96c35eb8]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.tag[data-v-7e76f326]{display:inline-block;padding-right:.5882352941rem}.tag[data-v-7e76f326]:focus{outline:none}.tag button[data-v-7e76f326]{color:var(--color-figure-gray);background-color:var(--color-fill-tertiary);font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border-radius:.8235294118rem;padding:.2352941176rem .5882352941rem;white-space:nowrap;border:1px solid transparent}@media(hover:hover){.tag button[data-v-7e76f326]:hover{transition:background-color .2s,color .2s;background-color:var(--color-fill-blue);color:#fff}}.tag button[data-v-7e76f326]:focus:active{background-color:var(--color-fill-blue);color:#fff}.fromkeyboard .tag button[data-v-7e76f326]:focus,.tag button.focus[data-v-7e76f326],.tag button[data-v-7e76f326]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.tags[data-v-1f2bd813]{position:relative;margin:0;list-style:none;box-sizing:border-box;transition:padding-right .8s,padding-bottom .8s,max-height 1s,opacity 1s;padding:0}.tags .scroll-wrapper[data-v-1f2bd813]{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:none;scrollbar-color:var(--color-figure-gray-tertiary) transparent;scrollbar-width:thin}.tags .scroll-wrapper[data-v-1f2bd813]::-webkit-scrollbar{height:0}@supports not ((-webkit-touch-callout:none) or (scrollbar-width:none) or (-ms-overflow-style:none)){.tags .scroll-wrapper.scrolling[data-v-1f2bd813]{--scrollbar-height:11px;padding-top:var(--scrollbar-height);height:calc(var(--scroll-target-height) - var(--scrollbar-height));display:flex;align-items:center}}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar{height:11px}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-thumb{border-radius:10px;background-color:var(--color-figure-gray-tertiary);border:2px solid transparent;background-clip:padding-box}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-track-piece:end{margin-right:8px}.tags .scroll-wrapper.scrolling[data-v-1f2bd813]::-webkit-scrollbar-track-piece:start{margin-left:8px}.tags ul[data-v-1f2bd813]{margin:0;padding:0;display:flex}.filter[data-v-9ad1ed4c]{--input-vertical-padding:0.7647058824rem;--input-horizontal-spacing:0.5882352941rem;--input-height:1.6470588235rem;--input-border-color:var(--color-fill-gray-secondary);--input-text:var(--color-fill-gray-secondary);position:relative;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:calc(var(--border-radius, 4px) + 1px)}.fromkeyboard .filter[data-v-9ad1ed4c]:focus{outline:none}.filter__top-wrapper[data-v-9ad1ed4c]{display:flex}.filter__filter-button[data-v-9ad1ed4c]{position:relative;z-index:1;cursor:text;margin-left:var(--input-horizontal-spacing);margin-right:.1764705882rem}@media only screen and (max-width:735px){.filter__filter-button[data-v-9ad1ed4c]{margin-right:.4117647059rem}}.filter__filter-button .svg-icon[data-v-9ad1ed4c]{fill:var(--input-text);display:block;height:21px}.filter__filter-button.blue[data-v-9ad1ed4c]>*{fill:var(--color-figure-blue);color:var(--color-figure-blue)}.filter.focus .filter__wrapper[data-v-9ad1ed4c]{box-shadow:0 0 0 3pt var(--color-focus-color);--input-border-color:var(--color-fill-blue)}.filter__wrapper[data-v-9ad1ed4c]{border:1px solid var(--input-border-color);background:var(--color-fill);border-radius:var(--border-radius,4px)}.filter__wrapper--reversed[data-v-9ad1ed4c]{display:flex;flex-direction:column-reverse}.filter__wrapper--no-border-style[data-v-9ad1ed4c]{border:none}.filter__suggested-tags[data-v-9ad1ed4c]{border-top:1px solid var(--color-fill-gray-tertiary);z-index:1;overflow:hidden}.filter__suggested-tags[data-v-9ad1ed4c] ul{padding:var(--input-vertical-padding) .5294117647rem;border:1px solid transparent;border-bottom-left-radius:calc(var(--border-radius, 4px) - 1px);border-bottom-right-radius:calc(var(--border-radius, 4px) - 1px)}.fromkeyboard .filter__suggested-tags[data-v-9ad1ed4c] ul:focus{outline:none;box-shadow:0 0 0 5px var(--color-focus-color)}.filter__wrapper--reversed .filter__suggested-tags[data-v-9ad1ed4c]{border-bottom:1px solid var(--color-fill-gray-tertiary);border-top:none}.filter__selected-tags[data-v-9ad1ed4c]{z-index:1;padding-left:4px;margin:-4px 0}@media only screen and (max-width:735px){.filter__selected-tags[data-v-9ad1ed4c]{padding-left:0}}.filter__selected-tags[data-v-9ad1ed4c] ul{padding:4px}@media only screen and (max-width:735px){.filter__selected-tags[data-v-9ad1ed4c] ul{padding-right:.4117647059rem}}.filter__selected-tags[data-v-9ad1ed4c] ul .tag:last-child{padding-right:0}.filter__delete-button[data-v-9ad1ed4c]{position:relative;margin:0;z-index:1;border-radius:100%}.fromkeyboard .filter__delete-button[data-v-9ad1ed4c]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.filter__delete-button .clear-rounded-icon[data-v-9ad1ed4c]{height:.7058823529rem;width:.7058823529rem;fill:var(--input-text);display:block}.filter__delete-button-wrapper[data-v-9ad1ed4c]{display:flex;align-items:center;padding-right:var(--input-horizontal-spacing);padding-left:.1764705882rem;border-top-right-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px)}.filter__input-label[data-v-9ad1ed4c]{position:relative;flex-grow:1;height:var(--input-height);padding:var(--input-vertical-padding) 0}.filter__input-label[data-v-9ad1ed4c]:after{content:attr(data-value);visibility:hidden;width:auto;white-space:nowrap;min-width:130px;display:block;text-indent:.4117647059rem}@media only screen and (max-width:735px){.filter__input-label[data-v-9ad1ed4c]:after{text-indent:.1764705882rem}}.filter__input-box-wrapper[data-v-9ad1ed4c]{overflow-y:hidden;-ms-overflow-style:none;scrollbar-color:var(--color-figure-gray-tertiary) transparent;scrollbar-width:thin;display:flex;overflow-x:auto;align-items:center;cursor:text;flex:1}.filter__input-box-wrapper[data-v-9ad1ed4c]::-webkit-scrollbar{height:0}@supports not ((-webkit-touch-callout:none) or (scrollbar-width:none) or (-ms-overflow-style:none)){.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]{--scrollbar-height:11px;padding-top:var(--scrollbar-height);height:calc(var(--scroll-target-height) - var(--scrollbar-height));display:flex;align-items:center}}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar{height:11px}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar-thumb{border-radius:10px;background-color:var(--color-figure-gray-tertiary);border:2px solid transparent;background-clip:padding-box}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar-track-piece:end{margin-right:8px}.filter__input-box-wrapper.scrolling[data-v-9ad1ed4c]::-webkit-scrollbar-track-piece:start{margin-left:8px}.filter__input[data-v-9ad1ed4c]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-text);height:var(--input-height);border:none;width:100%;position:absolute;background:transparent;z-index:1;text-indent:.4117647059rem}@media only screen and (max-width:735px){.filter__input[data-v-9ad1ed4c]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);text-indent:.1764705882rem}}.filter__input[data-v-9ad1ed4c]:focus{outline:none}.filter__input[placeholder][data-v-9ad1ed4c]::-moz-placeholder{color:var(--input-text);opacity:1}.filter__input[placeholder][data-v-9ad1ed4c]::placeholder{color:var(--input-text);opacity:1}.filter__input[placeholder][data-v-9ad1ed4c]:-ms-input-placeholder{color:var(--input-text)}.filter__input[placeholder][data-v-9ad1ed4c]::-ms-input-placeholder{color:var(--input-text)}.generic-modal[data-v-795f7b59]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-795f7b59]{align-items:stretch}.modal-fullscreen .container[data-v-795f7b59]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-795f7b59]{padding:20px}.modal-standard .container[data-v-795f7b59]{padding:60px;border-radius:var(--border-radius,4px)}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-795f7b59]{padding:0;align-items:stretch}.modal-standard .container[data-v-795f7b59]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-795f7b59]{overflow:auto;background:var(--backdrop-background,rgba(0,0,0,.4));-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-795f7b59]{margin-left:auto;margin-right:auto;width:1536px;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1250px){.container[data-v-795f7b59]{width:692px}}@media only screen and (max-width:735px){.container[data-v-795f7b59]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-795f7b59]{width:215px}}.close[data-v-795f7b59]{position:absolute;z-index:9999;top:22px;left:22px;width:17px;height:17px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-795f7b59]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-795f7b59]{background:#000}.theme-dark .container .close[data-v-795f7b59]{color:#b0b0b0}.theme-code .container[data-v-795f7b59]{background-color:var(--code-background,var(--color-code-background))}.highlight[data-v-4a2ce75d]{display:inline}.highlight[data-v-4a2ce75d] .match{font-weight:600;background:var(--color-fill-light-blue-secondary)}@media only screen and (max-width:735px){.preview[data-v-779b8b01]{display:none}}.unavailable[data-v-779b8b01]{align-items:center;display:flex;height:100%;justify-content:center}.loading[data-v-779b8b01]{padding:20px}.loading-row[data-v-779b8b01]{animation:pulse 2.5s ease;animation-delay:calc(1s + .3s*var(--index));animation-fill-mode:forwards;animation-iteration-count:infinite;background-color:var(--color-fill-gray-tertiary);border-radius:4px;height:12px;margin:20px 0;opacity:0}.loading-row[data-v-779b8b01]:first-of-type{margin-top:0}.loading-row[data-v-779b8b01]:last-of-type{margin-bottom:0}.quick-navigation[data-v-2f89fac2]{--input-border-color:var(--color-grid)}.quick-navigation input[type=text][data-v-2f89fac2]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.quick-navigation input[type=text][data-v-2f89fac2]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.quick-navigation__filter[data-v-2f89fac2]{--input-horizontal-spacing:0.8823529412rem}.quick-navigation[data-v-2f89fac2] .filter__wrapper{background-color:var(--color-fill-secondary)}.quick-navigation__container[data-v-2f89fac2]{background-color:var(--color-fill-secondary);border:solid 1px var(--input-border-color);border-radius:var(--border-radius,4px);margin:0 .9411764706rem}.quick-navigation__container>[data-v-2f89fac2]{--input-text:var(--color-figure-gray-secondary)}.quick-navigation__container.focus[data-v-2f89fac2]{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.quick-navigation__container[data-v-2f89fac2] .declaration-list-toggle{background-color:var(--color-fill-secondary)}.quick-navigation__magnifier-icon-container[data-v-2f89fac2]{width:1rem}.quick-navigation__magnifier-icon-container>[data-v-2f89fac2]{width:100%}.quick-navigation__magnifier-icon-container.blue .magnifier-icon[data-v-2f89fac2]{fill:var(--color-figure-blue);color:var(--color-figure-blue)}.quick-navigation__match-list[data-v-2f89fac2]{display:flex;max-height:26.4705882353rem;height:0}.quick-navigation__match-list>[data-v-2f89fac2]{min-width:0}.quick-navigation__match-list.active[data-v-2f89fac2]{height:auto;border-top:1px solid var(--input-border-color)}.quick-navigation__match-list .no-results[data-v-2f89fac2]{margin:.8823529412rem auto;width:-moz-fit-content;width:fit-content}.quick-navigation__refs[data-v-2f89fac2]{flex:1;overflow:auto}.quick-navigation__preview[data-v-2f89fac2]{border-left:1px solid var(--color-grid);flex:0 0 61.8%;overflow:auto;position:sticky;top:0}.quick-navigation__reference[data-v-2f89fac2]{display:block;padding:.5882352941rem .8823529412rem}.quick-navigation__reference[data-v-2f89fac2]:hover{text-decoration:none;background-color:var(--color-navigator-item-hover)}.quick-navigation__reference[data-v-2f89fac2]:focus{margin:0 .2941176471rem;padding:.5882352941rem .5882352941rem;background-color:var(--color-navigator-item-hover)}.quick-navigation__symbol-match[data-v-2f89fac2]{display:flex;height:2.3529411765rem;color:var(--color-figure-gray)}.quick-navigation__symbol-match .symbol-info[data-v-2f89fac2]{margin:auto;width:100%}.quick-navigation__symbol-match .symbol-info .navigator-icon[data-v-2f89fac2]{margin-right:.5882352941rem}.quick-navigation__symbol-match .symbol-info .symbol-name[data-v-2f89fac2]{display:flex}.quick-navigation__symbol-match .symbol-info .symbol-name .symbol-title[data-v-2f89fac2]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-navigation__symbol-match .symbol-info .symbol-path[data-v-2f89fac2]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);display:flex;margin-left:1.5882352941rem;overflow:hidden;white-space:nowrap}.quick-navigation__symbol-match .symbol-info .symbol-path .parent-path[data-v-2f89fac2]{padding-right:.2941176471rem}@media print{.sidebar[data-v-00c216ba]{display:none}}.adjustable-sidebar-width[data-v-00c216ba]{display:flex}@media only screen and (max-width:1023px){.adjustable-sidebar-width[data-v-00c216ba]{display:block;position:relative}}.adjustable-sidebar-width.dragging[data-v-00c216ba] *{cursor:col-resize!important}.adjustable-sidebar-width.sidebar-hidden.dragging[data-v-00c216ba] *{cursor:e-resize!important}.sidebar[data-v-00c216ba]{position:relative}@media only screen and (max-width:1023px){.sidebar[data-v-00c216ba]{position:static}}.aside[data-v-00c216ba]{width:250px;position:relative;height:100%;max-width:100vw}.aside.no-transition[data-v-00c216ba]{transition:none!important}@media only screen and (min-width:1024px){.aside[data-v-00c216ba]{transition:width .3s ease-in,visibility 0s linear var(--visibility-transition-time,0s)}.aside.dragging[data-v-00c216ba]:not(.is-opening-on-large):not(.hide-on-large){transition:none}.aside.hide-on-large[data-v-00c216ba]{width:0!important;visibility:hidden;pointer-events:none;--visibility-transition-time:0.3s}}@media only screen and (max-width:1023px){.aside[data-v-00c216ba]{width:100%!important;overflow:hidden;min-width:0;max-width:100%;height:calc(var(--app-height) - var(--top-offset-mobile));position:fixed;top:var(--top-offset-mobile);bottom:0;z-index:9998;transform:translateX(-100%);transition:transform var(--nav-transition-duration) ease-in;left:0}.aside[data-v-00c216ba] .aside-animated-child{opacity:0}.aside.show-on-mobile[data-v-00c216ba]{transform:translateX(0)}.aside.show-on-mobile[data-v-00c216ba] .aside-animated-child{--index:0;opacity:1;transition:opacity var(--nav-transition-duration) linear;transition-delay:calc(var(--index)*var(--nav-transition-duration) + var(--nav-transition-duration))}.aside.has-mobile-top-offset[data-v-00c216ba]{border-top:1px solid var(--color-fill-gray-tertiary)}}.content[data-v-00c216ba]{display:flex;flex-flow:column;min-width:0;flex:1 1 auto;height:100%}.resize-handle[data-v-00c216ba]{position:absolute;cursor:col-resize;top:0;bottom:0;right:0;width:5px;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1;transition:background-color .15s;transform:translateX(50%)}@media only screen and (max-width:1023px){.resize-handle[data-v-00c216ba]{display:none}}.resize-handle[data-v-00c216ba]:hover{background:var(--color-fill-gray-tertiary)}.navigator-card-item[data-v-5e71f320]{--nav-head-wrapper-left-space:20px;--nav-head-wrapper-right-space:20px;--head-wrapper-vertical-space:5px;--nav-depth-spacer:20px;--nesting-index:0;display:flex;align-items:stretch;min-height:32px;box-sizing:border-box;padding:0 var(--nav-head-wrapper-right-space) 0 var(--nav-head-wrapper-left-space)}.navigator-card-item.active .head-wrapper[data-v-5e71f320]{background:var(--color-fill-gray-quaternary)}.hover .navigator-card-item:not(.is-group) .head-wrapper[data-v-5e71f320]{background:var(--color-navigator-item-hover)}.depth-spacer[data-v-5e71f320]{width:calc(var(--nesting-index)*15px + var(--nav-depth-spacer));height:100%;position:relative;flex:0 0 auto}.title-container[data-v-5e71f320]{width:100%;min-width:0;display:flex;align-items:center}.navigator-icon-wrapper[data-v-5e71f320]{margin-right:7px}.head-wrapper[data-v-5e71f320]{position:relative;display:flex;align-items:center;flex:1;min-width:0;border-radius:var(--border-radius,4px);padding:var(--head-wrapper-vertical-space) 0}.fromkeyboard .head-wrapper[data-v-5e71f320]:focus-within{outline:4px solid var(--color-focus-color);outline-offset:-4px}@supports(padding:max(0px)){.head-wrapper[data-v-5e71f320]{padding-right:max(var(--nav-head-wrapper-right-space),env(safe-area-inset-right))}}.highlight[data-v-7b81ca08]{display:inline}.highlight[data-v-7b81ca08] .match{font-weight:600;background:var(--color-fill-light-blue-secondary)}.is-group .leaf-link[data-v-5148de22]{color:var(--color-figure-gray-tertiary);font-weight:600}.is-group .leaf-link[data-v-5148de22]:after{display:none}.navigator-icon[data-v-5148de22]{display:flex;flex:0 0 auto}.navigator-icon.changed[data-v-5148de22]{border:none;width:1em;height:1em;z-index:0}.navigator-icon.changed[data-v-5148de22]:after{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);background-image:url(../img/modified-icon.efb2697d.svg);margin:0}@media screen{[data-color-scheme=dark] .navigator-icon.changed[data-v-5148de22]:after{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed[data-v-5148de22]:after{background-image:url(../img/modified-icon.efb2697d.svg)}}.navigator-icon.changed-added[data-v-5148de22]:after{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .navigator-icon.changed-added[data-v-5148de22]:after{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed-added[data-v-5148de22]:after{background-image:url(../img/added-icon.832a5d2c.svg)}}.navigator-icon.changed-deprecated[data-v-5148de22]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .navigator-icon.changed-deprecated[data-v-5148de22]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .navigator-icon.changed-deprecated[data-v-5148de22]:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.leaf-link[data-v-5148de22]{color:var(--color-figure-gray);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline;vertical-align:middle;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.fromkeyboard .leaf-link[data-v-5148de22]:focus{outline:none}.leaf-link[data-v-5148de22]:hover{text-decoration:none}.leaf-link.bolded[data-v-5148de22]{font-weight:600}.leaf-link[data-v-5148de22]:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0}.extended-content[data-v-5148de22]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-toggle[data-v-5148de22]{overflow:hidden;position:absolute;width:100%;height:100%;padding-right:5px;box-sizing:border-box;z-index:1;display:flex;align-items:center;justify-content:flex-end}.chevron[data-v-5148de22]{width:10px}.chevron.animating[data-v-5148de22]{transition:transform .15s ease-in}.chevron.rotate[data-v-5148de22]{transform:rotate(90deg)}.navigator-card[data-v-584a744a]{--card-vertical-spacing:10px;--card-horizontal-spacing:20px;--nav-filter-horizontal-padding:20px;--visibility-delay:1s;display:flex;flex-direction:column;min-height:0;height:calc(var(--app-height) - 3.05882rem);position:sticky;top:3.0588235294rem}@media only screen and (max-width:1023px){.navigator-card[data-v-584a744a]{height:100%;position:static;background:var(--color-fill)}}.navigator-card .navigator-card-full-height[data-v-584a744a]{min-height:0;flex:1 1 auto}.navigator-card .head-inner[data-v-584a744a]{display:none;width:100%;font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);height:2.8235294118rem}@media only screen and (max-width:767px){.navigator-card .head-inner[data-v-584a744a]{font-size:1rem;line-height:1;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:1023px){.navigator-card .head-inner[data-v-584a744a]{display:flex;justify-content:flex-end;align-items:center}}.navigator-card .head-inner span[data-v-584a744a],.navigator-card .head-inner>a[data-v-584a744a]{color:var(--color-figure-gray);width:100%}.navigator-card .head-wrapper[data-v-584a744a]{display:flex;justify-content:space-between;flex:1 0 auto}@supports(padding:max(0px)){.navigator-card .head-wrapper[data-v-584a744a]{margin-left:max(var(--card-horizontal-spacing),env(safe-area-inset-left));margin-right:max(var(--card-horizontal-spacing),env(safe-area-inset-right))}}.close-card[data-v-584a744a]{margin:0}.close-card .close-icon[data-v-584a744a]{width:19px;height:19px}[data-v-584a744a] .card-body{display:flex;flex-direction:column;padding-right:0;flex:1 1 auto;min-height:0;height:100%}@media only screen and (max-width:1023px){[data-v-584a744a] .card-body{--card-vertical-spacing:0px}}.navigator-card-inner[data-v-584a744a]{display:flex;flex-flow:column;height:100%;padding-top:10px;box-sizing:border-box}@media only screen and (max-width:1023px){.navigator-card-inner[data-v-584a744a]{padding-top:0}}.filter-on-top .navigator-card-inner[data-v-584a744a]{padding-top:0}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{border:none;background-color:transparent;opacity:0}.resize-observer[data-v-b329ee4c],.resize-observer[data-v-b329ee4c] object{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;pointer-events:none;display:block;overflow:hidden}.navigator-card.filter-on-top .filter-wrapper[data-v-d6581240]{order:1;position:static}.navigator-card.filter-on-top .card-body[data-v-d6581240]{order:2}.no-items-wrapper[data-v-d6581240]{overflow:hidden;color:var(--color-figure-gray-tertiary)}.no-items-wrapper .no-items[data-v-d6581240]:not(:empty){font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:var(--card-vertical-spacing) var(--card-horizontal-spacing);min-width:200px;box-sizing:border-box}.technology-title[data-v-d6581240]{padding:8px 10px;padding-left:20px;background:var(--color-fill);border-radius:var(--border-radius,4px);display:flex;white-space:nowrap}@supports(padding:max(0px)){.technology-title[data-v-d6581240]{margin-left:max(var(--card-horizontal-spacing),env(safe-area-inset-left));margin-right:max(var(--card-horizontal-spacing),env(safe-area-inset-right))}}@media only screen and (max-width:767px){.technology-title[data-v-d6581240]{margin-top:0}}.technology-title .card-link[data-v-d6581240]{color:var(--color-text);font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);font-weight:600;overflow:hidden;text-overflow:ellipsis}.technology-title.router-link-exact-active[data-v-d6581240]{background:var(--color-fill-gray-quaternary)}.technology-title[data-v-d6581240]:hover{background:var(--color-navigator-item-hover);text-decoration:none}.navigator-filter[data-v-d6581240]{box-sizing:border-box;padding:15px var(--nav-filter-horizontal-padding);border-top:1px solid var(--color-grid);height:71px;display:flex;align-items:flex-end}.filter-on-top .navigator-filter[data-v-d6581240]{border-top:none;align-items:flex-start}@supports(padding:max(0px)){.navigator-filter[data-v-d6581240]{padding-left:max(var(--nav-filter-horizontal-padding),env(safe-area-inset-left));padding-right:max(var(--nav-filter-horizontal-padding),env(safe-area-inset-right))}}@media only screen and (max-width:1023px){.navigator-filter[data-v-d6581240]{--nav-filter-horizontal-padding:20px;border:none;padding-top:10px;padding-bottom:10px;height:60px}}.navigator-filter .input-wrapper[data-v-d6581240]{position:relative;flex:1;min-width:0}.navigator-filter .filter-component[data-v-d6581240]{--input-vertical-padding:8px;--input-height:22px;--input-border-color:var(--color-grid);--input-text:var(--color-figure-gray-secondary)}.navigator-filter .filter-component[data-v-d6581240] .filter__input{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.navigator-filter .filter-component[data-v-d6581240] .filter__input-label:after{min-width:70px}.scroller[data-v-d6581240]{height:100%;box-sizing:border-box;padding-bottom:calc(var(--top-offset, 0px) + var(--card-vertical-spacing));transition:padding-bottom .15s ease-in}@media only screen and (max-width:1023px){.scroller[data-v-d6581240]{padding-bottom:10em}}.scroller[data-v-d6581240] .vue-recycle-scroller__item-wrapper{transform:translateZ(0)}.filter-wrapper[data-v-d6581240]{position:sticky;bottom:0;background:var(--color-fill)}.sidebar-transitioning .filter-wrapper[data-v-d6581240]{flex:1 0 71px;overflow:hidden}@media only screen and (max-width:1023px){.sidebar-transitioning .filter-wrapper[data-v-d6581240]{flex-basis:60px}}.loader[data-v-0de29914]{height:.7058823529rem;background-color:var(--color-fill-gray-tertiary);border-radius:4px}.navigator-icon[data-v-0de29914]{width:16px;height:16px;border-radius:2px;background-color:var(--color-fill-gray-tertiary)}.loading-navigator-item[data-v-0de29914]{animation:pulse 2.5s ease;animation-iteration-count:infinite;animation-fill-mode:forwards;opacity:0;animation-delay:calc(var(--visibility-delay) + .3s*var(--index))}.delay-visibility-enter-active[data-v-3b7cf3a4]{transition:visibility var(--visibility-delay);visibility:hidden}.loading-navigator[data-v-3b7cf3a4]{padding-top:10px}.navigator[data-v-5611024b]{height:100%;display:flex;flex-flow:column}@media only screen and (max-width:1023px){.navigator[data-v-5611024b]{position:static;transition:none}}[data-v-5611024b] .nav-title{font-size:inherit;font-weight:inherit;flex-grow:1}.nav-menu-setting-label[data-v-4323807e]{display:inline-block;margin-right:.2941176471rem;white-space:nowrap}.language-container[data-v-4323807e]{flex:1 0 auto}.language-dropdown[data-v-4323807e]{-webkit-text-size-adjust:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background-color:transparent;box-sizing:inherit;padding:0 11px 0 4px;margin-left:-4px;font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);cursor:pointer;position:relative;z-index:1}@media only screen and (max-width:1023px){.language-dropdown[data-v-4323807e]{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.language-dropdown[data-v-4323807e]:focus{outline:none}.fromkeyboard .language-dropdown[data-v-4323807e]:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}.language-sizer[data-v-4323807e]{position:absolute;opacity:0;pointer-events:none;padding:0}.language-toggle-container[data-v-4323807e]{display:flex;align-items:center;padding-right:.1764705882rem;position:relative}.nav--in-breakpoint-range .language-toggle-container[data-v-4323807e]{display:none}.language-toggle-container .toggle-icon[data-v-4323807e]{width:.6em;height:.6em;position:absolute;right:7px}.language-toggle-label[data-v-4323807e]{margin-right:2px}.language-toggle.nav-menu-toggle-label[data-v-4323807e]{margin-right:6px}.language-list[data-v-4323807e]{display:inline-block;margin-top:0}.language-list-container[data-v-4323807e]{display:none}.language-list-item[data-v-4323807e],.nav--in-breakpoint-range .language-list-container[data-v-4323807e]{display:inline-block}.language-list-item[data-v-4323807e]:not(:first-child){border-left:1px solid var(--color-grid);margin-left:6px;padding-left:6px}[data-v-6fe78e04] .nav-menu{line-height:1.5}[data-v-6fe78e04] .nav-menu,[data-v-6fe78e04] .nav-menu-settings{font-size:.8235294118rem;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}[data-v-6fe78e04] .nav-menu-settings{min-width:0;gap:.5882352941rem;line-height:1.2857142857}@media only screen and (max-width:1023px){[data-v-6fe78e04] .nav-menu-settings{font-size:.8235294118rem;line-height:1.5;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (min-width:1024px){[data-v-6fe78e04] .nav-menu-settings{margin-left:.5882352941rem}}[data-v-6fe78e04] .nav-menu-settings .nav-menu-setting{display:flex;align-items:center;color:var(--color-nav-current-link);margin-left:0;min-width:0}[data-v-6fe78e04] .nav-menu-settings .nav-menu-setting .nav-menu-link{font-weight:600;text-decoration:underline}.theme-dark[data-v-6fe78e04] .nav-menu-settings .nav-menu-setting{color:var(--color-nav-dark-current-link)}.nav--in-breakpoint-range[data-v-6fe78e04] .nav-menu-settings .nav-menu-setting:not(:first-child){border-top:1px solid var(--color-fill-gray-tertiary)}.documentation-nav[data-v-6fe78e04]{--color-nav-background:var(--color-fill)}.documentation-nav[data-v-6fe78e04] .nav-title{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:767px){.documentation-nav[data-v-6fe78e04] .nav-title{font-size:1rem;line-height:1;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.sidenav-toggle-wrapper[data-v-6fe78e04]{display:flex;margin-top:1px;margin-right:.6470588235rem}.nav--in-breakpoint-range .sidenav-toggle-wrapper[data-v-6fe78e04]{display:flex!important}@media only screen and (min-width:1024px){.sidenav-toggle-enter-active[data-v-6fe78e04],.sidenav-toggle-leave-active[data-v-6fe78e04]{transition:margin .3s ease-in 0s}.sidenav-toggle-enter[data-v-6fe78e04],.sidenav-toggle-leave-to[data-v-6fe78e04]{margin-left:-3.7647058824rem}}.sidenav-toggle[data-v-6fe78e04]{align-self:center;color:var(--color-nav-link-color);position:relative;margin:0 -5px;border-radius:var(--border-radius,4px)}.theme-dark .sidenav-toggle[data-v-6fe78e04]{color:var(--color-nav-dark-link-color)}.sidenav-toggle:hover .sidenav-icon-wrapper[data-v-6fe78e04]{background:var(--color-fill-gray-quaternary)}.theme-dark .sidenav-toggle:hover .sidenav-icon-wrapper[data-v-6fe78e04]{background:#424242}.sidenav-toggle__separator[data-v-6fe78e04]{height:.8em;width:1px;background:var(--color-nav-color);align-self:center;margin:0 1.2941176471rem}.nav--in-breakpoint-range .sidenav-toggle__separator[data-v-6fe78e04]{display:none}.sidenav-icon-wrapper[data-v-6fe78e04]{padding:5px;display:flex;align-items:center;justify-content:center;border-radius:var(--border-radius,4px)}.sidenav-icon[data-v-6fe78e04]{display:flex;width:19px;height:19px}[data-v-96337f98] .generic-modal{overflow-y:overlay}[data-v-96337f98] .modal-fullscreen>.container{background-color:transparent;height:-moz-fit-content;height:fit-content;flex:auto;margin:9.4117647059rem 0;max-width:47.0588235294rem;overflow:visible}[data-v-96337f98] .navigator-filter .quick-navigation-open{margin-left:var(--nav-filter-horizontal-padding);width:calc(var(--nav-filter-horizontal-padding)*2)}.documentation-layout[data-v-96337f98]{--nav-transition-duration:0.15s;display:flex;flex-flow:column;background:var(--colors-text-background,var(--color-text-background))}.documentation-layout .delay-hiding-leave-active[data-v-96337f98]{transition:display var(--nav-transition-duration)}.documentation-layout-aside[data-v-96337f98]{height:100%;box-sizing:border-box;border-right:1px solid var(--color-grid)}@media only screen and (max-width:1023px){.documentation-layout-aside[data-v-96337f98]{background:var(--color-fill);border-right:none}.sidebar-transitioning .documentation-layout-aside[data-v-96337f98]{border-right:1px solid var(--color-grid)}}.topic-wrapper[data-v-96337f98]{flex:1 1 auto;width:100%}:root.no-js .topic-wrapper[data-v-96337f98] .sidebar{display:none}.full-width-container[data-v-96337f98]{max-width:1920px;margin-left:auto;margin-right:auto}@media only screen and (min-width:1920px){.full-width-container[data-v-96337f98]{border-left:1px solid var(--color-grid);border-right:1px solid var(--color-grid);box-sizing:border-box}}
\ No newline at end of file
diff --git a/css/index.3a335429.css b/css/index.3a335429.css
new file mode 100644
index 000000000..07a87fc98
--- /dev/null
+++ b/css/index.3a335429.css
@@ -0,0 +1,9 @@
+/*!
+ * This source file is part of the Swift.org open source project
+ *
+ * Copyright (c) 2021 Apple Inc. and the Swift project authors
+ * Licensed under Apache License v2.0 with Runtime Library Exception
+ *
+ * See https://swift.org/LICENSE.txt for license information
+ * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
+ */.color-scheme-toggle[data-v-0c0360ce]{--toggle-color-fill:var(--color-button-background);--toggle-color-text:var(--color-fill-blue);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border:1px solid var(--toggle-color-fill);border-radius:var(--toggle-border-radius-outer,var(--border-radius,4px));display:inline-flex;padding:1px}@media screen{[data-color-scheme=dark] .color-scheme-toggle[data-v-0c0360ce]{--toggle-color-text:var(--color-figure-blue)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .color-scheme-toggle[data-v-0c0360ce]{--toggle-color-text:var(--color-figure-blue)}}@media print{.color-scheme-toggle[data-v-0c0360ce]{display:none}}:root.no-js .color-scheme-toggle[data-v-0c0360ce]{visibility:hidden}input[data-v-0c0360ce]{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.fromkeyboard label[data-v-0c0360ce]:focus-within{outline:4px solid var(--color-focus-color);outline-offset:1px}.text[data-v-0c0360ce]{border:1px solid transparent;border-radius:var(--toggle-border-radius-inner,2px);color:var(--toggle-color-text);display:inline-block;text-align:center;padding:1px 6px;min-width:42px;box-sizing:border-box}.text[data-v-0c0360ce]:hover{cursor:pointer}input:checked+.text[data-v-0c0360ce]{--toggle-color-text:var(--color-button-text);background:var(--toggle-color-fill);border-color:var(--toggle-color-fill)}.footer[data-v-f1d65b2a]{border-top:1px solid var(--color-grid)}.row[data-v-f1d65b2a]{margin-left:auto;margin-right:auto;width:1536px;width:980px;display:flex;flex-direction:row-reverse;margin:20px auto}@media only screen and (max-width:1250px){.row[data-v-f1d65b2a]{width:692px}}@media only screen and (max-width:735px){.row[data-v-f1d65b2a]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-f1d65b2a]{width:215px}}@media only screen and (max-width:735px){.row[data-v-f1d65b2a]{width:100%;padding:0 .9411764706rem;box-sizing:border-box}}.InitialLoadingPlaceholder[data-v-35c356b6]{background:var(--colors-loading-placeholder-background,var(--color-loading-placeholder-background));height:100vh;width:100%}.svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-light,var(--color-svg-icon));transform:scale(1);-webkit-transform:scale(1);overflow:visible}.theme-dark .svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}@media screen{[data-color-scheme=dark] .svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .svg-icon[data-v-3434f4d2]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}.svg-icon.icon-inline[data-v-3434f4d2]{display:inline-block;vertical-align:middle;fill:currentColor}.svg-icon.icon-inline[data-v-3434f4d2] .svg-icon-stroke{stroke:currentColor}[data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-light,var(--color-svg-icon))}.theme-dark[data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}@media screen{[data-color-scheme=dark][data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto][data-v-3434f4d2] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}.suggest-lang[data-v-c2dca0ae]{background:#000;color:#fff;display:flex;justify-content:center;border-bottom:1px solid var(--color-grid)}.suggest-lang__wrapper[data-v-c2dca0ae]{display:flex;align-items:center;width:100%;max-width:var(--wrapper-max-width,1920px);margin:0 .9411764706rem;position:relative;height:52px}.suggest-lang__link[data-v-c2dca0ae]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin:0 auto;color:#09f}.suggest-lang__close-icon-wrapper[data-v-c2dca0ae]{position:absolute;right:-.2352941176rem;top:0;height:100%;box-sizing:border-box;display:flex;align-items:center;z-index:1}.suggest-lang__close-icon-button[data-v-c2dca0ae]{padding:.2352941176rem}.suggest-lang__close-icon-button .close-icon[data-v-c2dca0ae]{width:8px;display:block}.suggest-lang .inline-chevron-right-icon[data-v-c2dca0ae]{padding-left:.2352941176rem;width:8px}select[data-v-d21858a2]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-fill-blue);padding-right:15px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;cursor:pointer}select[data-v-d21858a2]:hover{text-decoration:underline}.locale-selector[data-v-d21858a2]{position:relative}.svg-icon.icon-inline[data-v-d21858a2]{position:absolute;fill:var(--color-fill-blue);right:2px;bottom:7px;height:5px}html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;background-color:var(--colors-text-background,var(--color-text-background));height:100%}abbr,blockquote,body,button,dd,dl,dt,fieldset,figure,form,h1,h2,h3,h4,h5,h6,hgroup,input,legend,li,ol,p,pre,ul{margin:0;padding:0}address,caption,code,figcaption,pre,th{font-size:1em;font-weight:400;font-style:normal}fieldset,iframe,img{border:0}caption,th{text-align:left}table{border-collapse:collapse;border-spacing:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}button{background:none;border:0;box-sizing:content-box;color:inherit;cursor:pointer;font:inherit;line-height:inherit;overflow:visible;vertical-align:inherit}button:disabled{cursor:default}:focus{outline:4px solid var(--color-focus-color);outline-offset:1px}::-moz-focus-inner{border:0;padding:0}@media print{#app-main,#content,body{color:#000}a,a:link,a:visited{color:#000;text-decoration:none}.hide,.noprint{display:none}}body{height:100%;min-width:320px}html{font:var(--typography-html-font,17px "Helvetica Neue","Helvetica","Arial",sans-serif);quotes:"“" "”"}html:lang(ja-JP){quotes:"「" "」"}body{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);background-color:var(--color-text-background);color:var(--colors-text,var(--color-text));font-style:normal;word-wrap:break-word;--spacing-stacked-margin-small:0.4em;--spacing-stacked-margin-large:0.8em;--spacing-stacked-margin-xlarge:calc(var(--spacing-stacked-margin-large)*2);--spacing-param:1.6470588235rem;--declaration-code-listing-margin:30px 0 0 0;--code-block-style-elements-padding:8px 14px}body,button,input,select,textarea{font-synthesis:none;-moz-font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;direction:ltr;text-align:left}h1,h2,h3,h4,h5,h6{color:var(--colors-header-text,var(--color-header-text))}h1+*,h2+*,h3+*,h4+*,h5+*,h6+*{margin-top:var(--spacing-stacked-margin-large)}ol+h1,ol+h2,ol+h3,ol+h4,ol+h5,ol+h6,p+h1,p+h2,p+h3,p+h4,p+h5,p+h6,ul+h1,ul+h2,ul+h3,ul+h4,ul+h5,ul+h6{margin-top:1.6em}ol+*,p+*,ul+*{margin-top:var(--spacing-stacked-margin-large)}ol,ul{margin-left:1.1764705882em}ol ol,ol ul,ul ol,ul ul{margin-top:0;margin-bottom:0}nav ol,nav ul{margin:0;list-style:none}li li{font-size:1em}a{color:var(--colors-link,var(--color-link))}a:link,a:visited{text-decoration:none}a.inline-link,a:hover{text-decoration:underline}a:active{text-decoration:none}p+a{display:inline-block}b,strong{font-weight:600}cite,dfn,em,i{font-style:italic}sup{font-size:.6em;vertical-align:top;position:relative;bottom:-.2em}h1 sup,h2 sup,h3 sup{font-size:.4em}sup a{vertical-align:inherit;color:inherit}sup a:hover{color:var(--figure-blue);text-decoration:none}sub{line-height:1}abbr{border:0}pre{overflow:auto;-webkit-overflow-scrolling:auto;white-space:pre;word-wrap:normal}code{font-family:var(--typography-html-font-mono,Menlo,monospace);font-weight:inherit;letter-spacing:0}.syntax-addition{color:var(--syntax-addition,var(--color-syntax-addition))}.syntax-comment{color:var(--syntax-comment,var(--color-syntax-comments))}.syntax-quote{color:var(--syntax-quote,var(--color-syntax-comments))}.syntax-deletion{color:var(--syntax-deletion,var(--color-syntax-deletion))}.syntax-keyword{color:var(--syntax-keyword,var(--color-syntax-keywords))}.syntax-literal{color:var(--syntax-literal,var(--color-syntax-keywords))}.syntax-selector-tag{color:var(--syntax-selector-tag,var(--color-syntax-keywords))}.syntax-string{color:var(--syntax-string,var(--color-syntax-strings))}.syntax-bullet{color:var(--syntax-bullet,var(--color-syntax-characters))}.syntax-meta{color:var(--syntax-meta,var(--color-syntax-characters))}.syntax-number{color:var(--syntax-number,var(--color-syntax-characters))}.syntax-symbol{color:var(--syntax-symbol,var(--color-syntax-characters))}.syntax-tag{color:var(--syntax-tag,var(--color-syntax-characters))}.syntax-attr{color:var(--syntax-attr,var(--color-syntax-other-type-names))}.syntax-built_in{color:var(--syntax-built_in,var(--color-syntax-other-type-names))}.syntax-builtin-name{color:var(--syntax-builtin-name,var(--color-syntax-other-type-names))}.syntax-class{color:var(--syntax-class,var(--color-syntax-other-type-names))}.syntax-params{color:var(--syntax-params,var(--color-syntax-other-type-names))}.syntax-section{color:var(--syntax-section,var(--color-syntax-other-type-names))}.syntax-title{color:var(--syntax-title,var(--color-syntax-other-type-names))}.syntax-type{color:var(--syntax-type,var(--color-syntax-other-type-names))}.syntax-attribute{color:var(--syntax-attribute,var(--color-syntax-plain-text))}.syntax-identifier{color:var(--syntax-identifier,var(--color-syntax-plain-text))}.syntax-subst{color:var(--syntax-subst,var(--color-syntax-plain-text))}.syntax-doctag,.syntax-strong{font-weight:700}.syntax-emphasis,.syntax-link{font-style:italic}[data-syntax=swift] .syntax-meta{color:var(--syntax-meta,var(--color-syntax-keywords))}[data-syntax=swift] .syntax-class,[data-syntax=swift] .syntax-keyword+.syntax-params,[data-syntax=swift] .syntax-params+.syntax-params{color:unset}[data-syntax=json] .syntax-attr{color:var(--syntax-attr,var(--color-syntax-strings))}#skip-nav{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}#skip-nav:active,#skip-nav:focus{position:relative;float:left;width:-moz-fit-content;width:fit-content;color:var(--color-figure-blue);font-size:1em;padding:0 10px;z-index:100000;top:0;left:0;height:44px;line-height:44px;-webkit-clip-path:unset;clip-path:unset}.nav--in-breakpoint-range #skip-nav{display:none}.visuallyhidden{position:absolute;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(0 0 99.9% 99.9%);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}@keyframes pulse{0%{opacity:0}33%{opacity:1}66%{opacity:1}to{opacity:0}}.changed{border:1px solid var(--color-changes-modified);position:relative}.changed,.changed.displays-multiple-lines,.displays-multiple-lines .changed{border-radius:var(--border-radius,4px)}.changed:after{left:8px;background-image:url(../img/modified-icon.efb2697d.svg);background-repeat:no-repeat;bottom:0;content:" ";margin:auto;margin-right:8px;position:absolute;top:0;width:1.1764705882rem;height:1.1764705882rem;margin-top:.6176470588rem;z-index:2}@media screen{[data-color-scheme=dark] .changed:after{background-image:url(../img/modified-icon.efb2697d.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed:after{background-image:url(../img/modified-icon.efb2697d.svg)}}.changed-added{border-color:var(--color-changes-added)}.changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}@media screen{[data-color-scheme=dark] .changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-added:after{background-image:url(../img/added-icon.832a5d2c.svg)}}.changed-deprecated{border-color:var(--color-changes-deprecated)}.changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}@media screen{[data-color-scheme=dark] .changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .changed-deprecated:after{background-image:url(../img/deprecated-icon.7bf1740a.svg)}}.changed.link-block:after,.changed.relationships-item:after,.link-block .changed:after{margin-top:10px}.change-added,.change-removed{padding:2px 0}.change-removed{background-color:var(--color-highlight-red)}.change-added{background-color:var(--color-highlight-green)}body{color-scheme:light dark}body[data-color-scheme=light]{color-scheme:light}body[data-color-scheme=dark]{color-scheme:dark}body{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-text:#fff;--color-badge-default:var(--color-figure-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#fff;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-dropdown-background:hsla(0,0%,100%,.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,.1);--color-dropdown-dark-border:hsla(0,0%,94%,.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#000;--color-nav-current-link:#000;--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94%,.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,.1);--color-nav-stuck:hsla(0,0%,100%,.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,.4);--color-nav-dark-color:#fff;--color-nav-dark-current-link:#fff;--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,.7);--color-nav-dark-stuck:rgba(42,42,42,.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,.7);--color-nav-dark-root-subhead:#fff;--color-other-decl-button:var(--color-text-background);--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-addition:var(--color-figure-green);--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-deletion:var(--color-figure-red);--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-highlighted:rgba(0,113,227,.2);--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000;--color-navigator-item-hover:rgba(0,0,255,.05);--color-card-background:var(--color-fill);--color-card-content-text:var(--color-figure-gray);--color-card-eyebrow:var(--color-figure-gray-secondary-alt);--color-card-shadow:rgba(0,0,0,.04);--color-link-block-card-border:rgba(0,0,0,.04);--color-standard-red:#ffc2c2;--color-standard-orange:#fc9;--color-standard-yellow:#ffe0a3;--color-standard-blue:#9cf;--color-standard-green:#9cc;--color-standard-purple:#ccf;--color-standard-gray:#f0f0f0}@media screen{body[data-color-scheme=dark]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-text:#000;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-highlighted:rgba(0,113,227,.6);--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}}@media screen and (prefers-color-scheme:dark){body[data-color-scheme=auto]{--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-text:#000;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-highlighted:rgba(0,113,227,.6);--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}}#app-main{outline-style:none}:root{--app-height:100vh}[data-v-1fc6db09] :focus:not(input):not(textarea):not(select){outline:none}.fromkeyboard[data-v-1fc6db09] :focus:not(input):not(textarea):not(select){outline:4px solid var(--color-focus-color);outline-offset:1px}#app[data-v-1fc6db09]{display:flex;flex-flow:column;min-height:100%}#app[data-v-1fc6db09]>*{min-width:0}#app .router-content[data-v-1fc6db09]{flex:1}.container[data-v-1f05d9ec]{margin-left:auto;margin-right:auto;width:1536px;width:980px;outline-style:none;margin-top:92px;margin-bottom:140px}@media only screen and (max-width:1250px){.container[data-v-1f05d9ec]{width:692px}}@media only screen and (max-width:735px){.container[data-v-1f05d9ec]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-1f05d9ec]{width:215px}}.error-content[data-v-1f05d9ec]{box-sizing:border-box;width:502px;margin-left:auto;margin-right:auto;margin-bottom:54px}@media only screen and (max-width:1250px){.error-content[data-v-1f05d9ec]{width:420px;margin-bottom:45px}}@media only screen and (max-width:735px){.error-content[data-v-1f05d9ec]{max-width:330px;width:auto;margin-bottom:35px}}.title[data-v-1f05d9ec]{text-align:center;font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.title[data-v-1f05d9ec]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-1f05d9ec]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}
\ No newline at end of file
diff --git a/css/topic.4be8f56d.css b/css/topic.4be8f56d.css
new file mode 100644
index 000000000..553003668
--- /dev/null
+++ b/css/topic.4be8f56d.css
@@ -0,0 +1,9 @@
+/*!
+ * This source file is part of the Swift.org open source project
+ *
+ * Copyright (c) 2021 Apple Inc. and the Swift project authors
+ * Licensed under Apache License v2.0 with Runtime Library Exception
+ *
+ * See https://swift.org/LICENSE.txt for license information
+ * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
+ */.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.mobile-dropdown[data-v-2c27d339]{box-sizing:border-box}.nav--in-breakpoint-range .mobile-dropdown[data-v-2c27d339]{padding-left:.2352941176rem;padding-right:.2352941176rem}.mobile-dropdown ul[data-v-2c27d339]{list-style:none}.mobile-dropdown .option[data-v-2c27d339]{cursor:pointer;font-size:.7058823529rem;padding:.5rem 0;display:block;text-decoration:none;color:inherit}.mobile-dropdown .option[data-v-2c27d339]:focus{outline-offset:0}.mobile-dropdown .option.depth1[data-v-2c27d339]{padding-left:.4705882353rem}.active[data-v-2c27d339],.tutorial.router-link-active[data-v-2c27d339]{font-weight:600}.active[data-v-2c27d339]:focus,.tutorial.router-link-active[data-v-2c27d339]:focus{outline:none}.chapter-list[data-v-2c27d339]:not(:first-child){margin-top:1rem}.chapter-name[data-v-2c27d339],.tutorial[data-v-2c27d339]{padding:.5rem 0;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.section-list[data-v-2c27d339],.tutorial-list[data-v-2c27d339]{padding:0 .5882352941rem}.chapter-list:last-child .tutorial-list[data-v-2c27d339]:last-child{padding-bottom:10em}.chapter-list[data-v-2c27d339]{display:inline-block}.form-element[data-v-f934959a]{position:relative}.form-dropdown[data-v-f934959a]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:block;box-sizing:border-box;width:100%;height:3.3em;color:var(--color-dropdown-text);padding:1.1176470588rem 2.3529411765rem 0 .9411764706rem;text-align:left;border:1px solid var(--color-dropdown-border);border-radius:var(--border-radius,4px);background-clip:padding-box;margin-bottom:.8235294118rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;min-height:32px}.form-dropdown[data-v-f934959a]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown.no-eyebrow[data-v-f934959a]{padding-top:0}.form-dropdown[data-v-f934959a]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-text)}.form-dropdown[data-v-f934959a]::-ms-expand{opacity:0}.form-dropdown~.form-icon[data-v-f934959a]{position:absolute;display:block;pointer-events:none;fill:var(--color-figure-gray-tertiary);right:14px;width:13px;height:auto;top:50%;transform:translateY(-50%)}.is-open .form-dropdown~.form-icon[data-v-f934959a]{transform:translateY(-50%) scale(-1)}@media only screen and (max-width:735px){.form-dropdown~.form-icon[data-v-f934959a]{right:14px}}.form-dropdown~.form-label[data-v-f934959a]{font-size:.7058823529rem;line-height:1.75;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);position:absolute;top:.4705882353rem;left:17px;color:var(--color-figure-gray-secondary);pointer-events:none;padding:0;z-index:1}.form-dropdown[data-v-f934959a] option{color:var(--color-dropdown-text)}.form-dropdown-selectnone[data-v-f934959a]{color:transparent}.form-dropdown-selectnone~.form-label[data-v-f934959a]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);top:19px;left:17px;color:var(--color-figure-gray-tertiary)}.form-dropdown-selectnone[data-v-f934959a]:-moz-focusring{text-shadow:none}.form-dropdown-selectnone[data-v-f934959a]::-ms-value{display:none}.theme-dark .form-dropdown[data-v-f934959a]{color:var(--color-dropdown-dark-text);background-color:var(--color-dropdown-dark-background);border-color:var(--color-dropdown-dark-border)}.theme-dark .form-dropdown~.form-label[data-v-f934959a]{color:#ccc}.theme-dark .form-dropdown[data-v-f934959a]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-dark-text)}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-f934959a]{color:transparent}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-f934959a]:-moz-focusring{text-shadow:none}.theme-dark .form-dropdown-selectnone~.form-label[data-v-f934959a]{color:#b0b0b0}.dropdown-small[data-v-6adda760]{height:30px;display:flex;align-items:center;position:relative;background:var(--color-fill)}.dropdown-small .form-dropdown-toggle[data-v-6adda760]{line-height:1.5;font-size:12px;padding-top:0;padding-bottom:0;padding-left:20px;min-height:unset;height:30px;display:flex;align-items:center}.dropdown-small .form-dropdown-toggle[data-v-6adda760]:focus{box-shadow:none;border-color:var(--color-dropdown-border)}.fromkeyboard .dropdown-small .form-dropdown-toggle[data-v-6adda760]:focus{box-shadow:0 0 0 2px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown-toggle[data-v-6adda760]{margin:0}.is-open .form-dropdown-toggle[data-v-6adda760]{border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0;border-bottom:none;padding-bottom:1px}.fromkeyboard .is-open .form-dropdown-toggle[data-v-6adda760]{box-shadow:1px -1px 0 1px var(--color-focus-color),-1px -1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color)}.form-dropdown-title[data-v-6adda760]{margin:0;padding:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dropdown-custom[data-v-6adda760]{border-radius:var(--border-radius,4px)}.dropdown-custom.is-open[data-v-6adda760]{border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0}.dropdown-custom[data-v-6adda760] .form-dropdown-content{background:var(--color-fill);position:absolute;right:0;left:0;top:100%;border-bottom-left-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px);border:1px solid var(--color-dropdown-border);border-top:none;display:none;overflow-y:auto}.dropdown-custom[data-v-6adda760] .form-dropdown-content.is-open{display:block}.fromkeyboard .dropdown-custom[data-v-6adda760] .form-dropdown-content.is-open{box-shadow:1px 1px 0 1px var(--color-focus-color),-1px 1px 0 1px var(--color-focus-color);border-color:var(--color-focus-border-color);border-top-color:transparent}.nav .dropdown-custom[data-v-6adda760] .form-dropdown-content{max-height:calc(100vh - 116px - 3.05882rem)}.nav--is-sticking.nav .dropdown-custom[data-v-6adda760] .form-dropdown-content{max-height:calc(100vh - 3.05882rem - 72px)}.dropdown-custom[data-v-6adda760] .options{list-style:none;margin:0;padding:0 0 20px}.dropdown-custom[data-v-6adda760] .option{cursor:pointer;padding:5px 20px;font-size:12px;line-height:20px;outline:none}.dropdown-custom[data-v-6adda760] .option:hover{background-color:var(--color-fill-tertiary)}.dropdown-custom[data-v-6adda760] .option.option-active{font-weight:600}.fromkeyboard .dropdown-custom[data-v-6adda760] .option:hover{background-color:transparent}.fromkeyboard .dropdown-custom[data-v-6adda760] .option:focus{background-color:var(--color-fill-tertiary);outline:none}.tutorial-dropdown[data-v-618ff780]{grid-column:3}.section-tracker[data-v-618ff780]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-figure-gray-secondary);margin-left:15px}.tutorial-dropdown[data-v-03cbd7f7]{grid-column:1/2}.tutorial-dropdown .options[data-v-03cbd7f7]{padding-top:1rem;padding-bottom:0}.tutorial-dropdown .option[data-v-03cbd7f7]{padding:5px 20px 5px 30px}.chapter-list[data-v-03cbd7f7]{padding-bottom:20px}.chapter-name[data-v-03cbd7f7]{margin:0 20px 5px 20px;line-height:normal;color:var(--color-figure-gray-secondary)}.chevron-icon[data-v-1d3fe8ed]{padding:0;color:var(--color-nav-outlines);grid-column:2;height:20px;width:20px;margin:0 4px}@media only screen and (min-width:768px){.nav[data-v-1d3fe8ed] .nav-content{display:grid;grid-template-columns:auto auto 3fr;align-items:center}.nav[data-v-1d3fe8ed] .nav-menu{padding:0;justify-content:flex-start;grid-column:3/5}.nav[data-v-1d3fe8ed] .nav-menu-item{margin:0}}.dropdown-container[data-v-1d3fe8ed]{height:3.0588235294rem;display:grid;grid-template-columns:minmax(230px,285px) auto minmax(230px,1fr);align-items:center}@media only screen and (max-width:1023px){.dropdown-container[data-v-1d3fe8ed]{grid-template-columns:minmax(173px,216px) auto minmax(173px,1fr)}}@media(scripting:none){.dropdown-container[data-v-1d3fe8ed]{display:none}}.separator[data-v-1d3fe8ed]{height:20px;border-right:1px solid;border-color:var(--color-nav-outlines);margin:0 20px;grid-column:2}@media(scripting:none){.separator[data-v-1d3fe8ed]{display:none}}.mobile-dropdown-container[data-v-1d3fe8ed],.nav--in-breakpoint-range.nav .dropdown-container[data-v-1d3fe8ed],.nav--in-breakpoint-range.nav .separator[data-v-1d3fe8ed]{display:none}.nav--in-breakpoint-range.nav .mobile-dropdown-container[data-v-1d3fe8ed]{display:block}.nav--in-breakpoint-range.nav[data-v-1d3fe8ed] .nav-title{grid-area:title}.nav--in-breakpoint-range.nav[data-v-1d3fe8ed] .pre-title{display:none}.nav[data-v-1d3fe8ed] .nav-title{grid-column:1;width:90%;padding-top:0}.primary-dropdown[data-v-1d3fe8ed],.secondary-dropdown[data-v-1d3fe8ed]{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-1d3fe8ed] .form-dropdown,.primary-dropdown[data-v-1d3fe8ed] .form-dropdown:focus,.secondary-dropdown[data-v-1d3fe8ed] .form-dropdown,.secondary-dropdown[data-v-1d3fe8ed] .form-dropdown:focus{border-color:var(--color-tutorial-navbar-dropdown-border)}.primary-dropdown[data-v-1d3fe8ed] .options,.secondary-dropdown[data-v-1d3fe8ed] .options{background:var(--color-tutorial-navbar-dropdown-background);border-color:var(--color-tutorial-navbar-dropdown-border)}[data-v-0861b5be] .code-listing+*,[data-v-0861b5be] aside+*,[data-v-0861b5be] h2+*,[data-v-0861b5be] h3+*,[data-v-0861b5be] ol+*,[data-v-0861b5be] p+*,[data-v-0861b5be] ul+*{margin-top:20px}[data-v-0861b5be] ol ol,[data-v-0861b5be] ol ul,[data-v-0861b5be] ul ol,[data-v-0861b5be] ul ul{margin-top:0}[data-v-0861b5be] h2{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-0861b5be] h2{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-0861b5be] h2{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-0861b5be] h3{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-0861b5be] h3{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-0861b5be] .code-listing{background:var(--color-code-background);border-color:var(--colors-grid,var(--color-grid));border-style:solid;border-width:1px}[data-v-0861b5be] .code-listing pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace);padding:20px 0}.columns[data-v-30edf911]{display:grid;grid-template-rows:repeat(2,auto)}.columns.cols-2[data-v-30edf911]{gap:20px 8.3333333333%;grid-template-columns:repeat(2,1fr)}.columns.cols-3[data-v-30edf911]{gap:20px 4.1666666667%;grid-template-columns:repeat(3,1fr)}.asset[data-v-30edf911]{align-self:end;grid-row:1}.content[data-v-30edf911]{grid-row:2}@media only screen and (max-width:735px){.columns.cols-2[data-v-30edf911],.columns.cols-3[data-v-30edf911]{grid-template-columns:unset}.asset[data-v-30edf911],.content[data-v-30edf911]{grid-row:auto}}.content-and-media[data-v-3fa44f9e]{display:flex}.content-and-media.media-leading[data-v-3fa44f9e]{flex-direction:row-reverse}.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:row}@media only screen and (min-width:736px){.content-and-media[data-v-3fa44f9e]{align-items:center;justify-content:center}}.content[data-v-3fa44f9e]{width:62.5%}.asset[data-v-3fa44f9e]{width:29.1666666667%}.media-leading .asset[data-v-3fa44f9e]{margin-right:8.3333333333%}.media-trailing .asset[data-v-3fa44f9e]{margin-left:8.3333333333%}@media only screen and (max-width:735px){.content-and-media.media-leading[data-v-3fa44f9e],.content-and-media.media-trailing[data-v-3fa44f9e]{flex-direction:column}.asset[data-v-3fa44f9e],.content[data-v-3fa44f9e]{width:100%}.media-leading .asset[data-v-3fa44f9e],.media-trailing .asset[data-v-3fa44f9e]{margin:20px 0 0 0}}.group[id][data-v-5b4a8b3c]{margin-top:20px;padding-top:20px}[data-v-5b4a8b3c] img,[data-v-5b4a8b3c] video{display:block;margin:0 auto;max-width:100%}.layout+[data-v-4d5a806e]{margin-top:40px}@media only screen and (max-width:735px){.layout[data-v-4d5a806e]:first-child>:not(.group[id]){margin-top:40px}}.body[data-v-20dca692]{background:var(--colors-text-background,var(--color-article-body-background));margin-left:auto;margin-right:auto;width:1536px;width:980px;border-radius:10px;transform:translateY(-120px)}@media only screen and (max-width:1250px){.body[data-v-20dca692]{width:692px}}@media only screen and (max-width:735px){.body[data-v-20dca692]{width:87.5%}}@media only screen and (max-width:320px){.body[data-v-20dca692]{width:215px}}@media only screen and (max-width:735px){.body[data-v-20dca692]{border-radius:0;transform:none}}.body[data-v-20dca692]~*{margin-top:-40px}.body-content[data-v-20dca692]{padding:40px 8.3333333333% 80px 8.3333333333%}@media only screen and (max-width:735px){.body-content[data-v-20dca692]{padding:0 0 40px 0}}.call-to-action[data-v-2bfdf182]{padding:65px 0;background:var(--color-call-to-action-background)}.theme-dark .call-to-action[data-v-2bfdf182]{--color-call-to-action-background:#424242}.row[data-v-2bfdf182]{margin-left:auto;margin-right:auto;width:1536px;width:980px;display:flex;align-items:center}@media only screen and (max-width:1250px){.row[data-v-2bfdf182]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2bfdf182]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-2bfdf182]{width:215px}}[data-v-2bfdf182] img,[data-v-2bfdf182] video{max-height:560px}h2[data-v-2bfdf182]{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){h2[data-v-2bfdf182]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){h2[data-v-2bfdf182]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.label[data-v-2bfdf182]{display:block;font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:var(--spacing-stacked-margin-small);color:var(--color-eyebrow)}@media only screen and (max-width:735px){.label[data-v-2bfdf182]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-2bfdf182]{margin-bottom:1.5rem}.right-column[data-v-2bfdf182]{margin-left:auto}@media only screen and (max-width:735px){.row[data-v-2bfdf182]{display:block}.col+.col[data-v-2bfdf182]{margin-top:40px}.call-to-action[data-v-426a965c]{margin-top:0}}.headline[data-v-d46a1474]{margin-bottom:var(--spacing-stacked-margin-large)}.heading[data-v-d46a1474]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-header-text)}@media only screen and (max-width:1250px){.heading[data-v-d46a1474]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.heading[data-v-d46a1474]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.dark .heading[data-v-d46a1474]{color:#fff}.eyebrow[data-v-d46a1474]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:block;margin-bottom:var(--spacing-stacked-margin-small);color:var(--color-eyebrow)}@media only screen and (max-width:1250px){.eyebrow[data-v-d46a1474]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.generic-modal[data-v-795f7b59]{position:fixed;top:0;left:0;right:0;bottom:0;margin:0;z-index:11000;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;background:none;overflow:auto}.modal-fullscreen[data-v-795f7b59]{align-items:stretch}.modal-fullscreen .container[data-v-795f7b59]{margin:0;flex:1;width:100%;height:100%;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.modal-standard[data-v-795f7b59]{padding:20px}.modal-standard .container[data-v-795f7b59]{padding:60px;border-radius:var(--border-radius,4px)}@media screen{[data-color-scheme=dark] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .modal-standard .container[data-v-795f7b59]{background:#1d1d1f}}@media only screen and (max-width:735px){.modal-standard[data-v-795f7b59]{padding:0;align-items:stretch}.modal-standard .container[data-v-795f7b59]{margin:20px 0 0;padding:50px 30px;flex:1;width:100%;border-bottom-left-radius:0;border-bottom-right-radius:0}}.backdrop[data-v-795f7b59]{overflow:auto;background:var(--backdrop-background,rgba(0,0,0,.4));-webkit-overflow-scrolling:touch;width:100%;height:100%;position:fixed}.container[data-v-795f7b59]{margin-left:auto;margin-right:auto;width:1536px;width:980px;background:var(--colors-generic-modal-background,var(--color-generic-modal-background));z-index:1;position:relative;overflow:auto;max-width:100%}@media only screen and (max-width:1250px){.container[data-v-795f7b59]{width:692px}}@media only screen and (max-width:735px){.container[data-v-795f7b59]{width:87.5%}}@media only screen and (max-width:320px){.container[data-v-795f7b59]{width:215px}}.close[data-v-795f7b59]{position:absolute;z-index:9999;top:22px;left:22px;width:17px;height:17px;color:#666;cursor:pointer;background:none;border:0;display:flex;align-items:center}.close .close-icon[data-v-795f7b59]{fill:currentColor;width:100%;height:100%}.theme-dark .container[data-v-795f7b59]{background:#000}.theme-dark .container .close[data-v-795f7b59]{color:#b0b0b0}.theme-code .container[data-v-795f7b59]{background-color:var(--code-background,var(--color-code-background))}.metadata[data-v-94ff76c0]{display:flex}.item[data-v-94ff76c0]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;flex-direction:column;justify-content:flex-end;align-items:center;border-right:1px solid #fff;padding:0 27.5px}@media only screen and (max-width:735px){.item[data-v-94ff76c0]{font-size:.6470588235rem;line-height:1.6363636364;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);padding:0 8px}}.item[data-v-94ff76c0]:first-of-type{padding-left:0}.item[data-v-94ff76c0]:last-of-type{border:none}@media only screen and (max-width:735px){.item[data-v-94ff76c0]:last-of-type{padding-right:0}}.content[data-v-94ff76c0]{color:#fff}.icon[data-v-94ff76c0]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){.icon[data-v-94ff76c0]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.icon[data-v-94ff76c0]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.small-icon[data-v-94ff76c0]{width:1em;height:1em;margin-left:.2rem}.small-icon.xcode-icon[data-v-94ff76c0]{width:.8em;height:.8em}.content-link[data-v-94ff76c0]{display:flex;align-items:center}a[data-v-94ff76c0]{color:var(--colors-link,var(--color-tutorials-overview-link))}.duration[data-v-94ff76c0]{display:flex;align-items:baseline;font-size:2.3529411765rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.8rem}@media only screen and (max-width:735px){.duration[data-v-94ff76c0]{font-size:1.6470588235rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.3rem}}.minutes[data-v-94ff76c0]{display:inline-block;font-size:1.6470588235rem;line-height:1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:1.3rem}@media only screen and (max-width:735px){.minutes[data-v-94ff76c0]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);line-height:.8rem}}.item-large-icon[data-v-94ff76c0]{height:2.3rem;max-width:100%}@media only screen and (max-width:735px){.item-large-icon[data-v-94ff76c0]{height:1.5rem;max-width:100%}}.bottom[data-v-94ff76c0]{margin-top:13px}@media only screen and (max-width:735px){.bottom[data-v-94ff76c0]{margin-top:8px}}.hero[data-v-2a434750]{background-color:var(--color-tutorial-hero-background);color:var(--color-tutorial-hero-text);position:relative}@media screen{.hero.dark[data-v-2a434750]{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-text:#fff;--color-badge-default:var(--color-figure-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#fff;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-dropdown-background:hsla(0,0%,100%,.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,.1);--color-dropdown-dark-border:hsla(0,0%,94%,.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#000;--color-nav-current-link:#000;--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94%,.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,.1);--color-nav-stuck:hsla(0,0%,100%,.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,.4);--color-nav-dark-color:#fff;--color-nav-dark-current-link:#fff;--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,.7);--color-nav-dark-stuck:rgba(42,42,42,.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,.7);--color-nav-dark-root-subhead:#fff;--color-other-decl-button:var(--color-text-background);--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-addition:var(--color-figure-green);--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-deletion:var(--color-figure-red);--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-highlighted:rgba(0,113,227,.2);--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000;--color-navigator-item-hover:rgba(0,0,255,.05);--color-card-background:var(--color-fill);--color-card-content-text:var(--color-figure-gray);--color-card-eyebrow:var(--color-figure-gray-secondary-alt);--color-card-shadow:rgba(0,0,0,.04);--color-link-block-card-border:rgba(0,0,0,.04);--color-standard-red:#ffc2c2;--color-standard-orange:#fc9;--color-standard-yellow:#ffe0a3;--color-standard-blue:#9cf;--color-standard-green:#9cc;--color-standard-purple:#ccf;--color-standard-gray:#f0f0f0;--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-text:#000;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-highlighted:rgba(0,113,227,.6);--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}}.bg[data-v-2a434750]{background-color:var(--color-tutorial-hero-background);background-position:top;background-repeat:no-repeat;background-size:cover;content:"";height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%}.row[data-v-2a434750]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding:80px 0}@media only screen and (max-width:1250px){.row[data-v-2a434750]{width:692px}}@media only screen and (max-width:735px){.row[data-v-2a434750]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-2a434750]{width:215px}}.col[data-v-2a434750]{z-index:1}[data-v-2a434750] .eyebrow{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-hero-eyebrow)}@media only screen and (max-width:1250px){[data-v-2a434750] .eyebrow{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.headline[data-v-2a434750]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-bottom:2rem}@media only screen and (max-width:1250px){.headline[data-v-2a434750]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.headline[data-v-2a434750]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.intro[data-v-2a434750]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.intro[data-v-2a434750]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content+p[data-v-2a434750]{margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){.content+p[data-v-2a434750]{margin-top:8px}}.call-to-action[data-v-2a434750]{display:flex;align-items:center}.call-to-action .cta-icon[data-v-2a434750]{margin-left:.4rem;width:1em;height:1em}.metadata[data-v-2a434750]{margin-top:2rem}.video-asset[data-v-2a434750]{display:grid;height:100vh;margin:0;place-items:center center}.video-asset[data-v-2a434750] video{max-width:1280px;min-width:320px;width:100%}@media only screen and (max-width:735px){.headline[data-v-2a434750]{margin-bottom:19px}}.tutorial-hero[data-v-35a9482f]{margin-bottom:80px}@media only screen and (max-width:735px){.tutorial-hero[data-v-35a9482f]{margin-bottom:0}}.title[data-v-28135d78]{font-size:.7058823529rem;line-height:1.3333333333;color:var(--colors-secondary-label,var(--color-secondary-label))}.title[data-v-28135d78],.title[data-v-61b03ec2]{font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.title[data-v-61b03ec2]{font-size:1.1176470588rem;line-height:1.2105263158;color:var(--colors-header-text,var(--color-header-text));margin:25px 0}.question-content[data-v-61b03ec2] code{font-size:.7647058824rem;line-height:1.8461538462;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.choices[data-v-61b03ec2]{display:flex;flex-direction:column;padding:0;list-style:none;margin:25px 0}.choice[data-v-61b03ec2]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);flex:1;border-radius:var(--border-radius,4px);margin:8px 0;padding:1.5rem 40px;cursor:pointer;background:var(--colors-text-background,var(--color-text-background));display:flex;flex-direction:column;justify-content:center;border-width:1px;border-style:solid;border-color:var(--colors-grid,var(--color-grid));position:relative}.choice[data-v-61b03ec2] img{max-height:23.5294117647rem}.choice[data-v-61b03ec2]:first-of-type{margin-top:0}.choice[data-v-61b03ec2] code{font-size:.7647058824rem;line-height:1.8461538462;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.controls[data-v-61b03ec2]{text-align:center;margin-bottom:40px}.controls .button-cta[data-v-61b03ec2]{margin:.5rem;margin-top:0;padding:.3rem 3rem;min-width:8rem}input[type=radio][data-v-61b03ec2]{position:absolute;width:100%;left:0;height:100%;opacity:0;z-index:-1}.active[data-v-61b03ec2]{border-color:var(--color-tutorial-quiz-border-active);box-shadow:0 0 0 4px var(--color-focus-color);outline:none}.active [data-v-61b03ec2]{color:var(--colors-text,var(--color-text))}.correct[data-v-61b03ec2]{background:var(--color-form-valid-background);border-color:var(--color-form-valid)}.correct .choice-icon[data-v-61b03ec2]{fill:var(--color-form-valid)}.incorrect[data-v-61b03ec2]{background:var(--color-form-error-background);border-color:var(--color-form-error)}.incorrect .choice-icon[data-v-61b03ec2]{fill:var(--color-form-error)}.correct[data-v-61b03ec2],.incorrect[data-v-61b03ec2]{position:relative}.correct .choice-icon[data-v-61b03ec2],.incorrect .choice-icon[data-v-61b03ec2]{position:absolute;top:11px;left:10px;font-size:20px;width:1.05em}.disabled[data-v-61b03ec2]{pointer-events:none}.answer[data-v-61b03ec2]{margin:.5rem 1.5rem .5rem 0;font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.answer[data-v-61b03ec2]:last-of-type{margin-bottom:0}[data-v-61b03ec2] .question>.code-listing{padding:unset;border-radius:0}[data-v-61b03ec2] pre{padding:0}[data-v-61b03ec2] img{display:block;margin-left:auto;margin-right:auto;max-width:100%}.title[data-v-65e3c02c]{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-header-text,var(--color-header-text))}@media only screen and (max-width:1250px){.title[data-v-65e3c02c]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-65e3c02c]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title p[data-v-65e3c02c]{color:var(--colors-text,var(--color-text))}.assessments[data-v-65e3c02c]{box-sizing:content-box;padding:0 1rem;background:var(--color-tutorial-assessments-background);margin-left:auto;margin-right:auto;width:1536px;width:980px;margin-bottom:80px}@media only screen and (max-width:1250px){.assessments[data-v-65e3c02c]{width:692px}}@media only screen and (max-width:735px){.assessments[data-v-65e3c02c]{width:87.5%}}@media only screen and (max-width:320px){.assessments[data-v-65e3c02c]{width:215px}}.banner[data-v-65e3c02c]{padding:40px 0;border-bottom:1px solid;margin-bottom:40px;border-color:var(--colors-grid,var(--color-grid));text-align:center}.success[data-v-65e3c02c]{text-align:center;padding-bottom:40px;font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-text,var(--color-text))}@media only screen and (max-width:1250px){.success[data-v-65e3c02c]{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.success[data-v-65e3c02c]{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.assessments-wrapper[data-v-65e3c02c]{padding-top:80px}.assessments-wrapper[data-v-6db06128]{padding-bottom:40px;padding-top:0}@media only screen and (max-width:735px){.assessments-wrapper[data-v-6db06128]{padding-top:80px}}.article[data-v-9d2d5cc2]{background:var(--colors-article-background,var(--color-article-background))}@media only screen and (max-width:735px){.article[data-v-9d2d5cc2]{background:var(--colors-text-background,var(--color-article-body-background))}}.intro-container[data-v-7dcf2d10]{margin-bottom:80px}.intro[data-v-7dcf2d10]{display:flex;align-items:center}@media only screen and (max-width:735px){.intro[data-v-7dcf2d10]{padding-bottom:0;flex-direction:column}}.intro.ide .media[data-v-7dcf2d10] img{background-color:var(--colors-text-background,var(--color-text-background))}.col.left[data-v-7dcf2d10]{padding-right:40px}@media only screen and (max-width:1250px){.col.left[data-v-7dcf2d10]{padding-right:28px}}@media only screen and (max-width:735px){.col.left[data-v-7dcf2d10]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding-right:0}}@media only screen and (max-width:735px)and (max-width:1250px){.col.left[data-v-7dcf2d10]{width:692px}}@media only screen and (max-width:735px)and (max-width:735px){.col.left[data-v-7dcf2d10]{width:87.5%}}@media only screen and (max-width:735px)and (max-width:320px){.col.left[data-v-7dcf2d10]{width:215px}}.col.right[data-v-7dcf2d10]{padding-left:40px}@media only screen and (max-width:1250px){.col.right[data-v-7dcf2d10]{padding-left:28px}}@media only screen and (max-width:735px){.col.right[data-v-7dcf2d10]{padding-left:0}}.content[data-v-7dcf2d10]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.media[data-v-7dcf2d10] img{width:auto;max-height:560px;min-height:18.8235294118rem;-o-object-fit:scale-down;object-fit:scale-down}@media only screen and (max-width:735px){.media[data-v-7dcf2d10]{margin:0;margin-top:40px}.media[data-v-7dcf2d10] image,.media[data-v-7dcf2d10] video{max-height:80vh}}.media[data-v-7dcf2d10] .asset{padding:0 20px}.headline[data-v-7dcf2d10]{color:var(--colors-header-text,var(--color-header-text))}[data-v-7dcf2d10] .eyebrow{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){[data-v-7dcf2d10] .eyebrow{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}[data-v-7dcf2d10] .eyebrow a{color:inherit}[data-v-7dcf2d10] .heading{font-size:1.8823529412rem;line-height:1.25;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:1250px){[data-v-7dcf2d10] .heading{font-size:1.6470588235rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){[data-v-7dcf2d10] .heading{font-size:1.4117647059rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.expanded-intro[data-v-7dcf2d10]{margin-left:auto;margin-right:auto;width:1536px;width:980px;margin-top:40px}@media only screen and (max-width:1250px){.expanded-intro[data-v-7dcf2d10]{width:692px}}@media only screen and (max-width:735px){.expanded-intro[data-v-7dcf2d10]{width:87.5%}}@media only screen and (max-width:320px){.expanded-intro[data-v-7dcf2d10]{width:215px}}[data-v-7dcf2d10] .cols-2{gap:20px 16.6666666667%}[data-v-7dcf2d10] .cols-3 .column{gap:20px 12.5%}.code-preview[data-v-395e30cd]{position:sticky;overflow-y:auto;-webkit-overflow-scrolling:touch;background-color:var(--background,var(--color-step-background));height:calc(100vh - 3.05882rem)}.code-preview.ide[data-v-395e30cd]{height:100vh}.code-preview[data-v-395e30cd] .code-listing{color:var(--text,var(--color-code-plain))}.code-preview[data-v-395e30cd] .code-listing .code-line-container{padding-right:14px}.code-preview[data-v-395e30cd] pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.header[data-v-395e30cd]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);position:relative;display:flex;justify-content:space-between;align-items:center;width:-webkit-fill-available;width:-moz-available;width:stretch;cursor:pointer;font-weight:600;padding:8px 12px;border-radius:var(--border-radius,4px) var(--border-radius,4px) 0 0;z-index:1;background:var(--color-runtime-preview-background);color:var(--colors-runtime-preview-text,var(--color-runtime-preview-text))}.header[data-v-395e30cd]:focus{outline-style:none}#app.fromkeyboard .header[data-v-395e30cd]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:rgba(0,0,0,.4);position:absolute;top:0;right:0;background:var(--color-runtime-preview-background);border-radius:var(--border-radius,4px);margin:1rem;margin-left:0;transition:width .2s ease-in;box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow)}@media screen{[data-color-scheme=dark] .runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:hsla(0,0%,100%,.4)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .runtime-preview[data-v-395e30cd]{--color-runtime-preview-shadow:hsla(0,0%,100%,.4)}}@supports not ((width:-webkit-fill-available) or (width:-moz-available) or (width:stretch)){.runtime-preview[data-v-395e30cd]{display:flex;flex-direction:column}}.runtime-preview .runtimve-preview__container[data-v-395e30cd]{border-radius:var(--border-radius,4px);overflow:hidden}.runtime-preview-ide[data-v-395e30cd]{top:0}.runtime-preview-ide .runtime-preview-asset[data-v-395e30cd] img{background-color:var(--color-runtime-preview-background)}.runtime-preview.collapsed[data-v-395e30cd]{box-shadow:0 0 3px 0 var(--color-runtime-preview-shadow);width:102px}.runtime-preview.collapsed .header[data-v-395e30cd]{border-radius:var(--border-radius,4px)}.runtime-preview.disabled[data-v-395e30cd]{box-shadow:0 0 3px 0 transparent}.runtime-preview.disabled .header[data-v-395e30cd]{color:var(--color-runtime-preview-disabled-text);cursor:auto}.runtime-preview-asset[data-v-395e30cd]{border-radius:0 0 var(--border-radius,4px) var(--border-radius,4px)}.runtime-preview-asset[data-v-395e30cd] img{border-bottom-left-radius:var(--border-radius,4px);border-bottom-right-radius:var(--border-radius,4px)}.preview-icon[data-v-395e30cd]{height:.8em;width:.8em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.preview-show[data-v-395e30cd]{transform:scale(-1)}[data-v-0bdf2f26] pre{padding:10px 0}.toggle-preview[data-v-78763c14]{color:var(--color-runtime-preview-disabled-text);display:flex;align-items:center}a[data-v-78763c14]{color:var(--url,var(--color-link))}.toggle-text[data-v-78763c14]{display:flex;align-items:center}svg.toggle-icon[data-v-78763c14]{width:1em;height:1em;margin-left:.5em}.mobile-code-preview[data-v-b1691954]{background-color:var(--background,var(--color-step-background));padding:14px 0}@media only screen and (max-width:735px){.mobile-code-preview[data-v-b1691954]{display:flex;flex-direction:column}}.runtime-preview-modal-content[data-v-b1691954]{padding:45px 60px 0 60px;min-width:200px}.runtime-preview-modal-content[data-v-b1691954] img:not(.file-icon){border-radius:var(--border-radius,4px);box-shadow:0 0 3px rgba(0,0,0,.4);max-height:80vh;width:auto;display:block;margin-bottom:1rem}.runtime-preview-modal-content .runtime-preview-label[data-v-b1691954]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-runtime-preview-text);display:block;text-align:center;padding:.5em}[data-v-b1691954] .code-listing{color:var(--text,var(--color-code-plain))}[data-v-b1691954] .full-code-listing{padding-top:60px;min-height:calc(100vh - 60px)}[data-v-b1691954] pre{font-size:.7058823529rem;line-height:1.8333333333;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}.preview-toggle-container[data-v-b1691954]{align-self:flex-end;margin-right:20px}.step-container[data-v-d0198556]{margin:0}.step-container[data-v-d0198556]:not(:last-child){margin-bottom:100px}@media only screen and (max-width:735px){.step-container[data-v-d0198556]:not(:last-child){margin-bottom:80px}}.step[data-v-d0198556]{position:relative;border-radius:var(--tutorial-step-border-radius,var(--border-radius,4px));padding:1rem 2rem;background-color:var(--color-step-background);overflow:hidden;filter:blur(0)}.step[data-v-d0198556]:before{content:"";position:absolute;top:0;left:0;border:1px solid var(--color-step-focused);background-color:var(--color-step-focused);height:calc(100% - 2px);width:4px;opacity:0;transition:opacity .15s ease-in}.step.focused[data-v-d0198556],.step[data-v-d0198556]:focus{outline:none}.step.focused[data-v-d0198556]:before,.step[data-v-d0198556]:focus:before{opacity:1}:root.no-js .step.focused[data-v-d0198556]:before,:root.no-js .step[data-v-d0198556]:focus:before{opacity:0}@media only screen and (max-width:735px){.step[data-v-d0198556]{padding-left:2rem}.step[data-v-d0198556]:before{opacity:1}}.step-label[data-v-d0198556]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--colors-text,var(--color-step-text));margin-bottom:var(--spacing-stacked-margin-small)}.caption[data-v-d0198556]{border-top:1px solid;border-color:var(--color-step-caption);padding:1rem 0 0 0;margin-top:1rem}.media-container[data-v-d0198556]{display:none}@media only screen and (max-width:735px){.step[data-v-d0198556]{margin:0 .5882352941rem 1.1764705882rem .5882352941rem}.step.focused[data-v-d0198556],.step[data-v-d0198556]:focus{outline:none}.media-container[data-v-d0198556]{display:block;position:relative}.media-container[data-v-d0198556] img,.media-container[data-v-d0198556] video{max-height:80vh}[data-v-d0198556] .asset{padding:0 20px}}.steps[data-v-e3061a7c]{position:relative;font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;color:var(--colors-text,var(--color-text))}@media only screen and (max-width:735px){.steps[data-v-e3061a7c]{padding-top:80px}.steps[data-v-e3061a7c]:before{position:absolute;top:0;border-top:1px solid var(--color-fill-gray-tertiary);content:"";width:calc(100% - 2.35294rem);margin:0 1.1764705882rem}}.steps[data-v-e3061a7c] aside{background:unset;border:unset;box-shadow:unset;-moz-column-break-inside:unset;break-inside:unset;padding:unset}.steps[data-v-e3061a7c] aside .label{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.steps[data-v-e3061a7c] aside+*{margin-top:var(--spacing-stacked-margin-large)}.content-container[data-v-e3061a7c]{flex:none;margin-right:4.1666666667%;width:37.5%;margin-top:140px;margin-bottom:94vh}@media only screen and (max-width:735px){.content-container[data-v-e3061a7c]{margin-top:0;margin-bottom:0;height:100%;margin-left:0;margin-right:0;position:relative;width:100%}}.asset-container[data-v-e3061a7c]{flex:none;height:calc(100vh - 3.05882rem);background-color:var(--background,var(--color-step-background));max-width:921px;width:calc(50vw + 8.33333%);position:sticky;top:3.0588235294rem;transition:margin .1s ease-in-out}@media only screen and (max-width:767px){.asset-container[data-v-e3061a7c]{top:2.8235294118rem;height:calc(100vh - 2.82353rem)}}.asset-container[data-v-e3061a7c]:not(.for-step-code){overflow-y:auto;-webkit-overflow-scrolling:touch}.asset-container.ide[data-v-e3061a7c]{height:100vh;top:0}@media only screen and (min-width:736px){.asset-container[data-v-e3061a7c]{display:grid}.asset-container>[data-v-e3061a7c]{grid-row:1;grid-column:1;height:calc(100vh - 3.05882rem)}.asset-container.ide>[data-v-e3061a7c]{height:100vh}}.asset-container .step-asset[data-v-e3061a7c]{box-sizing:border-box;padding:0;padding-left:40px;min-height:320px;height:100%}.asset-container .step-asset[data-v-e3061a7c],.asset-container .step-asset[data-v-e3061a7c] picture{height:100%;display:flex;align-items:center}.asset-container .step-asset[data-v-e3061a7c] .video-replay-container{height:100%;display:flex;flex-direction:column;justify-content:center}.asset-container .step-asset[data-v-e3061a7c] img,.asset-container .step-asset[data-v-e3061a7c] video{width:auto;max-height:calc(100vh - 3.05882rem - 80px);max-width:531.66667px;margin:0}@media only screen and (max-width:1250px){.asset-container .step-asset[data-v-e3061a7c] img,.asset-container .step-asset[data-v-e3061a7c] video{max-width:363.66667px}}.asset-container .step-asset[data-v-e3061a7c] .video-replay-container,.asset-container .step-asset[data-v-e3061a7c] img{min-height:320px}.asset-container .step-asset[data-v-e3061a7c] .video-replay-container video{min-height:280px}.asset-container .step-asset[data-v-e3061a7c] [data-orientation=landscape]{max-width:min(841px,calc(50vw + 8.33333% - 80px))}@media only screen and (max-width:735px){.asset-container[data-v-e3061a7c]{display:none}}.asset-wrapper[data-v-e3061a7c]{width:63.2%;align-self:center;transition:transform .25s ease-out;will-change:transform}.asset-wrapper.ide .step-asset[data-v-e3061a7c] img{background-color:var(--background,var(--color-step-background))}.asset-wrapper[data-v-e3061a7c]:has([data-orientation=landscape]){width:unset}[data-v-e3061a7c] .runtime-preview-asset{display:grid}[data-v-e3061a7c] .runtime-preview-asset>*{grid-row:1;grid-column:1}.interstitial[data-v-e3061a7c]{padding:0 2rem}.interstitial[data-v-e3061a7c]:not(:first-child){margin-top:5.8823529412rem}.interstitial[data-v-e3061a7c]:not(:last-child){margin-bottom:30px}@media only screen and (max-width:735px){.interstitial[data-v-e3061a7c]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding:0}}@media only screen and (max-width:735px)and (max-width:1250px){.interstitial[data-v-e3061a7c]{width:692px}}@media only screen and (max-width:735px)and (max-width:735px){.interstitial[data-v-e3061a7c]{width:87.5%}}@media only screen and (max-width:735px)and (max-width:320px){.interstitial[data-v-e3061a7c]{width:215px}}@media only screen and (max-width:735px){.interstitial[data-v-e3061a7c]:not(:first-child){margin-top:0}}.fade-enter-active[data-v-e3061a7c],.fade-leave-active[data-v-e3061a7c]{transition:opacity .3s ease-in-out}.fade-enter[data-v-e3061a7c],.fade-leave-to[data-v-e3061a7c]{opacity:0}.section[data-v-6b3a0b3a]{padding-top:80px}.sections[data-v-79a75e9e]{margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.sections[data-v-79a75e9e]{width:692px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{width:87.5%}}@media only screen and (max-width:320px){.sections[data-v-79a75e9e]{width:215px}}@media only screen and (max-width:735px){.sections[data-v-79a75e9e]{margin:0;width:100%}}.tutorial[data-v-1631abcb]{background-color:var(--colors-text-background,var(--color-tutorial-background))}
\ No newline at end of file
diff --git a/css/tutorials-overview.adb17623.css b/css/tutorials-overview.adb17623.css
new file mode 100644
index 000000000..03fa573df
--- /dev/null
+++ b/css/tutorials-overview.adb17623.css
@@ -0,0 +1,9 @@
+/*!
+ * This source file is part of the Swift.org open source project
+ *
+ * Copyright (c) 2021 Apple Inc. and the Swift project authors
+ * Licensed under Apache License v2.0 with Runtime Library Exception
+ *
+ * See https://swift.org/LICENSE.txt for license information
+ * See https://swift.org/CONTRIBUTORS.txt for Swift project authors
+ */.tutorials-navigation-link[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link);transition:color .3s linear}.tutorials-navigation-link[data-v-e9f9b59c]:hover{text-decoration:none;transition:none;color:var(--color-tutorials-overview-navigation-link-hover)}.tutorials-navigation-link.active[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link-active)}.tutorials-navigation-list[data-v-4e0180fa]{list-style-type:none;margin:0}.tutorials-navigation-list li+li[data-v-4e0180fa]:not(.volume--named){margin-top:24px}.tutorials-navigation-list .volume--named+.volume--named[data-v-4e0180fa]{margin-top:12px}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.toggle[data-v-489416f8]{color:#f0f0f0;line-height:21px;display:flex;align-items:center;width:100%;font-weight:600;padding:6px 6px 6px 0;border-bottom:1px solid #2a2a2a;text-decoration:none;box-sizing:border-box}@media only screen and (max-width:767px){.toggle[data-v-489416f8]{padding-right:6px;border-bottom-color:hsla(0,0%,100%,.1)}}.toggle .text[data-v-489416f8]{word-break:break-word}.toggle[data-v-489416f8]:hover{text-decoration:none}.toggle .toggle-icon[data-v-489416f8]{display:inline-block;transition:transform .2s ease-in;height:.4em;width:.4em;margin-left:auto;margin-right:.2em}.collapsed .toggle .toggle-icon[data-v-489416f8]{transform:rotate(45deg)}.collapsed .toggle[data-v-489416f8],.collapsed .toggle[data-v-489416f8]:hover{color:#b0b0b0}.tutorials-navigation-menu-content[data-v-489416f8]{opacity:1;transition:height .2s ease-in,opacity .2s ease-in}.collapsed .tutorials-navigation-menu-content[data-v-489416f8]{height:0;opacity:0}.tutorials-navigation-menu-content .tutorials-navigation-list[data-v-489416f8]{padding:24px 0 12px 0}.tutorials-navigation[data-v-79093ed6]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.nav[data-v-54bcce6d] .nav-menu{padding-top:0}.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{margin-left:auto}@media only screen and (min-width:768px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items .in-page-navigation{display:none}}@media only screen and (min-width:320px)and (max-width:735px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{padding:18px 0 40px}}.hero[data-v-400ffab5]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding-bottom:4.7058823529rem;padding-top:4.7058823529rem}@media only screen and (max-width:1250px){.hero[data-v-400ffab5]{width:692px}}@media only screen and (max-width:735px){.hero[data-v-400ffab5]{width:87.5%}}@media only screen and (max-width:320px){.hero[data-v-400ffab5]{width:215px}}@media screen{.hero[data-v-400ffab5]{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondary);--color-aside-tip-border:var(--color-figure-light-gray);--color-aside-warning:var(--color-figure-gray);--color-aside-warning-background:var(--color-fill-red-secondary);--color-aside-warning-border:var(--color-figure-red);--color-badge-text:#fff;--color-badge-default:var(--color-figure-gray);--color-badge-beta:var(--color-figure-gray-tertiary);--color-badge-deprecated:var(--color-figure-orange);--color-badge-dark-default:#fff;--color-badge-dark-beta:#b0b0b0;--color-badge-dark-deprecated:#f60;--color-button-background:var(--color-fill-blue);--color-button-background-active:#36f;--color-button-background-hover:var(--color-figure-blue);--color-button-text:#fff;--color-call-to-action-background:var(--color-fill-secondary);--color-changes-added:var(--color-figure-light-gray);--color-changes-added-hover:var(--color-figure-light-gray);--color-changes-deprecated:var(--color-figure-light-gray);--color-changes-deprecated-hover:var(--color-figure-light-gray);--color-changes-modified:var(--color-figure-light-gray);--color-changes-modified-hover:var(--color-figure-light-gray);--color-changes-modified-previous-background:var(--color-fill);--color-code-background:var(--color-fill-secondary);--color-code-collapsible-background:var(--color-fill-tertiary);--color-code-collapsible-text:var(--color-figure-gray-secondary-alt);--color-code-line-highlight:rgba(51,102,255,.08);--color-code-line-highlight-border:var(--color-figure-blue);--color-code-plain:var(--color-figure-gray);--color-dropdown-background:hsla(0,0%,100%,.8);--color-dropdown-border:#ccc;--color-dropdown-option-text:#666;--color-dropdown-text:#000;--color-dropdown-dark-background:hsla(0,0%,100%,.1);--color-dropdown-dark-border:hsla(0,0%,94%,.2);--color-dropdown-dark-option-text:#ccc;--color-dropdown-dark-text:#fff;--color-eyebrow:var(--color-figure-gray-secondary);--color-focus-border-color:var(--color-fill-blue);--color-focus-color:rgba(0,125,250,.6);--color-form-error:var(--color-figure-red);--color-form-error-background:var(--color-fill-red-secondary);--color-form-valid:var(--color-figure-green);--color-form-valid-background:var(--color-fill-green-secondary);--color-generic-modal-background:var(--color-fill);--color-grid:var(--color-fill-gray);--color-header-text:var(--color-figure-gray);--color-hero-eyebrow:#ccc;--color-link:var(--color-figure-blue);--color-loading-placeholder-background:var(--color-fill);--color-nav-color:#000;--color-nav-current-link:#000;--color-nav-expanded:#fff;--color-nav-hierarchy-collapse-background:#f0f0f0;--color-nav-hierarchy-collapse-borders:#ccc;--color-nav-hierarchy-item-borders:#ccc;--color-nav-keyline:rgba(0,0,0,.2);--color-nav-link-color:#000;--color-nav-link-color-hover:#36f;--color-nav-outlines:#ccc;--color-nav-rule:hsla(0,0%,94%,.5);--color-nav-solid-background:#fff;--color-nav-sticking-expanded-keyline:rgba(0,0,0,.1);--color-nav-stuck:hsla(0,0%,100%,.9);--color-nav-uiblur-expanded:hsla(0,0%,100%,.9);--color-nav-uiblur-stuck:hsla(0,0%,100%,.7);--color-nav-root-subhead:var(--color-tutorials-teal);--color-nav-dark-border-top-color:hsla(0,0%,100%,.4);--color-nav-dark-color:#fff;--color-nav-dark-current-link:#fff;--color-nav-dark-expanded:#2a2a2a;--color-nav-dark-hierarchy-collapse-background:#424242;--color-nav-dark-hierarchy-collapse-borders:#666;--color-nav-dark-hierarchy-item-borders:#424242;--color-nav-dark-keyline:rgba(66,66,66,.95);--color-nav-dark-link-color:#fff;--color-nav-dark-link-color-hover:#09f;--color-nav-dark-outlines:#575757;--color-nav-dark-rule:#575757;--color-nav-dark-solid-background:#000;--color-nav-dark-sticking-expanded-keyline:rgba(66,66,66,.7);--color-nav-dark-stuck:rgba(42,42,42,.9);--color-nav-dark-uiblur-expanded:rgba(42,42,42,.9);--color-nav-dark-uiblur-stuck:rgba(42,42,42,.7);--color-nav-dark-root-subhead:#fff;--color-other-decl-button:var(--color-text-background);--color-runtime-preview-background:var(--color-fill-tertiary);--color-runtime-preview-disabled-text:hsla(0,0%,40%,.6);--color-runtime-preview-text:var(--color-figure-gray-secondary);--color-secondary-label:var(--color-figure-gray-secondary);--color-step-background:var(--color-fill-secondary);--color-step-caption:var(--color-figure-gray-secondary);--color-step-focused:var(--color-figure-light-gray);--color-step-text:var(--color-figure-gray-secondary);--color-svg-icon:#666;--color-syntax-addition:var(--color-figure-green);--color-syntax-attributes:#947100;--color-syntax-characters:#272ad8;--color-syntax-comments:#707f8c;--color-syntax-deletion:var(--color-figure-red);--color-syntax-documentation-markup:#506375;--color-syntax-documentation-markup-keywords:#506375;--color-syntax-heading:#ba2da2;--color-syntax-highlighted:rgba(0,113,227,.2);--color-syntax-keywords:#ad3da4;--color-syntax-marks:#000;--color-syntax-numbers:#272ad8;--color-syntax-other-class-names:#703daa;--color-syntax-other-constants:#4b21b0;--color-syntax-other-declarations:#047cb0;--color-syntax-other-function-and-method-names:#4b21b0;--color-syntax-other-instance-variables-and-globals:#703daa;--color-syntax-other-preprocessor-macros:#78492a;--color-syntax-other-type-names:#703daa;--color-syntax-param-internal-name:#404040;--color-syntax-plain-text:#000;--color-syntax-preprocessor-statements:#78492a;--color-syntax-project-class-names:#3e8087;--color-syntax-project-constants:#2d6469;--color-syntax-project-function-and-method-names:#2d6469;--color-syntax-project-instance-variables-and-globals:#3e8087;--color-syntax-project-preprocessor-macros:#78492a;--color-syntax-project-type-names:#3e8087;--color-syntax-strings:#d12f1b;--color-syntax-type-declarations:#03638c;--color-syntax-urls:#1337ff;--color-tabnav-item-border-color:var(--color-fill-gray);--color-text:var(--color-figure-gray);--color-text-background:var(--color-fill);--color-tutorial-assessments-background:var(--color-fill-secondary);--color-tutorial-background:var(--color-fill);--color-tutorial-navbar-dropdown-background:var(--color-fill);--color-tutorial-navbar-dropdown-border:var(--color-fill-gray);--color-tutorial-quiz-border-active:var(--color-figure-blue);--color-tutorials-overview-background:#161616;--color-tutorials-overview-content:#fff;--color-tutorials-overview-content-alt:#fff;--color-tutorials-overview-eyebrow:#ccc;--color-tutorials-overview-icon:#b0b0b0;--color-tutorials-overview-link:#09f;--color-tutorials-overview-navigation-link:#ccc;--color-tutorials-overview-navigation-link-active:#fff;--color-tutorials-overview-navigation-link-hover:#fff;--color-tutorial-hero-text:#fff;--color-tutorial-hero-background:#000;--color-navigator-item-hover:rgba(0,0,255,.05);--color-card-background:var(--color-fill);--color-card-content-text:var(--color-figure-gray);--color-card-eyebrow:var(--color-figure-gray-secondary-alt);--color-card-shadow:rgba(0,0,0,.04);--color-link-block-card-border:rgba(0,0,0,.04);--color-standard-red:#ffc2c2;--color-standard-orange:#fc9;--color-standard-yellow:#ffe0a3;--color-standard-blue:#9cf;--color-standard-green:#9cc;--color-standard-purple:#ccf;--color-standard-gray:#f0f0f0;--color-fill:#000;--color-fill-secondary:#161616;--color-fill-tertiary:#2a2a2a;--color-fill-blue:#06f;--color-fill-light-blue-secondary:#004ec4;--color-fill-gray:#575757;--color-fill-gray-secondary:#222;--color-fill-gray-tertiary:#424242;--color-fill-gray-quaternary:#424242;--color-fill-green-secondary:#030;--color-fill-orange-secondary:#472400;--color-fill-red-secondary:#300;--color-figure-blue:#09f;--color-figure-gray:#fff;--color-figure-gray-secondary:#ccc;--color-figure-gray-secondary-alt:#b0b0b0;--color-figure-gray-tertiary:#b0b0b0;--color-figure-green:#090;--color-figure-light-gray:#b0b0b0;--color-figure-orange:#f60;--color-figure-red:#f33;--color-tutorials-teal:#fff;--color-article-body-background:#111;--color-badge-text:#000;--color-badge-default:var(--color-badge-dark-default);--color-button-background-active:#06f;--color-code-line-highlight:rgba(0,153,255,.08);--color-dropdown-background:var(--color-dropdown-dark-background);--color-dropdown-border:var(--color-dropdown-dark-border);--color-dropdown-option-text:var(--color-dropdown-dark-option-text);--color-dropdown-text:var(--color-dropdown-dark-text);--color-nav-color:var(--color-nav-dark-color);--color-nav-current-link:var(--color-nav-dark-current-link);--color-nav-expanded:var(--color-nav-dark-expanded);--color-nav-hierarchy-collapse-background:var(--color-nav-dark-hierarchy-collapse-background);--color-nav-hierarchy-collapse-borders:var(--color-nav-dark-hierarchy-collapse-borders);--color-nav-hierarchy-item-borders:var(--color-nav-dark-hierarchy-item-borders);--color-nav-keyline:var(--color-nav-dark-keyline);--color-nav-link-color:var(--color-nav-dark-link-color);--color-nav-link-color-hover:var(--color-nav-dark-link-color-hover);--color-nav-outlines:var(--color-nav-dark-outlines);--color-nav-rule:var(--color-nav-dark-rule);--color-nav-solid-background:var(--color-nav-dark-solid-background);--color-nav-sticking-expanded-keyline:var(--color-nav-dark-sticking-expanded-keyline);--color-nav-stuck:var(--color-nav-dark-stuck);--color-nav-uiblur-expanded:var(--color-nav-dark-uiblur-expanded);--color-nav-uiblur-stuck:var(--color-nav-dark-uiblur-stuck);--color-runtime-preview-disabled-text:hsla(0,0%,80%,.6);--color-syntax-attributes:#cc9768;--color-syntax-characters:#d9c97c;--color-syntax-comments:#7f8c98;--color-syntax-documentation-markup:#7f8c98;--color-syntax-documentation-markup-keywords:#a3b1bf;--color-syntax-highlighted:rgba(0,113,227,.6);--color-syntax-keywords:#ff7ab2;--color-syntax-marks:#fff;--color-syntax-numbers:#d9c97c;--color-syntax-other-class-names:#dabaff;--color-syntax-other-constants:#a7ebdd;--color-syntax-other-declarations:#4eb0cc;--color-syntax-other-function-and-method-names:#b281eb;--color-syntax-other-instance-variables-and-globals:#b281eb;--color-syntax-other-preprocessor-macros:#ffa14f;--color-syntax-other-type-names:#dabaff;--color-syntax-param-internal-name:#bfbfbf;--color-syntax-plain-text:#fff;--color-syntax-preprocessor-statements:#ffa14f;--color-syntax-project-class-names:#acf2e4;--color-syntax-project-constants:#78c2b3;--color-syntax-project-function-and-method-names:#78c2b3;--color-syntax-project-instance-variables-and-globals:#78c2b3;--color-syntax-project-preprocessor-macros:#ffa14f;--color-syntax-project-type-names:#acf2e4;--color-syntax-strings:#ff8170;--color-syntax-type-declarations:#6bdfff;--color-syntax-urls:#69f;--color-tutorial-background:var(--color-fill-tertiary);--color-navigator-item-hover:rgba(0,102,255,.5);--color-card-shadow:hsla(0,0%,100%,.04);--color-link-block-card-border:hsla(0,0%,100%,.25);--color-standard-red:#8b0000;--color-standard-orange:#8b4000;--color-standard-yellow:#8f7200;--color-standard-blue:#002d75;--color-standard-green:#023b2d;--color-standard-purple:#512b55;--color-standard-gray:#2a2a2a}}.copy-container[data-v-400ffab5]{margin:0 auto;text-align:center;width:720px}.title[data-v-400ffab5]{font-size:2.8235294118rem;line-height:1.0833333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content)}@media only screen and (max-width:1250px){.title[data-v-400ffab5]{font-size:2.3529411765rem;line-height:1.1;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-400ffab5]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-400ffab5]{font-size:1.2352941176rem;line-height:1.380952381;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content)}@media only screen and (max-width:735px){.content[data-v-400ffab5]{font-size:1.1176470588rem;line-height:1.4210526316;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.meta[data-v-400ffab5]{color:var(--color-tutorials-overview-content-alt);align-items:center;display:flex;justify-content:center}.meta-content[data-v-400ffab5]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.meta .timer-icon[data-v-400ffab5]{margin-right:.3529411765rem;height:16px;width:16px;fill:var(--color-tutorials-overview-icon)}@media only screen and (max-width:735px){.meta .timer-icon[data-v-400ffab5]{margin-right:.2941176471rem;height:.8235294118rem;width:.8235294118rem}}.meta .time[data-v-400ffab5]{font-size:1.1176470588rem;line-height:1.2105263158;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}@media only screen and (max-width:735px){.meta .time[data-v-400ffab5]{font-size:1rem;line-height:1.1176470588;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.title+.content[data-v-400ffab5]{margin-top:1.4705882353rem}.content+.meta[data-v-400ffab5]{margin-top:1.1764705882rem}.button-cta[data-v-400ffab5]{margin-top:1.7647058824rem}*+.asset[data-v-400ffab5]{margin-top:4.1176470588rem}@media only screen and (max-width:1250px){.copy-container[data-v-400ffab5]{width:636px}}@media only screen and (max-width:735px){.hero[data-v-400ffab5]{padding-bottom:1.7647058824rem;padding-top:2.3529411765rem}.copy-container[data-v-400ffab5]{width:100%}.title+.content[data-v-400ffab5]{margin-top:.8823529412rem}.button-cta[data-v-400ffab5]{margin-top:1.4117647059rem}*+.asset[data-v-400ffab5]{margin-top:2.2352941176rem}}.image[data-v-569db166]{margin-bottom:10px}.name[data-v-569db166]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-header-text,#f0f0f0);word-break:break-word}@media only screen and (max-width:1250px){.name[data-v-569db166]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.name[data-v-569db166]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-569db166]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content-alt);margin-top:10px}.volume-name[data-v-569db166]{padding:50px 60px;text-align:center;background:var(--color-tutorials-overview-fill-secondary,#161616);margin:2px 0}@media only screen and (max-width:735px){.volume-name[data-v-569db166]{padding:40px 20px}}.document-icon[data-v-3a80772b]{margin-left:-3px}.tile[data-v-74dbeb68]{background:var(--color-tutorials-overview-fill-secondary,#161616);padding:40px 30px;color:var(--color-tutorials-overview-content-alt)}.content[data-v-74dbeb68] a,a[data-v-74dbeb68]{color:var(--colors-link,var(--color-tutorials-overview-link))}.icon[data-v-74dbeb68]{display:block;height:1.4705882353rem;line-height:1.4705882353rem;margin-bottom:.5882352941rem;width:1.4705882353rem}.icon[data-v-74dbeb68] svg.svg-icon{width:100%;max-height:100%;fill:var(--color-tutorials-overview-icon)}.icon[data-v-74dbeb68] svg.svg-icon .svg-icon-stroke{stroke:var(--color-tutorials-overview-content-alt)}.title[data-v-74dbeb68]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;margin-bottom:.8em}.content[data-v-74dbeb68],.link[data-v-74dbeb68],.title[data-v-74dbeb68]{font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.content[data-v-74dbeb68],.link[data-v-74dbeb68]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400}.content[data-v-74dbeb68]{color:var(--color-tutorials-overview-content-alt)}.link[data-v-74dbeb68]{display:block;margin-top:1.1764705882rem}.link .link-icon[data-v-74dbeb68]{margin-left:.2em;width:.6em;height:.6em}[data-v-74dbeb68] .inline-link{text-decoration:none}[data-v-74dbeb68] .content ul{list-style-type:none;margin-left:0;font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}[data-v-74dbeb68] .content ul li:before{content:"";position:absolute}[data-v-74dbeb68] .content li+li{margin-top:8px}@media only screen and (max-width:735px){.tile[data-v-74dbeb68]{padding:1.7647058824rem 1.1764705882rem}}.tile-group[data-v-4cacce0a]{display:grid;grid-column-gap:2px;grid-row-gap:2px}.tile-group.count-1[data-v-4cacce0a]{grid-template-columns:1fr;text-align:center}.tile-group.count-1[data-v-4cacce0a] .icon{margin-left:auto;margin-right:auto}.tile-group.count-2[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr)}.tile-group.count-3[data-v-4cacce0a]{grid-template-columns:repeat(3,1fr)}.tile-group.count-4[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5[data-v-4cacce0a]{grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(2,auto)}.tile-group.count-5 .tile[data-v-4cacce0a]{grid-column-end:span 2}.tile-group.count-5 .tile[data-v-4cacce0a]:nth-of-type(-n+2){grid-column-end:span 3}.tile-group.count-6[data-v-4cacce0a]{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(3,auto)}@media only screen and (min-width:768px)and (max-width:1250px){.tile-group.tile-group[data-v-4cacce0a]{grid-template-columns:1fr;grid-template-rows:auto}}@media only screen and (max-width:735px){.tile-group.count-1[data-v-4cacce0a],.tile-group.count-2[data-v-4cacce0a],.tile-group.count-3[data-v-4cacce0a],.tile-group.count-4[data-v-4cacce0a],.tile-group.count-5[data-v-4cacce0a],.tile-group.count-6[data-v-4cacce0a]{grid-template-columns:1fr;grid-template-rows:auto}}.title[data-v-7f8022c1]{font-size:1.8823529412rem;line-height:1.125;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:#f0f0f0}@media only screen and (max-width:1250px){.title[data-v-7f8022c1]{font-size:1.6470588235rem;line-height:1.1428571429;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}@media only screen and (max-width:735px){.title[data-v-7f8022c1]{font-size:1.4117647059rem;line-height:1.1666666667;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.content[data-v-7f8022c1]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:#b0b0b0;margin-top:10px}.topic-list[data-v-0589dc3b]{list-style-type:none;margin:50px 0 0 0;position:relative}.topic-list li[data-v-0589dc3b]:before{content:"";position:absolute}.topic-list[data-v-0589dc3b]:before{content:"";border-left:1px solid var(--color-fill-quaternary);display:block;height:calc(100% - .88235rem);left:.8823529412rem;position:absolute;top:50%;transform:translateY(-50%);width:0}.topic[data-v-0589dc3b]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;align-items:flex-start}@media only screen and (max-width:735px){.topic[data-v-0589dc3b]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}}.topic+.topic[data-v-0589dc3b]{margin-top:.5882352941rem}.topic .topic-icon[data-v-0589dc3b]{background-color:var(--color-fill-quaternary);border-radius:50%;flex-shrink:0;height:1.7647058824rem;width:1.7647058824rem;margin-right:1.1764705882rem;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.4705882353rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.topic .topic-icon svg[data-v-0589dc3b]{fill:var(--color-tutorials-overview-icon);max-width:100%;max-height:100%;width:100%}.container[data-v-0589dc3b]{align-items:baseline;display:flex;justify-content:space-between;width:100%;padding-top:.1176470588rem}.container[data-v-0589dc3b]:hover{text-decoration:none}.container:hover .link[data-v-0589dc3b]{text-decoration:underline}.timer-icon[data-v-0589dc3b]{margin-right:.2941176471rem;height:.7058823529rem;width:.7058823529rem;fill:var(--color-tutorials-overview-icon)}.time[data-v-0589dc3b]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-content-alt);align-items:center;display:inline-flex}.link[data-v-0589dc3b]{padding-right:.5882352941rem;color:var(--colors-link,var(--color-tutorials-overview-link))}@media only screen and (min-width:768px)and (max-width:1250px){.topic-list[data-v-0589dc3b]{margin-top:2.3529411765rem}}@media only screen and (max-width:735px){.topic-list[data-v-0589dc3b]{margin-top:1.7647058824rem}.topic[data-v-0589dc3b]{height:auto;align-items:flex-start}.topic.no-time-estimate[data-v-0589dc3b]{align-items:center}.topic.no-time-estimate .topic-icon[data-v-0589dc3b]{align-self:flex-start;top:0}.topic+.topic[data-v-0589dc3b]{margin-top:1.1764705882rem}.topic .topic-icon[data-v-0589dc3b]{top:.2941176471rem;margin-right:.7647058824rem}.container[data-v-0589dc3b]{flex-wrap:wrap;padding-top:0}.link[data-v-0589dc3b],.time[data-v-0589dc3b]{flex-basis:100%}.time[data-v-0589dc3b]{margin-top:.2941176471rem}}.chapter[data-v-7468bc5e]:focus{outline:none!important}.info[data-v-7468bc5e]{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between}.name[data-v-7468bc5e]{font-size:1.2352941176rem;line-height:1.1904761905;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-tutorials-overview-header-text,#f0f0f0)}.name-text[data-v-7468bc5e]{word-break:break-word}.eyebrow[data-v-7468bc5e]{font-size:1rem;line-height:1.2352941176;font-weight:400;color:var(--color-tutorials-overview-eyebrow);display:block;font-weight:600;margin-bottom:5px}.content[data-v-7468bc5e],.eyebrow[data-v-7468bc5e]{font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.content[data-v-7468bc5e]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;color:var(--color-tutorials-overview-content-alt)}.asset[data-v-7468bc5e]{flex:0 0 190px}.intro[data-v-7468bc5e]{flex:0 1 360px}@media only screen and (min-width:768px)and (max-width:1250px){.asset[data-v-7468bc5e]{flex:0 0 130px}.intro[data-v-7468bc5e]{flex:0 1 260px}}@media only screen and (max-width:767px){.intro[data-v-7468bc5e]{flex:0 1 340px}}@media only screen and (max-width:735px){.info[data-v-7468bc5e]{display:block;text-align:center}.asset[data-v-7468bc5e]{margin:0 45px}.eyebrow[data-v-7468bc5e]{margin-bottom:7px}.intro[data-v-7468bc5e]{margin-top:40px}}.tile[data-v-540dbf10]{background:var(--color-tutorials-overview-fill-secondary,#161616);margin:2px 0;padding:50px 60px}.asset[data-v-540dbf10]{margin-bottom:10px}@media only screen and (min-width:768px)and (max-width:1250px){.tile[data-v-540dbf10]{padding:40px 30px}}@media only screen and (max-width:735px){.volume[data-v-540dbf10]{border-radius:0}.tile[data-v-540dbf10]{padding:40px 20px}}.learning-path[data-v-69a72bbc]{background:var(--color-tutorials-overview-fill,#000);padding:4.7058823529rem 0}.main-container[data-v-69a72bbc]{margin-left:auto;margin-right:auto;width:1536px;width:980px;align-items:stretch;display:flex;justify-content:space-between}@media only screen and (max-width:1250px){.main-container[data-v-69a72bbc]{width:692px}}@media only screen and (max-width:735px){.main-container[data-v-69a72bbc]{width:87.5%}}@media only screen and (max-width:320px){.main-container[data-v-69a72bbc]{width:215px}}.ide .main-container[data-v-69a72bbc]{justify-content:center}.secondary-content-container[data-v-69a72bbc]{flex:0 0 200px;width:200px}.tutorials-navigation[data-v-69a72bbc]{position:sticky;top:7.7647058824rem}.primary-content-container[data-v-69a72bbc]{flex:0 1 720px;max-width:100%}.content-sections-container .content-section[data-v-69a72bbc]{border-radius:12px;overflow:hidden}.content-sections-container .content-section+.content-section[data-v-69a72bbc]{margin-top:1.1764705882rem}@media only screen and (min-width:768px)and (max-width:1250px){.learning-path[data-v-69a72bbc]{padding:2.3529411765rem 0}.primary-content-container[data-v-69a72bbc]{flex-basis:auto;margin-left:1.2941176471rem}.secondary-content-container[data-v-69a72bbc]{flex:0 0 180px;width:180px}}@media only screen and (max-width:767px){.secondary-content-container[data-v-69a72bbc]{display:none}}@media only screen and (max-width:735px){.content-sections-container .content-section[data-v-69a72bbc]{border-radius:0}.content-sections-container .content-section.volume[data-v-69a72bbc]{margin-top:1.1764705882rem}.learning-path[data-v-69a72bbc]{padding:0}.main-container[data-v-69a72bbc]{width:100%}}.tutorials-overview[data-v-5381f0aa]{background:#000;flex:1;height:100%}.tutorials-overview .radial-gradient[data-v-5381f0aa]{margin-top:-3.0588235294rem;padding-top:3.0588235294rem;background:var(--color-tutorials-overview-fill-secondary,var(--color-tutorials-overview-background))}@media only screen and (max-width:735px){.tutorials-overview .radial-gradient[data-v-5381f0aa]{margin-top:-2.8235294118rem;padding-top:2.8235294118rem}}@-moz-document url-prefix(){.tutorials-overview .radial-gradient[data-v-5381f0aa]{background:#111!important}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview.json b/data/documentation/codeedittextview.json
new file mode 100644
index 000000000..611da52c5
--- /dev/null
+++ b/data/documentation/codeedittextview.json
@@ -0,0 +1 @@
+{"metadata":{"externalID":"CodeEditTextView","role":"collection","roleHeading":"Framework","symbolKind":"module","modules":[{"name":"CodeEditTextView"}],"title":"CodeEditTextView"},"primaryContentSections":[{"content":[{"type":"heading","anchor":"Overview","text":"Overview","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"A text editor specialized for displaying and editing code documents. Features include basic text editing, extremely fast initial layout, support for handling large documents, customization options for code documents."}]},{"style":"note","type":"aside","name":"Note","content":[{"inlineContent":[{"type":"text","text":"This package contains a text view suitable for replacing "},{"code":"NSTextView","type":"codeVoice"},{"text":" in some, ","type":"text"},{"type":"emphasis","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"specific"}]}]},{"text":" cases. If you want a text view that can handle things like: left-to-right layout, custom layout elements, or feature parity with the system text view, consider using ","type":"text"},{"type":"reference","identifier":"https:\/\/github.com\/krzyzanowskim\/STTextView","isActive":true},{"type":"text","text":" or "},{"type":"reference","isActive":true,"identifier":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextview"},{"text":". The ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"},{"type":"text","text":" exported by this library is designed to lay out documents made up of lines of text. However, it does not attempt to reason about the contents of the document. If you’re looking to edit "},{"type":"emphasis","inlineContent":[{"type":"text","text":"source code"}]},{"type":"text","text":" (indentation, syntax highlighting) consider using the parent library "},{"type":"reference","identifier":"https:\/\/github.com\/CodeEditApp\/CodeEditSourceEditor","isActive":true},{"type":"text","text":"."}],"type":"paragraph"}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"The "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","isActive":true},{"text":" class is an ","type":"text"},{"code":"NSView","type":"codeVoice"},{"text":" subclass that can be embedded in a scroll view or used standalone. It parses and renders lines of a document and handles mouse and keyboard events for text editing. It also renders styled strings for use cases like syntax highlighting.","type":"text"}]}],"kind":"content"}],"topicSections":[{"title":"Text View","anchor":"Text-View","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]},{"title":"Text Layout","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"],"anchor":"Text-Layout"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView"],"title":"Text Selection","anchor":"Text-Selection"},{"title":"Supporting Types","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"],"anchor":"Supporting-Types"},{"anchor":"Classes","title":"Classes","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"],"generated":true},{"title":"Protocols","anchor":"Protocols","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"],"generated":true},{"title":"Structures","generated":true,"anchor":"Structures","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges"]},{"anchor":"Enumerations","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction"],"title":"Enumerations"},{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"],"anchor":"Extended-Modules","title":"Extended Modules"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[[]]},"abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"https://github.com/CodeEditApp/CodeEditSourceEditor":{"type":"link","identifier":"https:\/\/github.com\/CodeEditApp\/CodeEditSourceEditor","titleInlineContent":[{"type":"text","text":"CodeEditSourceEditor"}],"url":"https:\/\/github.com\/CodeEditApp\/CodeEditSourceEditor","title":"CodeEditSourceEditor"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","role":"symbol","kind":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentManagerDelegate","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachmentManagerDelegate"}],"url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate","title":"TextAttachmentManagerDelegate","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragmentRenderer"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentRenderer"}],"abstract":[{"type":"text","text":"Manages drawing line fragments into a drawing context."}],"title":"LineFragmentRenderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MarkedRanges":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"MarkedRanges"}],"url":"\/documentation\/codeedittextview\/markedranges","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"MarkedRanges","kind":"identifier"}],"abstract":[{"type":"text","text":"Struct for passing attribute and range information easily down into line fragments, typesetters without"},{"type":"text","text":" "},{"type":"text","text":"requiring a reference to the marked text manager."}],"title":"MarkedRanges"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate":{"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"title":"TextSelectionManagerDelegate","abstract":[],"role":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]},"https://developer.apple.com/documentation/appkit/nstextview":{"type":"link","identifier":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextview","titleInlineContent":[{"type":"text","text":"NSTextView"}],"url":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextview","title":"NSTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit":{"title":"AppKit","url":"\/documentation\/codeedittextview\/appkit","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit","type":"topic","role":"collection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","title":"Typesetter","type":"topic","navigatorTitle":[{"text":"Typesetter","kind":"identifier"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Typesetter"}],"url":"\/documentation\/codeedittextview\/typesetter","abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Typesetter"},{"text":" is responsible for producing text fragments from a document range. It transforms a text line","type":"text"},{"type":"text","text":" "},{"type":"text","text":"and attachments into a sequence of "},{"code":"LineFragment","type":"codeVoice"},{"type":"text","text":"s, which reflect the visual structure of the text line."}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation":{"role":"collection","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation","abstract":[],"title":"CoreFoundation","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate":{"kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"MultiStorageDelegate"}],"title":"MultiStorageDelegate","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate","url":"\/documentation\/codeedittextview\/multistoragedelegate","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"MultiStorageDelegate"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction":{"title":"TextAttachmentAction","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","navigatorTitle":[{"text":"TextAttachmentAction","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"https://github.com/krzyzanowskim/STTextView":{"type":"link","identifier":"https:\/\/github.com\/krzyzanowskim\/STTextView","titleInlineContent":[{"type":"text","text":"STTextView"}],"url":"https:\/\/github.com\/krzyzanowskim\/STTextView","title":"STTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","navigatorTitle":[{"text":"InvisibleCharacterStyle","kind":"identifier"}],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/anytextattachment.json b/data/documentation/codeedittextview/anytextattachment.json
new file mode 100644
index 000000000..a7bb8174d
--- /dev/null
+++ b/data/documentation/codeedittextview/anytextattachment.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"text":"AnyTextAttachment","kind":"identifier"}],"symbolKind":"struct","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"AnyTextAttachment"}],"externalID":"s:16CodeEditTextView03AnyC10AttachmentV","roleHeading":"Structure","title":"AnyTextAttachment"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"AnyTextAttachment"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"content","content":[{"level":2,"text":"Overview","type":"heading","anchor":"overview"},{"inlineContent":[{"text":"This type cannot be initialized outside of ","type":"text"},{"code":"CodeEditTextView","type":"codeVoice"},{"text":", but will be received when interrogating","type":"text"},{"text":" ","type":"text"},{"text":"the ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","isActive":true,"type":"reference"},{"text":".","type":"text"}],"type":"paragraph"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"relationshipsSections":[{"title":"Conforms To","kind":"relationships","type":"conformsTo","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ"]}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/==(_:_:)"],"title":"Operators","generated":true,"anchor":"Operators"},{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/attachment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/range"],"title":"Instance Properties","anchor":"Instance-Properties"},{"anchor":"Default-Implementations","title":"Default Implementations","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/Equatable-Implementations"]}],"abstract":[{"type":"text","text":"Type-erasing type for "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","isActive":true,"type":"reference"},{"type":"text","text":" that also contains range information about the attachment."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/anytextattachment"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/SQ":{"title":"Swift.Equatable","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/attachment":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment\/attachment","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"attachment"},{"kind":"text","text":": "},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"TextAttachment","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/attachment","title":"attachment","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/range":{"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"range","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/range","url":"\/documentation\/codeedittextview\/anytextattachment\/range","kind":"symbol","title":"range"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/Equatable-Implementations":{"type":"topic","kind":"article","role":"collectionGroup","url":"\/documentation\/codeedittextview\/anytextattachment\/equatable-implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/Equatable-Implementations","title":"Equatable Implementations","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/==(_:_:)":{"type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment\/==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"=="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"kind":"text","text":", "},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/==(_:_:)","abstract":[],"kind":"symbol","title":"==(_:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/anytextattachment/!=(_:_:).json b/data/documentation/codeedittextview/anytextattachment/!=(_:_:).json
new file mode 100644
index 000000000..e5805978a
--- /dev/null
+++ b/data/documentation/codeedittextview/anytextattachment/!=(_:_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/!=(_:_:)","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/anytextattachment\/!=(_:_:)"]}],"metadata":{"title":"!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView03AnyC10AttachmentV","role":"symbol","roleHeading":"Operator","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"op"},"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/!=(_:_:)":{"title":"!=(_:_:)","kind":"symbol","abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/anytextattachment\/!=(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/anytextattachment/==(_:_:).json b/data/documentation/codeedittextview/anytextattachment/==(_:_:).json
new file mode 100644
index 000000000..b8988c1d0
--- /dev/null
+++ b/data/documentation/codeedittextview/anytextattachment/==(_:_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/anytextattachment\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"AnyTextAttachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"rhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/==(_:_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"]]},"kind":"symbol","metadata":{"title":"==(_:_:)","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":", ","kind":"text"},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"roleHeading":"Operator","symbolKind":"op","externalID":"s:16CodeEditTextView03AnyC10AttachmentV2eeoiySbAC_ACtFZ","role":"symbol"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Equatable.==(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/==(_:_:)":{"type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment\/==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"=="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"kind":"text","text":", "},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/==(_:_:)","abstract":[],"kind":"symbol","title":"==(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/anytextattachment/attachment.json b/data/documentation/codeedittextview/anytextattachment/attachment.json
new file mode 100644
index 000000000..a0b6ec11e
--- /dev/null
+++ b/data/documentation/codeedittextview/anytextattachment/attachment.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/anytextattachment\/attachment"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/attachment","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"]]},"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"attachment","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"keyword","text":"any"},{"kind":"text","text":" "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","text":"TextAttachment"}],"externalID":"s:16CodeEditTextView03AnyC10AttachmentV10attachmentAA0cF0_pvp","role":"symbol","title":"attachment","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"attachment","kind":"identifier"},{"text":": ","kind":"text"},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","text":"TextAttachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","kind":"typeIdentifier"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/attachment":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment\/attachment","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"attachment"},{"kind":"text","text":": "},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"TextAttachment","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/attachment","title":"attachment","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/anytextattachment/equatable-implementations.json b/data/documentation/codeedittextview/anytextattachment/equatable-implementations.json
new file mode 100644
index 000000000..11548dace
--- /dev/null
+++ b/data/documentation/codeedittextview/anytextattachment/equatable-implementations.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"]]},"sections":[],"metadata":{"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"variants":[{"paths":["\/documentation\/codeedittextview\/anytextattachment\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/Equatable-Implementations"},"kind":"article","topicSections":[{"generated":true,"title":"Operators","anchor":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/!=(_:_:)"]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/!=(_:_:)":{"title":"!=(_:_:)","kind":"symbol","abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/anytextattachment\/!=(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/anytextattachment/range.json b/data/documentation/codeedittextview/anytextattachment/range.json
new file mode 100644
index 000000000..5077ae08b
--- /dev/null
+++ b/data/documentation/codeedittextview/anytextattachment/range.json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/range"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/anytextattachment\/range"]}],"metadata":{"externalID":"s:16CodeEditTextView03AnyC10AttachmentV5rangeSo8_NSRangeVvp","roleHeading":"Instance Property","symbolKind":"property","role":"symbol","title":"range","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"}]},"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":" { get }","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment/range":{"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"range","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment\/range","url":"\/documentation\/codeedittextview\/anytextattachment\/range","kind":"symbol","title":"range"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/appkit.json b/data/documentation/codeedittextview/appkit.json
new file mode 100644
index 000000000..1fb1a2593
--- /dev/null
+++ b/data/documentation/codeedittextview/appkit.json
@@ -0,0 +1 @@
+{"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"metadata":{"role":"collection","modules":[{"name":"CodeEditTextView"}],"externalID":"s:m:s:e:s:So12NSBezierPathC16CodeEditTextViewE02cgB8FallbackSo9CGPathRefavp","roleHeading":"Extended Module","symbolKind":"extension","title":"AppKit"},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath"],"title":"Extended Classes","generated":true,"anchor":"Extended-Classes"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/appkit"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit/NSBezierPath":{"fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSBezierPath","kind":"identifier","preciseIdentifier":"c:objc(cs)NSBezierPath"}],"title":"NSBezierPath","url":"\/documentation\/codeedittextview\/appkit\/nsbezierpath","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath","type":"topic","role":"symbol","navigatorTitle":[{"text":"NSBezierPath","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit":{"title":"AppKit","url":"\/documentation\/codeedittextview\/appkit","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit","type":"topic","role":"collection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/appkit/nsbezierpath.json b/data/documentation/codeedittextview/appkit/nsbezierpath.json
new file mode 100644
index 000000000..6cb66c508
--- /dev/null
+++ b/data/documentation/codeedittextview/appkit/nsbezierpath.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"NSBezierPath","preciseIdentifier":"c:objc(cs)NSBezierPath"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/appkit\/nsbezierpath"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit"]]},"sections":[],"metadata":{"externalID":"s:e:s:So12NSBezierPathC16CodeEditTextViewE02cgB8FallbackSo9CGPathRefavp","modules":[{"name":"CodeEditTextView","relatedModules":["AppKit"]}],"symbolKind":"extension","extendedModule":"AppKit","title":"NSBezierPath","fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"NSBezierPath","preciseIdentifier":"c:objc(cs)NSBezierPath"}],"navigatorTitle":[{"text":"NSBezierPath","kind":"identifier"}],"roleHeading":"Extended Class","role":"symbol"},"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"topicSections":[{"anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath\/cgPathFallback"],"title":"Instance Properties","generated":true}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit":{"title":"AppKit","url":"\/documentation\/codeedittextview\/appkit","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit","type":"topic","role":"collection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit/NSBezierPath/cgPathFallback":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath\/cgPathFallback","title":"cgPathFallback","type":"topic","abstract":[{"type":"text","text":"Converts the "},{"code":"NSBezierPath","type":"codeVoice"},{"text":" instance into a ","type":"text"},{"code":"CGPath","type":"codeVoice"},{"type":"text","text":", providing a fallback method for compatibility(macOS < 14)."}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"cgPathFallback","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGPath","kind":"typeIdentifier","preciseIdentifier":"c:@T@CGPathRef"}],"role":"symbol","url":"\/documentation\/codeedittextview\/appkit\/nsbezierpath\/cgpathfallback"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit/NSBezierPath":{"fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSBezierPath","kind":"identifier","preciseIdentifier":"c:objc(cs)NSBezierPath"}],"title":"NSBezierPath","url":"\/documentation\/codeedittextview\/appkit\/nsbezierpath","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath","type":"topic","role":"symbol","navigatorTitle":[{"text":"NSBezierPath","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/appkit/nsbezierpath/cgpathfallback.json b/data/documentation/codeedittextview/appkit/nsbezierpath/cgpathfallback.json
new file mode 100644
index 000000000..3738203d5
--- /dev/null
+++ b/data/documentation/codeedittextview/appkit/nsbezierpath/cgpathfallback.json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath\/cgPathFallback","interfaceLanguage":"swift"},"metadata":{"role":"symbol","roleHeading":"Instance Property","symbolKind":"property","modules":[{"relatedModules":["AppKit"],"name":"CodeEditTextView"}],"externalID":"s:So12NSBezierPathC16CodeEditTextViewE02cgB8FallbackSo9CGPathRefavp","title":"cgPathFallback","extendedModule":"AppKit","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"cgPathFallback","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@CGPathRef","text":"CGPath","kind":"typeIdentifier"}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"type":"text","text":"Converts the "},{"type":"codeVoice","code":"NSBezierPath"},{"text":" instance into a ","type":"text"},{"type":"codeVoice","code":"CGPath"},{"text":", providing a fallback method for compatibility(macOS < 14).","type":"text"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"cgPathFallback","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGPath","kind":"typeIdentifier","preciseIdentifier":"c:@T@CGPathRef"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/appkit\/nsbezierpath\/cgpathfallback"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit":{"title":"AppKit","url":"\/documentation\/codeedittextview\/appkit","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit","type":"topic","role":"collection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit/NSBezierPath/cgPathFallback":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath\/cgPathFallback","title":"cgPathFallback","type":"topic","abstract":[{"type":"text","text":"Converts the "},{"code":"NSBezierPath","type":"codeVoice"},{"text":" instance into a ","type":"text"},{"code":"CGPath","type":"codeVoice"},{"type":"text","text":", providing a fallback method for compatibility(macOS < 14)."}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"cgPathFallback","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGPath","kind":"typeIdentifier","preciseIdentifier":"c:@T@CGPathRef"}],"role":"symbol","url":"\/documentation\/codeedittextview\/appkit\/nsbezierpath\/cgpathfallback"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AppKit/NSBezierPath":{"fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSBezierPath","kind":"identifier","preciseIdentifier":"c:objc(cs)NSBezierPath"}],"title":"NSBezierPath","url":"\/documentation\/codeedittextview\/appkit\/nsbezierpath","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AppKit\/NSBezierPath","type":"topic","role":"symbol","navigatorTitle":[{"text":"NSBezierPath","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager.json b/data/documentation/codeedittextview/ceundomanager.json
new file mode 100644
index 000000000..02e284b25
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager.json
@@ -0,0 +1 @@
+{"relationshipsSections":[{"title":"Inherits From","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSUndoManager"],"kind":"relationships","type":"inheritsFrom"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"type":"conformsTo","kind":"relationships","title":"Conforms To"}],"seeAlsoSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"],"title":"Text View","anchor":"Text-View","generated":true}],"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"text":"CEUndoManager","kind":"identifier"}]}]},{"kind":"content","content":[{"level":2,"text":"Overview","anchor":"overview","type":"heading"},{"inlineContent":[{"text":"This object also groups edits into sequences that make for a better undo\/redo editing experience such as:","type":"text"}],"type":"paragraph"},{"items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Breaking undo groups on newlines"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Grouping pasted text","type":"text"}]}]}],"type":"unorderedList"},{"type":"paragraph","inlineContent":[{"type":"text","text":"If needed, the automatic undo grouping can be overridden using the "},{"code":"beginGrouping()","type":"codeVoice"},{"text":" and ","type":"text"},{"code":"endGrouping()","type":"codeVoice"},{"text":" methods.","type":"text"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"topicSections":[{"title":"Initializers","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/init()"],"anchor":"Initializers"},{"anchor":"Instance-Properties","title":"Instance Properties","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canRedo","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canUndo","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isGrouping","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isRedoing","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isUndoing","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redoCount","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undoCount"]},{"anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/beginUndoGrouping()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/clearStack()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/disable()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/enable()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/endUndoGrouping()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redo()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerMutation(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerUndo(withTarget:selector:object:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undo()"],"generated":true,"title":"Instance Methods"}],"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"role":"symbol","roleHeading":"Class","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"CEUndoManager","kind":"identifier"}],"title":"CEUndoManager","externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager","symbolKind":"class"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/undoCount":{"url":"\/documentation\/codeedittextview\/ceundomanager\/undocount","title":"undoCount","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undoCount","kind":"symbol","abstract":[],"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"undoCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/isUndoing":{"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isUndoing"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"abstract":[],"title":"isUndoing","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isUndoing","url":"\/documentation\/codeedittextview\/ceundomanager\/isundoing","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(cs)NSUndoManager":{"title":"Foundation.UndoManager","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSUndoManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/clearStack()":{"abstract":[{"text":"Clears the undo\/redo stacks.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/clearStack()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/clearstack()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"clearStack"},{"text":"()","kind":"text"}],"title":"clearStack()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/redoCount":{"abstract":[],"title":"redoCount","url":"\/documentation\/codeedittextview\/ceundomanager\/redocount","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"redoCount","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redoCount","type":"topic"},"doc://codeedittextview.CodeEditTextView/s28CustomDebugStringConvertibleP":{"title":"Swift.CustomDebugStringConvertible","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP"},"doc://codeedittextview.CodeEditTextView/s7CVarArgP":{"title":"Swift.CVarArg","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/registerUndo(withTarget:selector:object:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerUndo(withTarget:selector:object:)","url":"\/documentation\/codeedittextview\/ceundomanager\/registerundo(withtarget:selector:object:)","title":"registerUndo(withTarget:selector:object:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"registerUndo"},{"kind":"text","text":"("},{"kind":"externalParam","text":"withTarget"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":", ","kind":"text"},{"text":"selector","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10ObjectiveC8SelectorV","text":"Selector"},{"kind":"text","text":", "},{"text":"object","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/s23CustomStringConvertibleP":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","title":"Swift.CustomStringConvertible"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/redo()":{"abstract":[{"type":"text","text":"Performs a redo operation if there is one available."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redo()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"redo"},{"text":"()","kind":"text"}],"kind":"symbol","title":"redo()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/redo()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/isRedoing":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isRedoing","url":"\/documentation\/codeedittextview\/ceundomanager\/isredoing","title":"isRedoing","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isRedoing","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/canRedo":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/canredo","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"canRedo","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"canRedo","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canRedo","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/undo()":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"undo","kind":"identifier"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/ceundomanager\/undo()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undo()","type":"topic","abstract":[{"text":"Performs an undo operation if there is one available.","type":"text"}],"title":"undo()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/init()":{"title":"init()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/init()","fragments":[{"kind":"identifier","text":"init"},{"text":"()","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/init()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/canUndo":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canUndo","type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/canundo","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"canUndo"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"canUndo"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/endUndoGrouping()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/endUndoGrouping()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"endUndoGrouping","kind":"identifier"},{"text":"()","kind":"text"}],"role":"symbol","title":"endUndoGrouping()","kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/endundogrouping()","abstract":[{"type":"text","text":"Stops grouping all incoming mutations."}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/beginUndoGrouping()":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/beginundogrouping()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"beginUndoGrouping","kind":"identifier"},{"text":"()","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/beginUndoGrouping()","title":"beginUndoGrouping()","abstract":[{"type":"text","text":"Groups all incoming mutations."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/registerMutation(_:)":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"registerMutation","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:9TextStory0A8MutationV","text":"TextMutation"},{"text":")","kind":"text"}],"abstract":[{"type":"text","text":"Registers a mutation into the undo stack."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerMutation(_:)","kind":"symbol","type":"topic","title":"registerMutation(_:)","url":"\/documentation\/codeedittextview\/ceundomanager\/registermutation(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/isGrouping":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isGrouping","url":"\/documentation\/codeedittextview\/ceundomanager\/isgrouping","role":"symbol","abstract":[],"kind":"symbol","title":"isGrouping","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isGrouping","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/SQ":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","title":"Swift.Equatable"},"doc://codeedittextview.CodeEditTextView/SH":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","title":"Swift.Hashable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSObject":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","title":"ObjectiveC.NSObjectProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/disable()":{"abstract":[{"text":"Sets the undo manager to ignore incoming mutations until the matching ","type":"text"},{"type":"codeVoice","code":"enable"},{"text":" method is called.","type":"text"},{"text":" ","type":"text"},{"text":"Cannot be nested.","type":"text"}],"title":"disable()","url":"\/documentation\/codeedittextview\/ceundomanager\/disable()","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/disable()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"disable","kind":"identifier"},{"kind":"text","text":"()"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/enable()":{"url":"\/documentation\/codeedittextview\/ceundomanager\/enable()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/enable()","kind":"symbol","type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"enable","kind":"identifier"},{"kind":"text","text":"()"}],"title":"enable()","abstract":[{"text":"Sets the undo manager to begin receiving incoming mutations after a call to ","type":"text"},{"code":"disable","type":"codeVoice"},{"type":"text","text":" "},{"type":"text","text":"Cannot be nested."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/beginundogrouping().json b/data/documentation/codeedittextview/ceundomanager/beginundogrouping().json
new file mode 100644
index 000000000..92dfe9bd5
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/beginundogrouping().json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"beginUndoGrouping","kind":"identifier"},{"kind":"text","text":"()"}],"externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(im)beginUndoGrouping","role":"symbol","title":"beginUndoGrouping()","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"beginUndoGrouping","kind":"identifier"},{"text":"()","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/beginundogrouping()"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/beginUndoGrouping()","interfaceLanguage":"swift"},"sections":[],"abstract":[{"type":"text","text":"Groups all incoming mutations."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/beginUndoGrouping()":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/beginundogrouping()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"beginUndoGrouping","kind":"identifier"},{"text":"()","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/beginUndoGrouping()","title":"beginUndoGrouping()","abstract":[{"type":"text","text":"Groups all incoming mutations."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/canredo.json b/data/documentation/codeedittextview/ceundomanager/canredo.json
new file mode 100644
index 000000000..ccce41a6d
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/canredo.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(py)canRedo","role":"symbol","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"canRedo"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"symbolKind":"property","title":"canRedo"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"canRedo","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/canredo"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canRedo","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/canRedo":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/canredo","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"canRedo","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"canRedo","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canRedo","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/canundo.json b/data/documentation/codeedittextview/ceundomanager/canundo.json
new file mode 100644
index 000000000..3b9e2306d
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/canundo.json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canUndo"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"metadata":{"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"canUndo"},{"kind":"text","text":": "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(py)canUndo","roleHeading":"Instance Property","title":"canUndo","symbolKind":"property"},"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/canundo"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"canUndo"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/canUndo":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/canUndo","type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/canundo","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"canUndo"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"canUndo"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/clearstack().json b/data/documentation/codeedittextview/ceundomanager/clearstack().json
new file mode 100644
index 000000000..0cfccec7a
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/clearstack().json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"clearStack"},{"text":"()","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView13CEUndoManagerC10clearStackyyF","title":"clearStack()"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/clearStack()"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/clearstack()"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"clearStack","kind":"identifier"},{"text":"()","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"type":"text","text":"Clears the undo\/redo stacks."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/clearStack()":{"abstract":[{"text":"Clears the undo\/redo stacks.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/clearStack()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/clearstack()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"clearStack"},{"text":"()","kind":"text"}],"title":"clearStack()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/disable().json b/data/documentation/codeedittextview/ceundomanager/disable().json
new file mode 100644
index 000000000..58d7810c3
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/disable().json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"type":"text","text":"Sets the undo manager to ignore incoming mutations until the matching "},{"code":"enable","type":"codeVoice"},{"text":" method is called.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"Cannot be nested."}],"metadata":{"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"disable","kind":"identifier"},{"kind":"text","text":"()"}],"externalID":"s:16CodeEditTextView13CEUndoManagerC7disableyyF","title":"disable()","role":"symbol","symbolKind":"method"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"disable","kind":"identifier"},{"text":"()","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/disable()"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/disable()","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/disable()":{"abstract":[{"text":"Sets the undo manager to ignore incoming mutations until the matching ","type":"text"},{"type":"codeVoice","code":"enable"},{"text":" method is called.","type":"text"},{"text":" ","type":"text"},{"text":"Cannot be nested.","type":"text"}],"title":"disable()","url":"\/documentation\/codeedittextview\/ceundomanager\/disable()","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/disable()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"disable","kind":"identifier"},{"kind":"text","text":"()"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/enable().json b/data/documentation/codeedittextview/ceundomanager/enable().json
new file mode 100644
index 000000000..e30942790
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/enable().json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/enable()","interfaceLanguage":"swift"},"sections":[],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","externalID":"s:16CodeEditTextView13CEUndoManagerC6enableyyF","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"enable"},{"kind":"text","text":"()"}],"modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"enable()"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enable"},{"kind":"text","text":"()"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/enable()"]}],"abstract":[{"type":"text","text":"Sets the undo manager to begin receiving incoming mutations after a call to "},{"type":"codeVoice","code":"disable"},{"text":" ","type":"text"},{"text":"Cannot be nested.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/enable()":{"url":"\/documentation\/codeedittextview\/ceundomanager\/enable()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/enable()","kind":"symbol","type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"enable","kind":"identifier"},{"kind":"text","text":"()"}],"title":"enable()","abstract":[{"text":"Sets the undo manager to begin receiving incoming mutations after a call to ","type":"text"},{"code":"disable","type":"codeVoice"},{"type":"text","text":" "},{"type":"text","text":"Cannot be nested."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/endundogrouping().json b/data/documentation/codeedittextview/ceundomanager/endundogrouping().json
new file mode 100644
index 000000000..9ce7f3af9
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/endundogrouping().json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","symbolKind":"method","role":"symbol","title":"endUndoGrouping()","externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(im)endUndoGrouping","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"endUndoGrouping"},{"kind":"text","text":"()"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/endUndoGrouping()"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"endUndoGrouping"},{"kind":"text","text":"()"}]}]}],"sections":[],"abstract":[{"type":"text","text":"Stops grouping all incoming mutations."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/endundogrouping()"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/endUndoGrouping()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/endUndoGrouping()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"endUndoGrouping","kind":"identifier"},{"text":"()","kind":"text"}],"role":"symbol","title":"endUndoGrouping()","kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/endundogrouping()","abstract":[{"type":"text","text":"Stops grouping all incoming mutations."}],"type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/init().json b/data/documentation/codeedittextview/ceundomanager/init().json
new file mode 100644
index 000000000..7d8c643c9
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/init().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/init()"]}],"metadata":{"title":"init()","symbolKind":"init","fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Initializer","externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(im)init"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"init","kind":"keyword"},{"kind":"text","text":"()"}],"platforms":["macOS"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/init()","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/init()":{"title":"init()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/init()","fragments":[{"kind":"identifier","text":"init"},{"text":"()","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/init()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/isgrouping.json b/data/documentation/codeedittextview/ceundomanager/isgrouping.json
new file mode 100644
index 000000000..9623d1ad8
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/isgrouping.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/isgrouping"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"isGrouping","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":" { get }","kind":"text"}]}]}],"metadata":{"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isGrouping","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"externalID":"s:16CodeEditTextView13CEUndoManagerC10isGroupingSbvp","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","title":"isGrouping","symbolKind":"property"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isGrouping","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/isGrouping":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isGrouping","url":"\/documentation\/codeedittextview\/ceundomanager\/isgrouping","role":"symbol","abstract":[],"kind":"symbol","title":"isGrouping","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isGrouping","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/isredoing.json b/data/documentation/codeedittextview/ceundomanager/isredoing.json
new file mode 100644
index 000000000..6974c88fa
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/isredoing.json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isRedoing","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isRedoing","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"]}]}],"metadata":{"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isRedoing","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"title":"isRedoing","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","role":"symbol","externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(py)redoing"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/isredoing"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/isRedoing":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isRedoing","url":"\/documentation\/codeedittextview\/ceundomanager\/isredoing","title":"isRedoing","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isRedoing","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/isundoing.json b/data/documentation/codeedittextview/ceundomanager/isundoing.json
new file mode 100644
index 000000000..1397342cf
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/isundoing.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/isundoing"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"isUndoing","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isUndoing"},"metadata":{"title":"isUndoing","symbolKind":"property","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"role":"symbol","externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(py)undoing","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isUndoing"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/isUndoing":{"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isUndoing"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"abstract":[],"title":"isUndoing","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/isUndoing","url":"\/documentation\/codeedittextview\/ceundomanager\/isundoing","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/redo().json b/data/documentation/codeedittextview/ceundomanager/redo().json
new file mode 100644
index 000000000..3154456d8
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/redo().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/redo()"]}],"metadata":{"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"redo","kind":"identifier"},{"text":"()","kind":"text"}],"externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(im)redo","role":"symbol","title":"redo()","symbolKind":"method"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"redo","kind":"identifier"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redo()"},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"kind":"symbol","abstract":[{"type":"text","text":"Performs a redo operation if there is one available."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/redo()":{"abstract":[{"type":"text","text":"Performs a redo operation if there is one available."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redo()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"redo"},{"text":"()","kind":"text"}],"kind":"symbol","title":"redo()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager\/redo()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/redocount.json b/data/documentation/codeedittextview/ceundomanager/redocount.json
new file mode 100644
index 000000000..8d647d28c
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/redocount.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"redoCount","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/redocount"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redoCount","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"redoCount","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"redoCount","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(py)redoCount","roleHeading":"Instance Property","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"sections":[],"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/redoCount":{"abstract":[],"title":"redoCount","url":"\/documentation\/codeedittextview\/ceundomanager\/redocount","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"redoCount","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/redoCount","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/registermutation(_:).json b/data/documentation/codeedittextview/ceundomanager/registermutation(_:).json
new file mode 100644
index 000000000..10275b463
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/registermutation(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"registerMutation","kind":"identifier"},{"kind":"text","text":"("},{"text":"TextMutation","kind":"typeIdentifier","preciseIdentifier":"s:9TextStory0A8MutationV"},{"kind":"text","text":")"}],"title":"registerMutation(_:)","symbolKind":"method","externalID":"s:16CodeEditTextView13CEUndoManagerC16registerMutationyy0C5Story0cH0VF","roleHeading":"Instance Method"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerMutation(_:)"},"kind":"symbol","abstract":[{"type":"text","text":"Registers a mutation into the undo stack."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"registerMutation"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"mutation","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:9TextStory0A8MutationV","text":"TextMutation","kind":"typeIdentifier"},{"text":")","kind":"text"}]}]},{"parameters":[{"name":"mutation","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The mutation to register for undo\/redo"}]}]}],"kind":"parameters"},{"content":[{"text":"Discussion","anchor":"discussion","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"text":"Calling this method while the manager is in an undo\/redo operation will result in a no-op.","type":"text"}]}],"kind":"content"}],"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/registermutation(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/registerMutation(_:)":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"registerMutation","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:9TextStory0A8MutationV","text":"TextMutation"},{"text":")","kind":"text"}],"abstract":[{"type":"text","text":"Registers a mutation into the undo stack."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerMutation(_:)","kind":"symbol","type":"topic","title":"registerMutation(_:)","url":"\/documentation\/codeedittextview\/ceundomanager\/registermutation(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/registerundo(withtarget:selector:object:).json b/data/documentation/codeedittextview/ceundomanager/registerundo(withtarget:selector:object:).json
new file mode 100644
index 000000000..2a7aeb933
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/registerundo(withtarget:selector:object:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"registerUndo","kind":"identifier"},{"kind":"text","text":"("},{"text":"withTarget","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":", "},{"text":"selector","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10ObjectiveC8SelectorV","kind":"typeIdentifier","text":"Selector"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"object"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(im)registerUndoWithTarget:selector:object:","role":"symbol","title":"registerUndo(withTarget:selector:object:)","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"registerUndo","kind":"identifier"},{"text":"(","kind":"text"},{"text":"withTarget","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"target"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":", "},{"kind":"externalParam","text":"selector"},{"kind":"text","text":": "},{"text":"Selector","kind":"typeIdentifier","preciseIdentifier":"s:10ObjectiveC8SelectorV"},{"kind":"text","text":", "},{"text":"object","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"anObject"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/ceundomanager\/registerundo(withtarget:selector:object:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerUndo(withTarget:selector:object:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/registerUndo(withTarget:selector:object:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/registerUndo(withTarget:selector:object:)","url":"\/documentation\/codeedittextview\/ceundomanager\/registerundo(withtarget:selector:object:)","title":"registerUndo(withTarget:selector:object:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"registerUndo"},{"kind":"text","text":"("},{"kind":"externalParam","text":"withTarget"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":", ","kind":"text"},{"text":"selector","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10ObjectiveC8SelectorV","text":"Selector"},{"kind":"text","text":", "},{"text":"object","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/undo().json b/data/documentation/codeedittextview/ceundomanager/undo().json
new file mode 100644
index 000000000..0d51cdd0e
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/undo().json
@@ -0,0 +1 @@
+{"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"undo","kind":"identifier"},{"text":"()","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(im)undo","title":"undo()","roleHeading":"Instance Method","role":"symbol"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/undo()"]}],"abstract":[{"text":"Performs an undo operation if there is one available.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"undo","kind":"identifier"},{"text":"()","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undo()","interfaceLanguage":"swift"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/undo()":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"undo","kind":"identifier"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/ceundomanager\/undo()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undo()","type":"topic","abstract":[{"text":"Performs an undo operation if there is one available.","type":"text"}],"title":"undo()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/ceundomanager/undocount.json b/data/documentation/codeedittextview/ceundomanager/undocount.json
new file mode 100644
index 000000000..83a93903a
--- /dev/null
+++ b/data/documentation/codeedittextview/ceundomanager/undocount.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undoCount","interfaceLanguage":"swift"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","metadata":{"title":"undoCount","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)CEUndoManager(py)undoCount","symbolKind":"property","role":"symbol","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"undoCount"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"undoCount","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/ceundomanager\/undocount"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager/undoCount":{"url":"\/documentation\/codeedittextview\/ceundomanager\/undocount","title":"undoCount","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager\/undoCount","kind":"symbol","abstract":[],"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"undoCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/corefoundation.json b/data/documentation/codeedittextview/corefoundation.json
new file mode 100644
index 000000000..55c1c6ad9
--- /dev/null
+++ b/data/documentation/codeedittextview/corefoundation.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"symbolKind":"extension","role":"collection","title":"CoreFoundation","externalID":"s:m:s:e:s:So6CGRectV16CodeEditTextViewE12pixelAlignedABvp","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Extended Module"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/corefoundation"]}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect"],"anchor":"Extended-Structures","generated":true,"title":"Extended Structures"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation":{"role":"collection","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation","abstract":[],"title":"CoreFoundation","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGPoint":{"url":"\/documentation\/codeedittextview\/corefoundation\/cgpoint","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint","kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"text":"CGPoint","kind":"identifier"}],"role":"symbol","fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"}],"title":"CGPoint"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGRect":{"role":"symbol","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation\/cgrect","abstract":[],"navigatorTitle":[{"text":"CGRect","kind":"identifier"}],"fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}],"title":"CGRect","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/corefoundation/cgpoint.json b/data/documentation/codeedittextview/corefoundation/cgpoint.json
new file mode 100644
index 000000000..a1a4a21db
--- /dev/null
+++ b/data/documentation/codeedittextview/corefoundation/cgpoint.json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"extension","roleHeading":"Extended Structure","navigatorTitle":[{"text":"CGPoint","kind":"identifier"}],"role":"symbol","extendedModule":"CoreFoundation","fragments":[{"kind":"keyword","text":"extension"},{"text":" ","kind":"text"},{"preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier","text":"NSPoint"}],"modules":[{"relatedModules":["CoreFoundation"],"name":"CodeEditTextView"}],"externalID":"s:e:s:So7CGPointV16CodeEditTextViewE12pixelAlignedABvp","title":"CGPoint"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"]]},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint\/pixelAligned"],"title":"Instance Properties","generated":true,"anchor":"Instance-Properties"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/corefoundation\/cgpoint"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"extension"},{"text":" ","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGPoint/pixelAligned":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint\/pixelAligned","url":"\/documentation\/codeedittextview\/corefoundation\/cgpoint\/pixelaligned","title":"pixelAligned","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"pixelAligned","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier","text":"NSPoint"}],"abstract":[{"type":"text","text":"Creates a point that’s pixel-aligned."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGPoint":{"url":"\/documentation\/codeedittextview\/corefoundation\/cgpoint","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint","kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"text":"CGPoint","kind":"identifier"}],"role":"symbol","fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"}],"title":"CGPoint"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation":{"role":"collection","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation","abstract":[],"title":"CoreFoundation","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/corefoundation/cgpoint/pixelaligned.json b/data/documentation/codeedittextview/corefoundation/cgpoint/pixelaligned.json
new file mode 100644
index 000000000..3d5789b82
--- /dev/null
+++ b/data/documentation/codeedittextview/corefoundation/cgpoint/pixelaligned.json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","extendedModule":"CoreFoundation","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"pixelAligned"},{"kind":"text","text":": "},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"}],"modules":[{"relatedModules":["CoreFoundation"],"name":"CodeEditTextView"}],"externalID":"s:So7CGPointV16CodeEditTextViewE12pixelAlignedABvp","title":"pixelAligned"},"abstract":[{"type":"text","text":"Creates a point that’s pixel-aligned."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/corefoundation\/cgpoint\/pixelaligned"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint\/pixelAligned"},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"pixelAligned"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier","text":"NSPoint"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGPoint":{"url":"\/documentation\/codeedittextview\/corefoundation\/cgpoint","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint","kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"text":"CGPoint","kind":"identifier"}],"role":"symbol","fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"}],"title":"CGPoint"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation":{"role":"collection","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation","abstract":[],"title":"CoreFoundation","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGPoint/pixelAligned":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGPoint\/pixelAligned","url":"\/documentation\/codeedittextview\/corefoundation\/cgpoint\/pixelaligned","title":"pixelAligned","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"pixelAligned","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier","text":"NSPoint"}],"abstract":[{"type":"text","text":"Creates a point that’s pixel-aligned."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/corefoundation/cgrect.json b/data/documentation/codeedittextview/corefoundation/cgrect.json
new file mode 100644
index 000000000..37d692249
--- /dev/null
+++ b/data/documentation/codeedittextview/corefoundation/cgrect.json
@@ -0,0 +1 @@
+{"kind":"symbol","metadata":{"roleHeading":"Extended Structure","symbolKind":"extension","fragments":[{"kind":"keyword","text":"extension"},{"text":" ","kind":"text"},{"text":"NSRect","preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier"}],"navigatorTitle":[{"kind":"identifier","text":"CGRect"}],"externalID":"s:e:s:So6CGRectV16CodeEditTextViewE12pixelAlignedABvp","extendedModule":"CoreFoundation","role":"symbol","title":"CGRect","modules":[{"relatedModules":["CoreFoundation"],"name":"CodeEditTextView"}]},"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"extension","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/corefoundation\/cgrect"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect","interfaceLanguage":"swift"},"sections":[],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect\/pixelAligned"],"title":"Instance Properties","generated":true,"anchor":"Instance-Properties"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGRect":{"role":"symbol","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation\/cgrect","abstract":[],"navigatorTitle":[{"text":"CGRect","kind":"identifier"}],"fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}],"title":"CGRect","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGRect/pixelAligned":{"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"pixelAligned","kind":"identifier"},{"kind":"text","text":": "},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}],"abstract":[{"type":"text","text":"Creates a rect pixel-aligned on all edges."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect\/pixelAligned","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation\/cgrect\/pixelaligned","type":"topic","title":"pixelAligned"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation":{"role":"collection","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation","abstract":[],"title":"CoreFoundation","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/corefoundation/cgrect/pixelaligned.json b/data/documentation/codeedittextview/corefoundation/cgrect/pixelaligned.json
new file mode 100644
index 000000000..e26bf9436
--- /dev/null
+++ b/data/documentation/codeedittextview/corefoundation/cgrect/pixelaligned.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/corefoundation\/cgrect\/pixelaligned"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect\/pixelAligned","interfaceLanguage":"swift"},"metadata":{"externalID":"s:So6CGRectV16CodeEditTextViewE12pixelAlignedABvp","role":"symbol","extendedModule":"CoreFoundation","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"pixelAligned","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRect","preciseIdentifier":"c:@T@NSRect"}],"title":"pixelAligned","modules":[{"name":"CodeEditTextView","relatedModules":["CoreFoundation"]}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"type":"text","text":"Creates a rect pixel-aligned on all edges."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"pixelAligned","kind":"identifier"},{"kind":"text","text":": "},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGRect/pixelAligned":{"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"pixelAligned","kind":"identifier"},{"kind":"text","text":": "},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}],"abstract":[{"type":"text","text":"Creates a rect pixel-aligned on all edges."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect\/pixelAligned","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation\/cgrect\/pixelaligned","type":"topic","title":"pixelAligned"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation/CGRect":{"role":"symbol","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation\/cgrect","abstract":[],"navigatorTitle":[{"text":"CGRect","kind":"identifier"}],"fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}],"title":"CGRect","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation\/CGRect"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CoreFoundation":{"role":"collection","type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/corefoundation","abstract":[],"title":"CoreFoundation","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CoreFoundation"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/cursorview.json b/data/documentation/codeedittextview/cursorview.json
new file mode 100644
index 000000000..fc2fce890
--- /dev/null
+++ b/data/documentation/codeedittextview/cursorview.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"sections":[],"metadata":{"roleHeading":"Class","navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"CursorView"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"class","title":"CursorView","externalID":"c:@M@CodeEditTextView@objc(cs)CursorView"},"relationshipsSections":[{"title":"Inherits From","kind":"relationships","type":"inheritsFrom","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSView"]},{"title":"Conforms To","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibilityElement","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibility","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAnimatablePropertyContainer","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAppearanceCustomization","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingDestination","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSStandardKeyBindingResponding","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTouchBarProvider","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserActivityRestoring","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserInterfaceItemIdentification","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSCoding","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"kind":"relationships","type":"conformsTo"}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/init(coder:)"],"generated":true,"anchor":"Initializers","title":"Initializers"},{"generated":true,"anchor":"Instance-Properties","title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/color","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/isFlipped"]},{"anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/hitTest(_:)"],"title":"Instance Methods","generated":true}],"kind":"symbol","seeAlsoSections":[{"anchor":"Text-Selection","title":"Text Selection","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection"]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/cursorview"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"text":"CursorView","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/objc(pl)NSObject":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","title":"ObjectiveC.NSObjectProtocol","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/s23CustomStringConvertibleP":{"title":"Swift.CustomStringConvertible","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/objc(cs)NSView":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSView","type":"unresolvable","title":"AppKit.NSView"},"doc://codeedittextview.CodeEditTextView/SQ":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable","title":"Swift.Equatable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSStandardKeyBindingResponding":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSStandardKeyBindingResponding","title":"AppKit.NSStandardKeyBindingResponding"},"doc://codeedittextview.CodeEditTextView/SH":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","title":"Swift.Hashable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSTouchBarProvider":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTouchBarProvider","title":"AppKit.NSTouchBarProvider"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAccessibilityElement":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibilityElement","title":"AppKit.NSAccessibilityElementProtocol"},"doc://codeedittextview.CodeEditTextView/s7CVarArgP":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","title":"Swift.CVarArg"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSUserActivityRestoring":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserActivityRestoring","title":"AppKit.NSUserActivityRestoring"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAnimatablePropertyContainer":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAnimatablePropertyContainer","title":"AppKit.NSAnimatablePropertyContainer"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAppearanceCustomization":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAppearanceCustomization","title":"AppKit.NSAppearanceCustomization"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSDraggingDestination":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingDestination","title":"AppKit.NSDraggingDestination"},"doc://codeedittextview.CodeEditTextView/s28CustomDebugStringConvertibleP":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","title":"Swift.CustomDebugStringConvertible"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSCoding":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSCoding","title":"Foundation.NSCoding"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAccessibility":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibility","title":"AppKit.NSAccessibilityProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/hitTest(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/hitTest(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"hitTest"},{"text":"(","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":") -> "},{"text":"NSView","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView"},{"kind":"text","text":"?"}],"title":"hitTest(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/cursorview\/hittest(_:)","kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/isFlipped":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/isFlipped","type":"topic","title":"isFlipped","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isFlipped"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview\/isflipped","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/color":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/color","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"color","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier","text":"NSColor"}],"title":"color","abstract":[{"text":"The color of the cursor.","type":"text"}],"url":"\/documentation\/codeedittextview\/cursorview\/color","kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/init(coder:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/init(coder:)","type":"topic","title":"init(coder:)","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"?("},{"kind":"externalParam","text":"coder"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSCoder","text":"NSCoder"},{"text":")","kind":"text"}],"abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview\/init(coder:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSUserInterfaceItemIdentification":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserInterfaceItemIdentification","type":"unresolvable","title":"AppKit.NSUserInterfaceItemIdentification"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/cursorview/color.json b/data/documentation/codeedittextview/cursorview/color.json
new file mode 100644
index 000000000..9c26d2c7d
--- /dev/null
+++ b/data/documentation/codeedittextview/cursorview/color.json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/color","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/cursorview\/color"]}],"metadata":{"roleHeading":"Instance Property","title":"color","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"color","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"modules":[{"name":"CodeEditTextView"}],"role":"symbol","externalID":"s:16CodeEditTextView06CursorD0C5colorSo7NSColorCvp"},"kind":"symbol","abstract":[{"text":"The color of the cursor.","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/color":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/color","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"color","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier","text":"NSColor"}],"title":"color","abstract":[{"text":"The color of the cursor.","type":"text"}],"url":"\/documentation\/codeedittextview\/cursorview\/color","kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/cursorview/hittest(_:).json b/data/documentation/codeedittextview/cursorview/hittest(_:).json
new file mode 100644
index 000000000..6f063a98f
--- /dev/null
+++ b/data/documentation/codeedittextview/cursorview/hittest(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/cursorview\/hittest(_:)"]}],"metadata":{"title":"hitTest(_:)","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"hitTest","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint","text":"NSPoint"},{"text":") -> ","kind":"text"},{"text":"NSView","preciseIdentifier":"c:objc(cs)NSView","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","externalID":"c:@M@CodeEditTextView@objc(cs)CursorView(im)hitTest:"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hitTest","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"point"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"NSView","preciseIdentifier":"c:objc(cs)NSView"},{"kind":"text","text":"?"}],"platforms":["macOS"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/hitTest(_:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/hitTest(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/hitTest(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"hitTest"},{"text":"(","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":") -> "},{"text":"NSView","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView"},{"kind":"text","text":"?"}],"title":"hitTest(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/cursorview\/hittest(_:)","kind":"symbol","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/cursorview/init(coder:).json b/data/documentation/codeedittextview/cursorview/init(coder:).json
new file mode 100644
index 000000000..b39b89868
--- /dev/null
+++ b/data/documentation/codeedittextview/cursorview/init(coder:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","externalID":"c:@M@CodeEditTextView@objc(cs)CursorView(im)initWithCoder:","title":"init(coder:)","modules":[{"name":"CodeEditTextView"}],"symbolKind":"init","roleHeading":"Initializer","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"?("},{"kind":"externalParam","text":"coder"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSCoder","kind":"typeIdentifier","text":"NSCoder"},{"kind":"text","text":")"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"required"},{"kind":"text","text":" "},{"kind":"keyword","text":"init"},{"text":"?(","kind":"text"},{"text":"coder","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSCoder","preciseIdentifier":"c:objc(cs)NSCoder","kind":"typeIdentifier"},{"kind":"text","text":")"}]}]}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/init(coder:)"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/cursorview\/init(coder:)"]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/init(coder:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/init(coder:)","type":"topic","title":"init(coder:)","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"?("},{"kind":"externalParam","text":"coder"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSCoder","text":"NSCoder"},{"text":")","kind":"text"}],"abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview\/init(coder:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/cursorview/isflipped.json b/data/documentation/codeedittextview/cursorview/isflipped.json
new file mode 100644
index 000000000..4fb2ad9c7
--- /dev/null
+++ b/data/documentation/codeedittextview/cursorview/isflipped.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/cursorview\/isflipped"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isFlipped","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"isFlipped","externalID":"c:@M@CodeEditTextView@objc(cs)CursorView(py)flipped","symbolKind":"property"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView"]]},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/isFlipped"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"isFlipped","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView/isFlipped":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView\/isFlipped","type":"topic","title":"isFlipped","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isFlipped"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview\/isflipped","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis.json b/data/documentation/codeedittextview/emphasis.json
new file mode 100644
index 000000000..9196bc1f2
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis.json
@@ -0,0 +1 @@
+{"sections":[],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/init(range:style:flash:inactive:selectInDocument:)"],"generated":true,"anchor":"Initializers","title":"Initializers"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/flash","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/inactive","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/selectInDocument","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/style"],"anchor":"Instance-Properties","generated":true,"title":"Instance Properties"},{"title":"Default Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/Equatable-Implementations"],"generated":true,"anchor":"Default-Implementations"}],"kind":"symbol","metadata":{"role":"symbol","roleHeading":"Structure","externalID":"s:16CodeEditTextView8EmphasisV","title":"Emphasis","symbolKind":"struct","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Emphasis"}],"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","interfaceLanguage":"swift"},"relationshipsSections":[{"type":"conformsTo","kind":"relationships","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ"],"title":"Conforms To"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasis"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"Represents a single emphasis with its properties","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/flash":{"title":"flash","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/flash","kind":"symbol","type":"topic","abstract":[{"text":"Set to ","type":"text"},{"code":"true","type":"codeVoice"},{"type":"text","text":" to ‘flash’ the emphasis before removing it automatically after being added."}],"url":"\/documentation\/codeedittextview\/emphasis\/flash","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flash"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/selectInDocument":{"abstract":[{"type":"text","text":"Set to "},{"type":"codeVoice","code":"true"},{"text":" if the emphasis manager should update the text view’s selected range to match","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"this object’s "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","isActive":true},{"type":"text","text":" value."}],"url":"\/documentation\/codeedittextview\/emphasis\/selectindocument","title":"selectInDocument","kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"selectInDocument","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/selectInDocument","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/range":{"role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/emphasis\/range","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","abstract":[{"type":"text","text":"The range the emphasis applies it’s style to, relative to the entire text document."}],"type":"topic","title":"range","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/Equatable-Implementations":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/Equatable-Implementations","type":"topic","role":"collectionGroup","kind":"article","url":"\/documentation\/codeedittextview\/emphasis\/equatable-implementations","title":"Equatable Implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/inactive":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/inactive","title":"inactive","url":"\/documentation\/codeedittextview\/emphasis\/inactive","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"inactive"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"abstract":[{"type":"text","text":"Set to "},{"code":"true","type":"codeVoice"},{"type":"text","text":" to style the emphasis as ‘inactive’."}]},"doc://codeedittextview.CodeEditTextView/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/init(range:style:flash:inactive:selectInDocument:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/init(range:style:flash:inactive:selectInDocument:)","title":"init(range:style:flash:inactive:selectInDocument:)","url":"\/documentation\/codeedittextview\/emphasis\/init(range:style:flash:inactive:selectindocument:)","role":"symbol","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"style","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"EmphasisStyle","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"flash"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":", ","kind":"text"},{"text":"inactive","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"kind":"externalParam","text":"selectInDocument"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":")","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/style":{"kind":"symbol","role":"symbol","type":"topic","title":"style","url":"\/documentation\/codeedittextview\/emphasis\/style","abstract":[{"text":"The style to apply emphasis with, handled by the ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","isActive":true,"type":"reference"},{"type":"text","text":"."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/style","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"style"},{"kind":"text","text":": "},{"text":"EmphasisStyle","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/!=(_:_:).json b/data/documentation/codeedittextview/emphasis/!=(_:_:).json
new file mode 100644
index 000000000..6d18d8c2a
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/!=(_:_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/emphasis\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/!=(_:_:)"},"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Operator","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView8EmphasisV","symbolKind":"op","title":"!=(_:_:)","extendedModule":"Swift","role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"internalParam","text":"lhs"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/!=(_:_:)":{"title":"!=(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/!=(_:_:)","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/emphasis\/!=(_:_:)","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/equatable-implementations.json b/data/documentation/codeedittextview/emphasis/equatable-implementations.json
new file mode 100644
index 000000000..f74f73f8f
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/equatable-implementations.json
@@ -0,0 +1 @@
+{"kind":"article","schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"role":"collectionGroup","modules":[{"name":"CodeEditTextView"}],"roleHeading":"API Collection","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/Equatable-Implementations","interfaceLanguage":"swift"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasis\/equatable-implementations"]}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/!=(_:_:)"],"anchor":"Operators","title":"Operators","generated":true}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/!=(_:_:)":{"title":"!=(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/!=(_:_:)","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/emphasis\/!=(_:_:)","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/flash.json b/data/documentation/codeedittextview/emphasis/flash.json
new file mode 100644
index 000000000..9736de4bf
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/flash.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasis\/flash"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flash"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"},{"content":[{"anchor":"discussion","type":"heading","level":2,"text":"Discussion"},{"inlineContent":[{"type":"text","text":"Useful when an emphasis should be temporary and quick, like when emphasizing paired brackets in a document."}],"type":"paragraph"}],"kind":"content"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView8EmphasisV5flashSbvp","roleHeading":"Instance Property","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flash","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"flash","symbolKind":"property"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/flash"},"kind":"symbol","abstract":[{"text":"Set to ","type":"text"},{"type":"codeVoice","code":"true"},{"type":"text","text":" to ‘flash’ the emphasis before removing it automatically after being added."}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/flash":{"title":"flash","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/flash","kind":"symbol","type":"topic","abstract":[{"text":"Set to ","type":"text"},{"code":"true","type":"codeVoice"},{"type":"text","text":" to ‘flash’ the emphasis before removing it automatically after being added."}],"url":"\/documentation\/codeedittextview\/emphasis\/flash","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flash"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/inactive.json b/data/documentation/codeedittextview/emphasis/inactive.json
new file mode 100644
index 000000000..07267d49e
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/inactive.json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Set to ","type":"text"},{"type":"codeVoice","code":"true"},{"type":"text","text":" to style the emphasis as ‘inactive’."}],"metadata":{"externalID":"s:16CodeEditTextView8EmphasisV8inactiveSbvp","title":"inactive","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"inactive","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/inactive","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"inactive"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"},{"content":[{"level":2,"type":"heading","text":"Discussion","anchor":"discussion"},{"inlineContent":[{"text":"When ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/style","isActive":true,"type":"reference"},{"type":"text","text":" is "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/standard","type":"reference","isActive":true},{"text":", this reduces shadows and background color.","type":"text"},{"text":" ","type":"text"},{"text":"For all styles, if drawing text on top of them, this uses ","type":"text"},{"code":"EmphasisManager\/getInactiveTextColor","type":"codeVoice"},{"text":" instead of","type":"text"},{"type":"text","text":" "},{"type":"text","text":"the text view’s text color to render the emphasized text."}],"type":"paragraph"}],"kind":"content"}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasis\/inactive"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/style":{"kind":"symbol","role":"symbol","type":"topic","title":"style","url":"\/documentation\/codeedittextview\/emphasis\/style","abstract":[{"text":"The style to apply emphasis with, handled by the ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","isActive":true,"type":"reference"},{"type":"text","text":"."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/style","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"style"},{"kind":"text","text":": "},{"text":"EmphasisStyle","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/standard":{"title":"EmphasisStyle.standard","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/standard","kind":"symbol","type":"topic","abstract":[{"text":"Standard emphasis with background color","type":"text"}],"url":"\/documentation\/codeedittextview\/emphasisstyle\/standard","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"standard","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/inactive":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/inactive","title":"inactive","url":"\/documentation\/codeedittextview\/emphasis\/inactive","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"inactive"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"abstract":[{"type":"text","text":"Set to "},{"code":"true","type":"codeVoice"},{"type":"text","text":" to style the emphasis as ‘inactive’."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/init(range:style:flash:inactive:selectindocument:).json b/data/documentation/codeedittextview/emphasis/init(range:style:flash:inactive:selectindocument:).json
new file mode 100644
index 000000000..1810f282e
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/init(range:style:flash:inactive:selectindocument:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"init(range:style:flash:inactive:selectInDocument:)","externalID":"s:16CodeEditTextView8EmphasisV5range5style5flash8inactive16selectInDocumentACSo8_NSRangeV_AA0E5StyleOS3btcfc","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"init","roleHeading":"Initializer","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"text":"range","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"style"},{"text":": ","kind":"text"},{"text":"EmphasisStyle","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"},{"text":", ","kind":"text"},{"text":"flash","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"inactive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":", ","kind":"text"},{"text":"selectInDocument","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":")","kind":"text"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/init(range:style:flash:inactive:selectInDocument:)"},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"text":"range","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"style"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"EmphasisStyle","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"},{"text":" = .standard, ","kind":"text"},{"kind":"externalParam","text":"flash"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":" = false, ","kind":"text"},{"kind":"externalParam","text":"inactive"},{"kind":"text","text":": "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":" = false, ","kind":"text"},{"text":"selectInDocument","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":" = false)","kind":"text"}]}]}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/emphasis\/init(range:style:flash:inactive:selectindocument:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/init(range:style:flash:inactive:selectInDocument:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/init(range:style:flash:inactive:selectInDocument:)","title":"init(range:style:flash:inactive:selectInDocument:)","url":"\/documentation\/codeedittextview\/emphasis\/init(range:style:flash:inactive:selectindocument:)","role":"symbol","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"style","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"EmphasisStyle","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"flash"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":", ","kind":"text"},{"text":"inactive","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"kind":"externalParam","text":"selectInDocument"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":")","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/range.json b/data/documentation/codeedittextview/emphasis/range.json
new file mode 100644
index 000000000..2341a447c
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/range.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}],"platforms":["macOS"]}]}],"metadata":{"roleHeading":"Instance Property","symbolKind":"property","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView8EmphasisV5rangeSo8_NSRangeVvp","role":"symbol","title":"range","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","interfaceLanguage":"swift"},"abstract":[{"text":"The range the emphasis applies it’s style to, relative to the entire text document.","type":"text"}],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasis\/range"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/range":{"role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/emphasis\/range","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","abstract":[{"type":"text","text":"The range the emphasis applies it’s style to, relative to the entire text document."}],"type":"topic","title":"range","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/selectindocument.json b/data/documentation/codeedittextview/emphasis/selectindocument.json
new file mode 100644
index 000000000..613ad9635
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/selectindocument.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Set to "},{"type":"codeVoice","code":"true"},{"type":"text","text":" if the emphasis manager should update the text view’s selected range to match"},{"text":" ","type":"text"},{"type":"text","text":"this object’s "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","type":"reference","isActive":true},{"type":"text","text":" value."}],"sections":[],"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/emphasis\/selectindocument"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"selectInDocument","symbolKind":"property","roleHeading":"Instance Property","externalID":"s:16CodeEditTextView8EmphasisV16selectInDocumentSbvp","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"selectInDocument"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"selectInDocument","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/selectInDocument","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/selectInDocument":{"abstract":[{"type":"text","text":"Set to "},{"type":"codeVoice","code":"true"},{"text":" if the emphasis manager should update the text view’s selected range to match","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"this object’s "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","isActive":true},{"type":"text","text":" value."}],"url":"\/documentation\/codeedittextview\/emphasis\/selectindocument","title":"selectInDocument","kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"selectInDocument","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/selectInDocument","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/range":{"role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/emphasis\/range","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/range","abstract":[{"type":"text","text":"The range the emphasis applies it’s style to, relative to the entire text document."}],"type":"topic","title":"range","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasis/style.json b/data/documentation/codeedittextview/emphasis/style.json
new file mode 100644
index 000000000..84f5a1e92
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasis/style.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/emphasis\/style"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/style"},"metadata":{"symbolKind":"property","roleHeading":"Instance Property","externalID":"s:16CodeEditTextView8EmphasisV5styleAA0E5StyleOvp","title":"style","role":"symbol","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"style","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","text":"EmphasisStyle"}]},"abstract":[{"type":"text","text":"The style to apply emphasis with, handled by the "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","isActive":true},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"style"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","text":"EmphasisStyle","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis/style":{"kind":"symbol","role":"symbol","type":"topic","title":"style","url":"\/documentation\/codeedittextview\/emphasis\/style","abstract":[{"text":"The style to apply emphasis with, handled by the ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","isActive":true,"type":"reference"},{"type":"text","text":"."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis\/style","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"style"},{"kind":"text","text":": "},{"text":"EmphasisStyle","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager.json b/data/documentation/codeedittextview/emphasismanager.json
new file mode 100644
index 000000000..a3f3064b7
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasismanager"]}],"abstract":[{"text":"Manages text emphases within a text view, supporting multiple styles and groups.","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"},"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView15EmphasisManagerC","symbolKind":"class","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"EmphasisManager"}],"roleHeading":"Class","title":"EmphasisManager","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"kind":"symbol","topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphases(_:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphasis(_:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/getEmphases(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeAllEmphases()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeEmphases(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/replaceEmphases(_:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateEmphases(for:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateLayerBackgrounds()"],"title":"Instance Methods","anchor":"Instance-Methods"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"final","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"EmphasisManager"}],"languages":["swift"]}]},{"content":[{"anchor":"overview","level":2,"text":"Overview","type":"heading"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Text emphasis draws attention to a range of text, indicating importance."},{"text":" ","type":"text"},{"type":"text","text":"This object may be used in a code editor to emphasize search results, or indicate"},{"text":" ","type":"text"},{"type":"text","text":"bracket pairs, for instance."}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"This object is designed to allow for easy grouping of emphasis types. An outside"},{"text":" ","type":"text"},{"text":"object is responsible for managing what emphases are visible. Because it’s very","type":"text"},{"text":" ","type":"text"},{"text":"likely that more than one type of emphasis may occur on the document at the same","type":"text"},{"type":"text","text":" "},{"text":"time, grouping allows each emphasis to be managed separately from the others by","type":"text"},{"type":"text","text":" "},{"text":"each outside object without knowledge of the other’s state.","type":"text"}]}],"kind":"content"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/updateLayerBackgrounds()":{"type":"topic","abstract":[{"type":"text","text":"Updates the positions and bounds of all emphasis layers to match the current text layout."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateLayerBackgrounds()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"updateLayerBackgrounds"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/emphasismanager\/updatelayerbackgrounds()","title":"updateLayerBackgrounds()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/removeAllEmphases()":{"abstract":[{"text":"Removes all emphases for all groups.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeAllEmphases()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/emphasismanager\/removeallemphases()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"removeAllEmphases","kind":"identifier"},{"text":"()","kind":"text"}],"title":"removeAllEmphases()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/addEmphasis(_:for:)":{"abstract":[{"text":"Adds a single emphasis to the specified group.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphasis(_:for:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/emphasismanager\/addemphasis(_:for:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"addEmphasis"},{"kind":"text","text":"("},{"text":"Emphasis","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"title":"addEmphasis(_:for:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/removeEmphases(for:)":{"abstract":[{"text":"Removes all emphases for the given group.","type":"text"}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeEmphases(for:)","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/removeemphases(for:)","title":"removeEmphases(for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"removeEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/updateEmphases(for:_:)":{"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/updateemphases(for:_:)","abstract":[{"type":"text","text":"Updates the emphases for a group by transforming the existing array."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateEmphases(for:_:)","title":"updateEmphases(for:_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"updateEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":", ([","kind":"text"},{"text":"Emphasis","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"kind":"text","text":"]) -> ["},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis","kind":"typeIdentifier"},{"kind":"text","text":"])"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/addEmphases(_:for:)":{"abstract":[{"type":"text","text":"Adds multiple emphases to the specified group."}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphases(_:for:)","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/addemphases(_:for:)","title":"addEmphases(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"addEmphases","kind":"identifier"},{"text":"([","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis"},{"text":"], ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/getEmphases(for:)":{"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/getemphases(for:)","abstract":[{"type":"text","text":"Gets all emphases for a given group."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/getEmphases(for:)","title":"getEmphases(for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> ["},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/replaceEmphases(_:for:)":{"abstract":[{"type":"text","text":"Replaces all emphases in the specified group."}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/replaceEmphases(_:for:)","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/replaceemphases(_:for:)","title":"replaceEmphases(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"replaceEmphases","kind":"identifier"},{"text":"([","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis"},{"text":"], ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/addemphases(_:for:).json b/data/documentation/codeedittextview/emphasismanager/addemphases(_:for:).json
new file mode 100644
index 000000000..9c3c673d1
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/addemphases(_:for:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"Adds multiple emphases to the specified group.","type":"text"}],"metadata":{"title":"addEmphases(_:for:)","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"addEmphases","kind":"identifier"},{"kind":"text","text":"(["},{"text":"Emphasis","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"kind":"text","text":"], "},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView15EmphasisManagerC11addEmphases_3forySayAA0E0VG_SStF","role":"symbol","symbolKind":"method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"addEmphases"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"emphases"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","kind":"typeIdentifier","text":"Emphasis"},{"text":"], ","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":" "},{"kind":"internalParam","text":"id"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"text":"The emphases to add","type":"text"}],"type":"paragraph"}],"name":"emphases"},{"name":"id","content":[{"type":"paragraph","inlineContent":[{"text":"The group identifier","type":"text"}]}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasismanager\/addemphases(_:for:)"]}],"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphases(_:for:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/addEmphases(_:for:)":{"abstract":[{"type":"text","text":"Adds multiple emphases to the specified group."}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphases(_:for:)","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/addemphases(_:for:)","title":"addEmphases(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"addEmphases","kind":"identifier"},{"text":"([","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis"},{"text":"], ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/addemphasis(_:for:).json b/data/documentation/codeedittextview/emphasismanager/addemphasis(_:for:).json
new file mode 100644
index 000000000..567ccdb01
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/addemphasis(_:for:).json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphasis(_:for:)"},"metadata":{"externalID":"s:16CodeEditTextView15EmphasisManagerC03addE0_3foryAA0E0V_SStF","title":"addEmphasis(_:for:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"addEmphasis"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","roleHeading":"Instance Method"},"schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"text":"Adds a single emphasis to the specified group.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"addEmphasis"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"emphasis"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","kind":"typeIdentifier","text":"Emphasis"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"text":"id","kind":"internalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The emphasis to add"}]}],"name":"emphasis"},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"A group identifier"}]}],"name":"id"}],"kind":"parameters"}],"variants":[{"paths":["\/documentation\/codeedittextview\/emphasismanager\/addemphasis(_:for:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/addEmphasis(_:for:)":{"abstract":[{"text":"Adds a single emphasis to the specified group.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/addEmphasis(_:for:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/emphasismanager\/addemphasis(_:for:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"addEmphasis"},{"kind":"text","text":"("},{"text":"Emphasis","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"title":"addEmphasis(_:for:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/getemphases(for:).json b/data/documentation/codeedittextview/emphasismanager/getemphases(for:).json
new file mode 100644
index 000000000..3efa9f9de
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/getemphases(for:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"abstract":[{"text":"Gets all emphases for a given group.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"getEmphases"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"text":"id","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","text":"Emphasis"},{"text":"]","kind":"text"}],"platforms":["macOS"]}]},{"parameters":[{"name":"id","content":[{"inlineContent":[{"text":"The group identifier","type":"text"}],"type":"paragraph"}]}],"kind":"parameters"},{"kind":"content","content":[{"type":"heading","level":2,"text":"Return Value","anchor":"return-value"},{"type":"paragraph","inlineContent":[{"text":"Array of emphases in the group","type":"text"}]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/emphasismanager\/getemphases(for:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"metadata":{"title":"getEmphases(for:)","symbolKind":"method","externalID":"s:16CodeEditTextView15EmphasisManagerC11getEmphases3forSayAA0E0VGSS_tF","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Emphasis","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"kind":"text","text":"]"}],"role":"symbol"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/getEmphases(for:)"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/getEmphases(for:)":{"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/getemphases(for:)","abstract":[{"type":"text","text":"Gets all emphases for a given group."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/getEmphases(for:)","title":"getEmphases(for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> ["},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/removeallemphases().json b/data/documentation/codeedittextview/emphasismanager/removeallemphases().json
new file mode 100644
index 000000000..c2a0cfe24
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/removeallemphases().json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/emphasismanager\/removeallemphases()"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Removes all emphases for all groups.","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeAllEmphases()"},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"metadata":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeAllEmphases"},{"kind":"text","text":"()"}],"externalID":"s:16CodeEditTextView15EmphasisManagerC17removeAllEmphasesyyF","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","title":"removeAllEmphases()","symbolKind":"method"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"removeAllEmphases","kind":"identifier"},{"text":"()","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/removeAllEmphases()":{"abstract":[{"text":"Removes all emphases for all groups.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeAllEmphases()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/emphasismanager\/removeallemphases()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"removeAllEmphases","kind":"identifier"},{"text":"()","kind":"text"}],"title":"removeAllEmphases()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/removeemphases(for:).json b/data/documentation/codeedittextview/emphasismanager/removeemphases(for:).json
new file mode 100644
index 000000000..1cae8155e
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/removeemphases(for:).json
@@ -0,0 +1 @@
+{"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/emphasismanager\/removeemphases(for:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Removes all emphases for the given group.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"removeEmphases","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"text":"id","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":")"}]}]},{"parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The group identifier","type":"text"}]}],"name":"id"}],"kind":"parameters"}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeEmphases(for:)"},"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"removeEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView15EmphasisManagerC14removeEmphases3forySS_tF","title":"removeEmphases(for:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/removeEmphases(for:)":{"abstract":[{"text":"Removes all emphases for the given group.","type":"text"}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/removeEmphases(for:)","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/removeemphases(for:)","title":"removeEmphases(for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"removeEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/replaceemphases(_:for:).json b/data/documentation/codeedittextview/emphasismanager/replaceemphases(_:for:).json
new file mode 100644
index 000000000..a828e9cef
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/replaceemphases(_:for:).json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"type":"text","text":"Replaces all emphases in the specified group."}],"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"replaceEmphases"},{"text":"([","kind":"text"},{"text":"Emphasis","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"text":"], ","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":")","kind":"text"}],"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView15EmphasisManagerC15replaceEmphases_3forySayAA0E0VG_SStF","symbolKind":"method","title":"replaceEmphases(_:for:)","role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"replaceEmphases"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"emphases","kind":"internalParam"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"Emphasis","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"kind":"text","text":"], "},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"id","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"languages":["swift"]}]},{"parameters":[{"content":[{"inlineContent":[{"type":"text","text":"The new emphases"}],"type":"paragraph"}],"name":"emphases"},{"name":"id","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The group identifier"}]}]}],"kind":"parameters"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasismanager\/replaceemphases(_:for:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/replaceEmphases(_:for:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/replaceEmphases(_:for:)":{"abstract":[{"type":"text","text":"Replaces all emphases in the specified group."}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/replaceEmphases(_:for:)","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/replaceemphases(_:for:)","title":"replaceEmphases(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"replaceEmphases","kind":"identifier"},{"text":"([","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis"},{"text":"], ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/updateemphases(for:_:).json b/data/documentation/codeedittextview/emphasismanager/updateemphases(for:_:).json
new file mode 100644
index 000000000..2b91e8518
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/updateemphases(for:_:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Updates the emphases for a group by transforming the existing array."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasismanager\/updateemphases(for:_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"updateEmphases","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"id"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":", "},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": (["},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","text":"Emphasis","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"text":"]) -> [","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis"},{"text":"])","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"name":"id","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The group identifier"}]}]},{"name":"transform","content":[{"inlineContent":[{"type":"text","text":"The transformation to apply to the existing emphases"}],"type":"paragraph"}]}],"kind":"parameters"}],"metadata":{"title":"updateEmphases(for:_:)","externalID":"s:16CodeEditTextView15EmphasisManagerC14updateEmphases3for_ySS_SayAA0E0VGAHXEtF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"updateEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":", ([","kind":"text"},{"kind":"typeIdentifier","text":"Emphasis","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"kind":"text","text":"]) -> ["},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","kind":"typeIdentifier","text":"Emphasis"},{"text":"])","kind":"text"}]},"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateEmphases(for:_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Emphasis":{"navigatorTitle":[{"text":"Emphasis","kind":"identifier"}],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Emphasis","title":"Emphasis","role":"symbol","abstract":[{"type":"text","text":"Represents a single emphasis with its properties"}],"url":"\/documentation\/codeedittextview\/emphasis","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Emphasis","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/updateEmphases(for:_:)":{"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/emphasismanager\/updateemphases(for:_:)","abstract":[{"type":"text","text":"Updates the emphases for a group by transforming the existing array."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateEmphases(for:_:)","title":"updateEmphases(for:_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"updateEmphases","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":", ([","kind":"text"},{"text":"Emphasis","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView8EmphasisV"},{"kind":"text","text":"]) -> ["},{"preciseIdentifier":"s:16CodeEditTextView8EmphasisV","text":"Emphasis","kind":"typeIdentifier"},{"kind":"text","text":"])"}],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasismanager/updatelayerbackgrounds().json b/data/documentation/codeedittextview/emphasismanager/updatelayerbackgrounds().json
new file mode 100644
index 000000000..b60b69e21
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasismanager/updatelayerbackgrounds().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateLayerBackgrounds()","interfaceLanguage":"swift"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"type":"text","text":"Updates the positions and bounds of all emphasis layers to match the current text layout."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"updateLayerBackgrounds","kind":"identifier"},{"text":"()","kind":"text"}],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/emphasismanager\/updatelayerbackgrounds()"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"externalID":"s:16CodeEditTextView15EmphasisManagerC22updateLayerBackgroundsyyF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"updateLayerBackgrounds","kind":"identifier"},{"kind":"text","text":"()"}],"symbolKind":"method","title":"updateLayerBackgrounds()","roleHeading":"Instance Method"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager/updateLayerBackgrounds()":{"type":"topic","abstract":[{"type":"text","text":"Updates the positions and bounds of all emphasis layers to match the current text layout."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager\/updateLayerBackgrounds()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"updateLayerBackgrounds"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/emphasismanager\/updatelayerbackgrounds()","title":"updateLayerBackgrounds()","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasisstyle.json b/data/documentation/codeedittextview/emphasisstyle.json
new file mode 100644
index 000000000..ed3abc01a
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasisstyle.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"abstract":[{"type":"text","text":"Defines the style of emphasis to apply to text ranges"}],"sections":[],"metadata":{"roleHeading":"Enumeration","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}],"externalID":"s:16CodeEditTextView13EmphasisStyleO","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"EmphasisStyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisStyle"}],"symbolKind":"enum"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/emphasisstyle"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","topicSections":[{"title":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/==(_:_:)"],"generated":true,"anchor":"Operators"},{"generated":true,"anchor":"Enumeration-Cases","title":"Enumeration Cases","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/outline(color:fill:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/standard","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/underline(color:)"]},{"title":"Default Implementations","anchor":"Default-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/Equatable-Implementations"],"generated":true}],"schemaVersion":{"major":0,"patch":0,"minor":3},"relationshipsSections":[{"kind":"relationships","title":"Conforms To","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ"],"type":"conformsTo"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/Equatable-Implementations":{"title":"Equatable Implementations","abstract":[],"url":"\/documentation\/codeedittextview\/emphasisstyle\/equatable-implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/Equatable-Implementations","kind":"article","role":"collectionGroup","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/outline(color:fill:)":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/outline(color:fill:)","role":"symbol","url":"\/documentation\/codeedittextview\/emphasisstyle\/outline(color:fill:)","title":"EmphasisStyle.outline(color:fill:)","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"outline","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"fill"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Outline emphasis with a border color"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/standard":{"title":"EmphasisStyle.standard","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/standard","kind":"symbol","type":"topic","abstract":[{"text":"Standard emphasis with background color","type":"text"}],"url":"\/documentation\/codeedittextview\/emphasisstyle\/standard","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"standard","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/SQ":{"title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/==(_:_:)":{"role":"symbol","kind":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"EmphasisStyle","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","text":"EmphasisStyle","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/emphasisstyle\/==(_:_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/==(_:_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/underline(color:)":{"title":"EmphasisStyle.underline(color:)","abstract":[{"text":"Underline emphasis with a line color","type":"text"}],"url":"\/documentation\/codeedittextview\/emphasisstyle\/underline(color:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/underline(color:)","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"kind":"identifier","text":"underline"},{"kind":"text","text":"("},{"kind":"externalParam","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier"},{"kind":"text","text":")"}],"kind":"symbol","role":"symbol","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasisstyle/!=(_:_:).json b/data/documentation/codeedittextview/emphasisstyle/!=(_:_:).json
new file mode 100644
index 000000000..917b2d6b6
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasisstyle/!=(_:_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasisstyle\/!=(_:_:)"]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/!=(_:_:)","interfaceLanguage":"swift"},"metadata":{"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView13EmphasisStyleO","role":"symbol","roleHeading":"Operator","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"title":"!=(_:_:)","symbolKind":"op","extendedModule":"Swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/!=(_:_:)":{"title":"!=(_:_:)","abstract":[],"fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/emphasisstyle\/!=(_:_:)","type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/!=(_:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasisstyle/==(_:_:).json b/data/documentation/codeedittextview/emphasisstyle/==(_:_:).json
new file mode 100644
index 000000000..634806936
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasisstyle/==(_:_:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"==(_:_:)","roleHeading":"Operator","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView13EmphasisStyleO2eeoiySbAC_ACtFZ","role":"symbol","symbolKind":"op","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"EmphasisStyle","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","text":"EmphasisStyle"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","kind":"typeIdentifier","text":"EmphasisStyle","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"},{"kind":"text","text":", "},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","text":"EmphasisStyle","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"platforms":["macOS"]}]}],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasisstyle\/==(_:_:)"]}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/==(_:_:)","interfaceLanguage":"swift"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/==(_:_:)":{"role":"symbol","kind":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"EmphasisStyle","preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView13EmphasisStyleO","text":"EmphasisStyle","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/emphasisstyle\/==(_:_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/==(_:_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasisstyle/equatable-implementations.json b/data/documentation/codeedittextview/emphasisstyle/equatable-implementations.json
new file mode 100644
index 000000000..e9ee967f4
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasisstyle/equatable-implementations.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/Equatable-Implementations"},"variants":[{"paths":["\/documentation\/codeedittextview\/emphasisstyle\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"]]},"topicSections":[{"generated":true,"title":"Operators","anchor":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/!=(_:_:)"]}],"sections":[],"metadata":{"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"kind":"article","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/!=(_:_:)":{"title":"!=(_:_:)","abstract":[],"fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/emphasisstyle\/!=(_:_:)","type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasisstyle/outline(color:fill:).json b/data/documentation/codeedittextview/emphasisstyle/outline(color:fill:).json
new file mode 100644
index 000000000..d22be8406
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasisstyle/outline(color:fill:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasisstyle\/outline(color:fill:)"]}],"abstract":[{"type":"text","text":"Outline emphasis with a border color"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/outline(color:fill:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"EmphasisStyle.outline(color:fill:)","externalID":"s:16CodeEditTextView13EmphasisStyleO7outlineyACSo7NSColorC_SbtcACmF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"case","roleHeading":"Case","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"outline"},{"text":"(","kind":"text"},{"text":"color","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"},{"kind":"text","text":", "},{"kind":"externalParam","text":"fill"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":")","kind":"text"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"outline"},{"kind":"text","text":"("},{"text":"color","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"},{"kind":"text","text":", "},{"kind":"externalParam","text":"fill"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":" = false)"}]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/outline(color:fill:)":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/outline(color:fill:)","role":"symbol","url":"\/documentation\/codeedittextview\/emphasisstyle\/outline(color:fill:)","title":"EmphasisStyle.outline(color:fill:)","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"outline","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"fill"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Outline emphasis with a border color"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasisstyle/standard.json b/data/documentation/codeedittextview/emphasisstyle/standard.json
new file mode 100644
index 000000000..d17899f3f
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasisstyle/standard.json
@@ -0,0 +1 @@
+{"metadata":{"title":"EmphasisStyle.standard","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"standard"}],"externalID":"s:16CodeEditTextView13EmphasisStyleO8standardyA2CmF","symbolKind":"case","roleHeading":"Case","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"standard"}]}],"kind":"declarations"}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/standard"},"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/emphasisstyle\/standard"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"]]},"abstract":[{"type":"text","text":"Standard emphasis with background color"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/standard":{"title":"EmphasisStyle.standard","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/standard","kind":"symbol","type":"topic","abstract":[{"text":"Standard emphasis with background color","type":"text"}],"url":"\/documentation\/codeedittextview\/emphasisstyle\/standard","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"standard","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/emphasisstyle/underline(color:).json b/data/documentation/codeedittextview/emphasisstyle/underline(color:).json
new file mode 100644
index 000000000..83db6a7c8
--- /dev/null
+++ b/data/documentation/codeedittextview/emphasisstyle/underline(color:).json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/emphasisstyle\/underline(color:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"underline"},{"text":"(","kind":"text"},{"text":"color","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor"},{"text":")","kind":"text"}]}],"kind":"declarations"}],"metadata":{"roleHeading":"Case","externalID":"s:16CodeEditTextView13EmphasisStyleO9underlineyACSo7NSColorC_tcACmF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"EmphasisStyle.underline(color:)","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"underline","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier"},{"kind":"text","text":")"}],"symbolKind":"case"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/underline(color:)","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"type":"text","text":"Underline emphasis with a line color"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle":{"type":"topic","kind":"symbol","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"EmphasisStyle","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle","url":"\/documentation\/codeedittextview\/emphasisstyle","title":"EmphasisStyle","abstract":[{"text":"Defines the style of emphasis to apply to text ranges","type":"text"}],"role":"symbol","navigatorTitle":[{"text":"EmphasisStyle","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisStyle/underline(color:)":{"title":"EmphasisStyle.underline(color:)","abstract":[{"text":"Underline emphasis with a line color","type":"text"}],"url":"\/documentation\/codeedittextview\/emphasisstyle\/underline(color:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisStyle\/underline(color:)","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"kind":"identifier","text":"underline"},{"kind":"text","text":"("},{"kind":"externalParam","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier"},{"kind":"text","text":")"}],"kind":"symbol","role":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets.json b/data/documentation/codeedittextview/horizontaledgeinsets.json
new file mode 100644
index 000000000..e6dd2cc8b
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets.json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"HorizontalEdgeInsets","kind":"identifier"}],"languages":["swift"]}],"kind":"declarations"}],"topicSections":[{"title":"Operators","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-(_:_:)"],"anchor":"Operators"},{"title":"Initializers","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(from:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(left:right:)"],"generated":true,"anchor":"Initializers"},{"generated":true,"title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/horizontal","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/left","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/right"],"anchor":"Instance-Properties"},{"anchor":"Type-Properties","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/zero"],"title":"Type Properties"},{"generated":true,"anchor":"Default-Implementations","title":"Default Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/AdditiveArithmetic-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/Equatable-Implementations"]}],"metadata":{"navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"title":"HorizontalEdgeInsets","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV","symbolKind":"struct","roleHeading":"Structure","role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"identifier"}]},"seeAlsoSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"],"anchor":"Supporting-Types","title":"Supporting Types","generated":true}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"relationshipsSections":[{"type":"conformsTo","kind":"relationships","title":"Conforms To","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/s18AdditiveArithmeticP","doc:\/\/codeedittextview.CodeEditTextView\/Se","doc:\/\/codeedittextview.CodeEditTextView\/SE","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/s8SendableP"]}],"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/+(_:_:)":{"abstract":[],"kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/+(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"+"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","kind":"typeIdentifier","text":"HorizontalEdgeInsets"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"title":"+(_:_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/SE":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SE","type":"unresolvable","title":"Swift.Encodable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/AdditiveArithmetic-Implementations":{"abstract":[],"kind":"article","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/AdditiveArithmetic-Implementations","role":"collectionGroup","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/additivearithmetic-implementations","title":"AdditiveArithmetic Implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/init(left:right:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/init(left:right:)","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"left"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":", "},{"kind":"externalParam","text":"right"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(left:right:)","type":"topic","abstract":[],"title":"init(left:right:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/-(_:_:)":{"title":"-(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-(_:_:)","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/-(_:_:)","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"-"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"},{"kind":"text","text":", "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}]},"doc://codeedittextview.CodeEditTextView/s18AdditiveArithmeticP":{"title":"Swift.AdditiveArithmetic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s18AdditiveArithmeticP","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/left":{"title":"left","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/left","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/left","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"left"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/Equatable-Implementations":{"abstract":[],"kind":"article","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/Equatable-Implementations","type":"topic","role":"collectionGroup","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/equatable-implementations","title":"Equatable Implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/right":{"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/right","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"right"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"type":"topic","abstract":[],"title":"right","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/right","role":"symbol"},"doc://codeedittextview.CodeEditTextView/s8SendableP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s8SendableP","title":"Swift.Sendable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/zero":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/zero","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/zero","title":"zero","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"zero"},{"text":": ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/init(from:)":{"title":"init(from:)","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"text":"from","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:s7DecoderP","text":"Decoder"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/init(from:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(from:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/SQ":{"title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/horizontal":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/horizontal","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/horizontal","title":"horizontal","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"horizontal"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/Se":{"title":"Swift.Decodable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/Se","type":"unresolvable"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/!=(_:_:).json b/data/documentation/codeedittextview/horizontaledgeinsets/!=(_:_:).json
new file mode 100644
index 000000000..54816684a
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/!=(_:_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/!=(_:_:)"]}],"metadata":{"extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView20HorizontalEdgeInsetsV","role":"symbol","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"!=(_:_:)","symbolKind":"op"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/!=(_:_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/!=(_:_:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/!=(_:_:)","abstract":[],"role":"symbol","title":"!=(_:_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/+(_:).json b/data/documentation/codeedittextview/horizontaledgeinsets/+(_:).json
new file mode 100644
index 000000000..01f5ec641
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/+(_:).json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"code":"AdditiveArithmetic.+(_:)","type":"codeVoice"},{"text":".","type":"text"}],"metadata":{"fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"+"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}],"extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"+(_:)","role":"symbol","externalID":"s:s18AdditiveArithmeticPsE1popyxxFZ::SYNTHESIZED::s:16CodeEditTextView20HorizontalEdgeInsetsV","roleHeading":"Operator","symbolKind":"op"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"+","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"internalParam","text":"x"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/+(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/+(_:)":{"title":"+(_:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/+(_:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"+"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/+(_:_:).json b/data/documentation/codeedittextview/horizontaledgeinsets/+(_:_:).json
new file mode 100644
index 000000000..bb80f0e4f
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/+(_:_:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"AdditiveArithmetic.+(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"+","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"},{"text":") -> ","kind":"text"},{"text":"HorizontalEdgeInsets","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","kind":"typeIdentifier"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/+(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"metadata":{"title":"+(_:_:)","roleHeading":"Operator","externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV1poiyA2C_ACtFZ","symbolKind":"op","modules":[{"name":"CodeEditTextView"}],"role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"+","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/+(_:_:)":{"abstract":[],"kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/+(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"+"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","kind":"typeIdentifier","text":"HorizontalEdgeInsets"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"title":"+(_:_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/+=(_:_:).json b/data/documentation/codeedittextview/horizontaledgeinsets/+=(_:_:).json
new file mode 100644
index 000000000..24f5471e5
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/+=(_:_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/+=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+=(_:_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"AdditiveArithmetic.+=(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"title":"+=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"+="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":")","kind":"text"}],"externalID":"s:s18AdditiveArithmeticPsE2peoiyyxz_xtFZ::SYNTHESIZED::s:16CodeEditTextView20HorizontalEdgeInsetsV","extendedModule":"Swift","symbolKind":"op","roleHeading":"Operator","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"+="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":")","kind":"text"}],"languages":["swift"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/+=(_:_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+=(_:_:)","role":"symbol","abstract":[],"type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/+=(_:_:)","title":"+=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"+="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":")"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/-(_:_:).json b/data/documentation/codeedittextview/horizontaledgeinsets/-(_:_:).json
new file mode 100644
index 000000000..5923a2ebe
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/-(_:_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/-(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"-"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","kind":"typeIdentifier","text":"HorizontalEdgeInsets"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"}]}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"-","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"},{"kind":"text","text":", "},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"},{"kind":"text","text":") -> "},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV1soiyA2C_ACtFZ","symbolKind":"op","title":"-(_:_:)","role":"symbol"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-(_:_:)"},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"AdditiveArithmetic.-(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/-(_:_:)":{"title":"-(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-(_:_:)","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/-(_:_:)","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"-"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"},{"kind":"text","text":", "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/-=(_:_:).json b/data/documentation/codeedittextview/horizontaledgeinsets/-=(_:_:).json
new file mode 100644
index 000000000..9ad479fb8
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/-=(_:_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"-=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"internalParam","text":"lhs"},{"text":": ","kind":"text"},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/-=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-=(_:_:)","interfaceLanguage":"swift"},"metadata":{"symbolKind":"op","roleHeading":"Operator","role":"symbol","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"-=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":")"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:s18AdditiveArithmeticPsE2seoiyyxz_xtFZ::SYNTHESIZED::s:16CodeEditTextView20HorizontalEdgeInsetsV","title":"-=(_:_:)"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"AdditiveArithmetic.-=(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/-=(_:_:)":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-=(_:_:)","role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"-="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":")"}],"type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/-=(_:_:)","title":"-=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/additivearithmetic-implementations.json b/data/documentation/codeedittextview/horizontaledgeinsets/additivearithmetic-implementations.json
new file mode 100644
index 000000000..a20250ed6
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/additivearithmetic-implementations.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"collectionGroup","roleHeading":"API Collection","title":"AdditiveArithmetic Implementations"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/additivearithmetic-implementations"]}],"kind":"article","schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"topicSections":[{"generated":true,"title":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+=(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-=(_:_:)"],"anchor":"Operators"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/AdditiveArithmetic-Implementations","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/+=(_:_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+=(_:_:)","role":"symbol","abstract":[],"type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/+=(_:_:)","title":"+=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"+="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":")"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/-=(_:_:)":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/-=(_:_:)","role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"-="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":")"}],"type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/-=(_:_:)","title":"-=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/+(_:)":{"title":"+(_:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/+(_:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/+(_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"+"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/equatable-implementations.json b/data/documentation/codeedittextview/horizontaledgeinsets/equatable-implementations.json
new file mode 100644
index 000000000..1862317db
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/equatable-implementations.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/Equatable-Implementations","interfaceLanguage":"swift"},"metadata":{"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"article","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"topicSections":[{"title":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/!=(_:_:)"],"generated":true,"anchor":"Operators"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/!=(_:_:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/!=(_:_:)","abstract":[],"role":"symbol","title":"!=(_:_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/horizontal.json b/data/documentation/codeedittextview/horizontaledgeinsets/horizontal.json
new file mode 100644
index 000000000..45eaac277
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/horizontal.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/horizontal"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"horizontal"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/horizontal"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"metadata":{"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"horizontal","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"title":"horizontal","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","role":"symbol","externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV10horizontal14CoreFoundation7CGFloatVvp"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/horizontal":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/horizontal","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/horizontal","title":"horizontal","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"horizontal"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/init(from:).json b/data/documentation/codeedittextview/horizontaledgeinsets/init(from:).json
new file mode 100644
index 000000000..0cfd28c5d
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/init(from:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"text":"from","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"decoder","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Decoder","kind":"typeIdentifier","preciseIdentifier":"s:s7DecoderP"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"}],"platforms":["macOS"]}]}],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Decodable.init(from:)"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/init(from:)"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(from:)"},"metadata":{"externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV4fromACs7Decoder_p_tKcfc","roleHeading":"Initializer","title":"init(from:)","modules":[{"name":"CodeEditTextView"}],"symbolKind":"init","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"from"},{"kind":"text","text":": "},{"preciseIdentifier":"s:s7DecoderP","text":"Decoder","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"}]},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/init(from:)":{"title":"init(from:)","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"text":"from","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:s7DecoderP","text":"Decoder"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/init(from:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(from:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/init(left:right:).json b/data/documentation/codeedittextview/horizontaledgeinsets/init(left:right:).json
new file mode 100644
index 000000000..620ac0d7e
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/init(left:right:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Initializer","symbolKind":"init","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"left"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"right","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV4left5rightAC14CoreFoundation7CGFloatV_AHtcfc","role":"symbol","title":"init(left:right:)","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(left:right:)"},"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"left"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":", "},{"kind":"externalParam","text":"right"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/init(left:right:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/init(left:right:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/init(left:right:)","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"left"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":", "},{"kind":"externalParam","text":"right"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/init(left:right:)","type":"topic","abstract":[],"title":"init(left:right:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/left.json b/data/documentation/codeedittextview/horizontaledgeinsets/left.json
new file mode 100644
index 000000000..1a1a4dd83
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/left.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/left","interfaceLanguage":"swift"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"kind":"symbol","metadata":{"title":"left","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"left","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV4left14CoreFoundation7CGFloatVvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"left"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/left"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/left":{"title":"left","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/left","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/left","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"left"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/right.json b/data/documentation/codeedittextview/horizontaledgeinsets/right.json
new file mode 100644
index 000000000..7d1e7297c
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/right.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"right"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/right"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"right","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"right","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV5right14CoreFoundation7CGFloatVvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/right","interfaceLanguage":"swift"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/right":{"url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/right","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"right"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"type":"topic","abstract":[],"title":"right","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/right","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/horizontaledgeinsets/zero.json b/data/documentation/codeedittextview/horizontaledgeinsets/zero.json
new file mode 100644
index 000000000..1b845df78
--- /dev/null
+++ b/data/documentation/codeedittextview/horizontaledgeinsets/zero.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"]]},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"zero","kind":"identifier"},{"kind":"text","text":": "},{"text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"AdditiveArithmetic.zero","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/horizontaledgeinsets\/zero"]}],"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"zero"},{"text":": ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"externalID":"s:16CodeEditTextView20HorizontalEdgeInsetsV4zeroACvpZ","title":"zero","roleHeading":"Type Property"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/zero"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets/zero":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets\/zero","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/horizontaledgeinsets\/zero","title":"zero","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"zero"},{"text":": ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharactersdelegate.json b/data/documentation/codeedittextview/invisiblecharactersdelegate.json
new file mode 100644
index 000000000..a0d336a6a
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharactersdelegate.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"metadata":{"fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"symbolKind":"protocol","navigatorTitle":[{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"title":"InvisibleCharactersDelegate","externalID":"s:16CodeEditTextView27InvisibleCharactersDelegateP","modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Protocol"},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"InvisibleCharactersDelegate"},{"text":" : AnyObject","kind":"text"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharactersdelegate"]}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/triggerCharacters"],"anchor":"Instance-Properties","generated":true,"title":"Instance Properties"},{"anchor":"Instance-Methods","title":"Instance Methods","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyle(for:at:lineRange:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyleShouldClearCache()"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate/invisibleStyleShouldClearCache()":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyleShouldClearCache()","role":"symbol","kind":"symbol","required":true,"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invisibleStyleShouldClearCache"},{"kind":"text","text":"() -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate\/invisiblestyleshouldclearcache()","title":"invisibleStyleShouldClearCache()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate/invisibleStyle(for:at:lineRange:)":{"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate\/invisiblestyle(for:at:linerange:)","role":"symbol","required":true,"type":"topic","kind":"symbol","abstract":[],"title":"invisibleStyle(for:at:lineRange:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyle(for:at:lineRange:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invisibleStyle"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"UInt16","kind":"typeIdentifier","preciseIdentifier":"s:s6UInt16V"},{"kind":"text","text":", "},{"kind":"externalParam","text":"at"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"lineRange"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"InvisibleCharacterStyle","preciseIdentifier":"s:16CodeEditTextView23InvisibleCharacterStyleO","kind":"typeIdentifier"},{"kind":"text","text":"?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate/triggerCharacters":{"role":"symbol","title":"triggerCharacters","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/triggerCharacters","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"triggerCharacters","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sh","text":"Set","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"UInt16","preciseIdentifier":"s:s6UInt16V"},{"kind":"text","text":">"}],"abstract":[],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate\/triggercharacters","required":true,"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyle(for:at:linerange:).json b/data/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyle(for:at:linerange:).json
new file mode 100644
index 000000000..17c2c2a0e
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyle(for:at:linerange:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"invisibleStyle","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":" "},{"text":"character","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UInt16","preciseIdentifier":"s:s6UInt16V"},{"kind":"text","text":", "},{"kind":"externalParam","text":"at"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"lineRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":") -> ","kind":"text"},{"text":"InvisibleCharacterStyle","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","preciseIdentifier":"s:16CodeEditTextView23InvisibleCharacterStyleO","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate"]]},"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","required":true,"title":"invisibleStyle(for:at:lineRange:)","roleHeading":"Instance Method","symbolKind":"method","externalID":"s:16CodeEditTextView27InvisibleCharactersDelegateP14invisibleStyle3for2at9lineRangeAA0e9CharacterI0OSgs6UInt16V_So8_NSRangeVANtF","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"invisibleStyle","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"UInt16","kind":"typeIdentifier","preciseIdentifier":"s:s6UInt16V"},{"kind":"text","text":", "},{"text":"at","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"lineRange"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView23InvisibleCharacterStyleO","text":"InvisibleCharacterStyle","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyle(for:at:lineRange:)","interfaceLanguage":"swift"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharactersdelegate\/invisiblestyle(for:at:linerange:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","navigatorTitle":[{"text":"InvisibleCharacterStyle","kind":"identifier"}],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate/invisibleStyle(for:at:lineRange:)":{"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate\/invisiblestyle(for:at:linerange:)","role":"symbol","required":true,"type":"topic","kind":"symbol","abstract":[],"title":"invisibleStyle(for:at:lineRange:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyle(for:at:lineRange:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invisibleStyle"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"UInt16","kind":"typeIdentifier","preciseIdentifier":"s:s6UInt16V"},{"kind":"text","text":", "},{"kind":"externalParam","text":"at"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"lineRange"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"InvisibleCharacterStyle","preciseIdentifier":"s:16CodeEditTextView23InvisibleCharacterStyleO","kind":"typeIdentifier"},{"kind":"text","text":"?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyleshouldclearcache().json b/data/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyleshouldclearcache().json
new file mode 100644
index 000000000..0e2a8ac9c
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyleshouldclearcache().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharactersdelegate\/invisiblestyleshouldclearcache()"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyleShouldClearCache()"},"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invisibleStyleShouldClearCache"},{"kind":"text","text":"() -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"platforms":["macOS"]}]}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"invisibleStyleShouldClearCache"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"required":true,"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView27InvisibleCharactersDelegateP30invisibleStyleShouldClearCacheSbyF","title":"invisibleStyleShouldClearCache()"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate/invisibleStyleShouldClearCache()":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/invisibleStyleShouldClearCache()","role":"symbol","kind":"symbol","required":true,"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invisibleStyleShouldClearCache"},{"kind":"text","text":"() -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate\/invisiblestyleshouldclearcache()","title":"invisibleStyleShouldClearCache()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharactersdelegate/triggercharacters.json b/data/documentation/codeedittextview/invisiblecharactersdelegate/triggercharacters.json
new file mode 100644
index 000000000..6f23d6c2b
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharactersdelegate/triggercharacters.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharactersdelegate\/triggercharacters"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/triggerCharacters"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"triggerCharacters","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sh","kind":"typeIdentifier","text":"Set"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s6UInt16V","text":"UInt16","kind":"typeIdentifier"},{"text":"> { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}]}],"metadata":{"required":true,"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"triggerCharacters"},{"text":": ","kind":"text"},{"text":"Set","kind":"typeIdentifier","preciseIdentifier":"s:Sh"},{"text":"<","kind":"text"},{"text":"UInt16","kind":"typeIdentifier","preciseIdentifier":"s:s6UInt16V"},{"text":">","kind":"text"}],"externalID":"s:16CodeEditTextView27InvisibleCharactersDelegateP07triggerF0Shys6UInt16VGvp","role":"symbol","title":"triggerCharacters","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate/triggerCharacters":{"role":"symbol","title":"triggerCharacters","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate\/triggerCharacters","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"triggerCharacters","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sh","text":"Set","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"UInt16","preciseIdentifier":"s:s6UInt16V"},{"kind":"text","text":">"}],"abstract":[],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate\/triggercharacters","required":true,"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharacterstyle.json b/data/documentation/codeedittextview/invisiblecharacterstyle.json
new file mode 100644
index 000000000..3c844e334
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharacterstyle.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharacterstyle"]}],"relationshipsSections":[{"type":"conformsTo","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"kind":"relationships","title":"Conforms To"}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"topicSections":[{"generated":true,"title":"Enumeration Cases","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/emphasize(color:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/replace(replacementCharacter:color:font:)"],"anchor":"Enumeration-Cases"},{"title":"Default Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/Equatable-Implementations"],"anchor":"Default-Implementations","generated":true}],"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"InvisibleCharacterStyle"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"metadata":{"modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle","role":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"externalID":"s:16CodeEditTextView23InvisibleCharacterStyleO","roleHeading":"Enumeration","symbolKind":"enum"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/SH":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","title":"Swift.Hashable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/SQ":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","title":"Swift.Equatable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","navigatorTitle":[{"text":"InvisibleCharacterStyle","kind":"identifier"}],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle/Equatable-Implementations":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/Equatable-Implementations","type":"topic","role":"collectionGroup","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle\/equatable-implementations","kind":"article","title":"Equatable Implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle/replace(replacementCharacter:color:font:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/replace(replacementCharacter:color:font:)","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle\/replace(replacementcharacter:color:font:)","title":"InvisibleCharacterStyle.replace(replacementCharacter:color:font:)","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"replace","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"replacementCharacter"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":", "},{"kind":"externalParam","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"},{"kind":"text","text":", "},{"kind":"externalParam","text":"font"},{"kind":"text","text":": "},{"text":"NSFont","preciseIdentifier":"c:objc(cs)NSFont","kind":"typeIdentifier"},{"text":")","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle/emphasize(color:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/emphasize(color:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle\/emphasize(color:)","kind":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"emphasize"},{"kind":"text","text":"("},{"kind":"externalParam","text":"color"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor"},{"kind":"text","text":")"}],"title":"InvisibleCharacterStyle.emphasize(color:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharacterstyle/!=(_:_:).json b/data/documentation/codeedittextview/invisiblecharacterstyle/!=(_:_:).json
new file mode 100644
index 000000000..228bceea7
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharacterstyle/!=(_:_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharacterstyle\/!=(_:_:)"]}],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"text":".","type":"text"}],"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle"]]},"metadata":{"fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","extendedModule":"Swift","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView23InvisibleCharacterStyleO","title":"!=(_:_:)","symbolKind":"op","roleHeading":"Operator"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/!=(_:_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","navigatorTitle":[{"text":"InvisibleCharacterStyle","kind":"identifier"}],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle/!=(_:_:)":{"abstract":[],"title":"!=(_:_:)","type":"topic","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle\/!=(_:_:)","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharacterstyle/emphasize(color:).json b/data/documentation/codeedittextview/invisiblecharacterstyle/emphasize(color:).json
new file mode 100644
index 000000000..60edf403f
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharacterstyle/emphasize(color:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/emphasize(color:)","interfaceLanguage":"swift"},"metadata":{"externalID":"s:16CodeEditTextView23InvisibleCharacterStyleO9emphasizeyACSo7NSColorC_tcACmF","title":"InvisibleCharacterStyle.emphasize(color:)","modules":[{"name":"CodeEditTextView"}],"symbolKind":"case","role":"symbol","roleHeading":"Case","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"emphasize"},{"kind":"text","text":"("},{"text":"color","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"},{"text":")","kind":"text"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharacterstyle\/emphasize(color:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"emphasize","kind":"identifier"},{"text":"(","kind":"text"},{"text":"color","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor","kind":"typeIdentifier"},{"text":")","kind":"text"}]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle/emphasize(color:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/emphasize(color:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle\/emphasize(color:)","kind":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"emphasize"},{"kind":"text","text":"("},{"kind":"externalParam","text":"color"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor"},{"kind":"text","text":")"}],"title":"InvisibleCharacterStyle.emphasize(color:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","navigatorTitle":[{"text":"InvisibleCharacterStyle","kind":"identifier"}],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharacterstyle/equatable-implementations.json b/data/documentation/codeedittextview/invisiblecharacterstyle/equatable-implementations.json
new file mode 100644
index 000000000..bebffa144
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharacterstyle/equatable-implementations.json
@@ -0,0 +1 @@
+{"sections":[],"kind":"article","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/Equatable-Implementations"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle"]]},"topicSections":[{"title":"Operators","anchor":"Operators","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/!=(_:_:)"]}],"variants":[{"paths":["\/documentation\/codeedittextview\/invisiblecharacterstyle\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"API Collection","title":"Equatable Implementations","role":"collectionGroup"},"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle/!=(_:_:)":{"abstract":[],"title":"!=(_:_:)","type":"topic","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle\/!=(_:_:)","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","navigatorTitle":[{"text":"InvisibleCharacterStyle","kind":"identifier"}],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/invisiblecharacterstyle/replace(replacementcharacter:color:font:).json b/data/documentation/codeedittextview/invisiblecharacterstyle/replace(replacementcharacter:color:font:).json
new file mode 100644
index 000000000..df9287b33
--- /dev/null
+++ b/data/documentation/codeedittextview/invisiblecharacterstyle/replace(replacementcharacter:color:font:).json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/invisiblecharacterstyle\/replace(replacementcharacter:color:font:)"]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/replace(replacementCharacter:color:font:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle"]]},"metadata":{"fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"replace","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"replacementCharacter"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"color","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"},{"text":", ","kind":"text"},{"text":"font","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSFont","kind":"typeIdentifier","text":"NSFont"},{"kind":"text","text":")"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView23InvisibleCharacterStyleO7replaceyACSS_So7NSColorCSo6NSFontCtcACmF","title":"InvisibleCharacterStyle.replace(replacementCharacter:color:font:)","roleHeading":"Case","symbolKind":"case","role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"replace","kind":"identifier"},{"text":"(","kind":"text"},{"text":"replacementCharacter","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"color","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"font"},{"text":": ","kind":"text"},{"text":"NSFont","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont"},{"kind":"text","text":")"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle/replace(replacementCharacter:color:font:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle\/replace(replacementCharacter:color:font:)","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle\/replace(replacementcharacter:color:font:)","title":"InvisibleCharacterStyle.replace(replacementCharacter:color:font:)","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"replace","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"replacementCharacter"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":", "},{"kind":"externalParam","text":"color"},{"kind":"text","text":": "},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"},{"kind":"text","text":", "},{"kind":"externalParam","text":"font"},{"kind":"text","text":": "},{"text":"NSFont","preciseIdentifier":"c:objc(cs)NSFont","kind":"typeIdentifier"},{"text":")","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharacterStyle":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharacterStyle","navigatorTitle":[{"text":"InvisibleCharacterStyle","kind":"identifier"}],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/invisiblecharacterstyle","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"InvisibleCharacterStyle"}],"title":"InvisibleCharacterStyle"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linebreakstrategy.json b/data/documentation/codeedittextview/linebreakstrategy.json
new file mode 100644
index 000000000..ee7258713
--- /dev/null
+++ b/data/documentation/codeedittextview/linebreakstrategy.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/linebreakstrategy"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"abstract":[{"text":"Options for breaking lines when they cannot fit in the viewport.","type":"text"}],"metadata":{"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"roleHeading":"Enumeration","modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"kind":"identifier","text":"LineBreakStrategy"}],"externalID":"s:16CodeEditTextView17LineBreakStrategyO","title":"LineBreakStrategy","symbolKind":"enum","role":"symbol"},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/character","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word"],"title":"Enumeration Cases","generated":true,"anchor":"Enumeration-Cases"},{"title":"Default Implementations","generated":true,"anchor":"Default-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/Equatable-Implementations"]}],"relationshipsSections":[{"type":"conformsTo","title":"Conforms To","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"kind":"relationships"}],"seeAlsoSections":[{"generated":true,"title":"Supporting Types","anchor":"Supporting-Types","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"LineBreakStrategy","kind":"identifier"}],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/word":{"abstract":[{"type":"text","text":"Break lines at word boundaries when possible."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/word","kind":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"title":"LineBreakStrategy.word"},"doc://codeedittextview.CodeEditTextView/SH":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","title":"Swift.Hashable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/character":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/character","kind":"symbol","abstract":[{"type":"text","text":"Break lines at the nearest character, regardless of grouping."}],"title":"LineBreakStrategy.character","role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"character","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/linebreakstrategy\/character"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/SQ":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","title":"Swift.Equatable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/Equatable-Implementations":{"title":"Equatable Implementations","url":"\/documentation\/codeedittextview\/linebreakstrategy\/equatable-implementations","role":"collectionGroup","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/Equatable-Implementations","abstract":[],"kind":"article"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linebreakstrategy/!=(_:_:).json b/data/documentation/codeedittextview/linebreakstrategy/!=(_:_:).json
new file mode 100644
index 000000000..f259f9274
--- /dev/null
+++ b/data/documentation/codeedittextview/linebreakstrategy/!=(_:_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linebreakstrategy\/!=(_:_:)"]}],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"extendedModule":"Swift","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView17LineBreakStrategyO","title":"!=(_:_:)","symbolKind":"op"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"]]},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"internalParam","text":"lhs"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/!=(_:_:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/!=(_:_:)":{"kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/!=(_:_:)","type":"topic","title":"!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linebreakstrategy/character.json b/data/documentation/codeedittextview/linebreakstrategy/character.json
new file mode 100644
index 000000000..4e7867326
--- /dev/null
+++ b/data/documentation/codeedittextview/linebreakstrategy/character.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"character","kind":"identifier"}]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/character","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linebreakstrategy\/character"]}],"abstract":[{"type":"text","text":"Break lines at the nearest character, regardless of grouping."}],"metadata":{"roleHeading":"Case","role":"symbol","externalID":"s:16CodeEditTextView17LineBreakStrategyO9characteryA2CmF","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"character"}],"title":"LineBreakStrategy.character","symbolKind":"case"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/character":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/character","kind":"symbol","abstract":[{"type":"text","text":"Break lines at the nearest character, regardless of grouping."}],"title":"LineBreakStrategy.character","role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"character","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/linebreakstrategy\/character"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linebreakstrategy/equatable-implementations.json b/data/documentation/codeedittextview/linebreakstrategy/equatable-implementations.json
new file mode 100644
index 000000000..9107815a5
--- /dev/null
+++ b/data/documentation/codeedittextview/linebreakstrategy/equatable-implementations.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/Equatable-Implementations","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linebreakstrategy\/equatable-implementations"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"]]},"topicSections":[{"title":"Operators","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/!=(_:_:)"],"anchor":"Operators"}],"metadata":{"role":"collectionGroup","roleHeading":"API Collection","title":"Equatable Implementations","modules":[{"name":"CodeEditTextView"}]},"sections":[],"kind":"article","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/!=(_:_:)":{"kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/!=(_:_:)","type":"topic","title":"!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linebreakstrategy/word.json b/data/documentation/codeedittextview/linebreakstrategy/word.json
new file mode 100644
index 000000000..32e898280
--- /dev/null
+++ b/data/documentation/codeedittextview/linebreakstrategy/word.json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"case","roleHeading":"Case","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView17LineBreakStrategyO4wordyA2CmF","title":"LineBreakStrategy.word"},"sections":[],"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"text":"Break lines at word boundaries when possible.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linebreakstrategy\/word"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/word":{"abstract":[{"type":"text","text":"Break lines at word boundaries when possible."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/word","kind":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"title":"LineBreakStrategy.word"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending.json b/data/documentation/codeedittextview/lineending.json
new file mode 100644
index 000000000..945399ed3
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending.json
@@ -0,0 +1 @@
+{"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/s12CaseIterableP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH","doc:\/\/codeedittextview.CodeEditTextView\/SY"],"kind":"relationships","type":"conformsTo","title":"Conforms To"}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturn","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturnLineFeed","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/lineFeed"],"title":"Enumeration Cases","generated":true,"anchor":"Enumeration-Cases"},{"generated":true,"anchor":"Initializers","title":"Initializers","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(line:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(rawValue:)"]},{"anchor":"Instance-Properties","title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/length"],"generated":true},{"anchor":"Type-Methods","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/detectLineEnding(lineStorage:textStorage:)"],"title":"Type Methods"},{"title":"Default Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/Equatable-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/RawRepresentable-Implementations"],"generated":true,"anchor":"Default-Implementations"}],"kind":"symbol","schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"enum","externalID":"s:16CodeEditTextView10LineEndingO","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"text":"LineEnding","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"roleHeading":"Enumeration","title":"LineEnding"},"seeAlsoSections":[{"title":"Supporting Types","anchor":"Supporting-Types","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"],"generated":true}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"},"variants":[{"paths":["\/documentation\/codeedittextview\/lineending"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/SY":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SY","title":"Swift.RawRepresentable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/detectLineEnding(lineStorage:textStorage:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/detectLineEnding(lineStorage:textStorage:)","type":"topic","abstract":[{"type":"text","text":"Attempts to detect the line ending from a line storage."}],"kind":"symbol","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"detectLineEnding","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"lineStorage"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">, ","kind":"text"},{"kind":"externalParam","text":"textStorage"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"LineEnding","preciseIdentifier":"s:16CodeEditTextView10LineEndingO"}],"title":"detectLineEnding(lineStorage:textStorage:)","url":"\/documentation\/codeedittextview\/lineending\/detectlineending(linestorage:textstorage:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/lineFeed":{"type":"topic","abstract":[{"type":"text","text":"The default unix "},{"type":"codeVoice","code":"\\n"},{"text":" character","type":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/lineFeed","url":"\/documentation\/codeedittextview\/lineending\/linefeed","title":"LineEnding.lineFeed","kind":"symbol","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"lineFeed","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/carriageReturnLineFeed":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturnLineFeed","role":"symbol","url":"\/documentation\/codeedittextview\/lineending\/carriagereturnlinefeed","title":"LineEnding.carriageReturnLineFeed","type":"topic","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"carriageReturnLineFeed","kind":"identifier"}],"abstract":[{"text":"Windows line ending sequence ","type":"text"},{"code":"\\r\\n","type":"codeVoice"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/carriageReturn":{"title":"LineEnding.carriageReturn","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturn","url":"\/documentation\/codeedittextview\/lineending\/carriagereturn","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"kind":"identifier","text":"carriageReturn"}],"type":"topic","abstract":[{"text":"MacOS line ending ","type":"text"},{"type":"codeVoice","code":"\\r"},{"text":" character","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/length":{"role":"symbol","url":"\/documentation\/codeedittextview\/lineending\/length","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/length","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"length","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"abstract":[{"text":"The UTF-16 Length of the line ending.","type":"text"}],"title":"length"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/Equatable-Implementations":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/Equatable-Implementations","abstract":[],"kind":"article","url":"\/documentation\/codeedittextview\/lineending\/equatable-implementations","title":"Equatable Implementations","role":"collectionGroup"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/init(rawValue:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/lineending\/init(rawvalue:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(rawValue:)","fragments":[{"kind":"identifier","text":"init"},{"text":"?(","kind":"text"},{"text":"rawValue","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"init(rawValue:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/RawRepresentable-Implementations":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/RawRepresentable-Implementations","type":"topic","abstract":[],"kind":"article","role":"collectionGroup","title":"RawRepresentable Implementations","url":"\/documentation\/codeedittextview\/lineending\/rawrepresentable-implementations"},"doc://codeedittextview.CodeEditTextView/s12CaseIterableP":{"type":"unresolvable","title":"Swift.CaseIterable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s12CaseIterableP"},"doc://codeedittextview.CodeEditTextView/SH":{"type":"unresolvable","title":"Swift.Hashable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/init(line:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/lineending\/init(line:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(line:)","title":"init(line:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Initialize a line ending from a line string."}],"fragments":[{"text":"init","kind":"identifier"},{"text":"?(","kind":"text"},{"text":"line","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":")","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/!=(_:_:).json b/data/documentation/codeedittextview/lineending/!=(_:_:).json
new file mode 100644
index 000000000..b29770a74
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/!=(_:_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"internalParam","text":"lhs"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]}],"kind":"declarations"}],"sections":[],"metadata":{"title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView10LineEndingO","extendedModule":"Swift","symbolKind":"op","roleHeading":"Operator","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/!=(_:_:)"]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"text":".","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/!=(_:_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/!=(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/!=(_:_:)","kind":"symbol","role":"symbol","title":"!=(_:_:)","url":"\/documentation\/codeedittextview\/lineending\/!=(_:_:)","type":"topic","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/carriagereturn.json b/data/documentation/codeedittextview/lineending/carriagereturn.json
new file mode 100644
index 000000000..3ef5fd0e5
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/carriagereturn.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/carriagereturn"]}],"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"carriageReturn"}],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturn"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"kind":"symbol","metadata":{"title":"LineEnding.carriageReturn","symbolKind":"case","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Case","externalID":"s:16CodeEditTextView10LineEndingO14carriageReturnyA2CmF","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"carriageReturn","kind":"identifier"}]},"abstract":[{"text":"MacOS line ending ","type":"text"},{"type":"codeVoice","code":"\\r"},{"text":" character","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/carriageReturn":{"title":"LineEnding.carriageReturn","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturn","url":"\/documentation\/codeedittextview\/lineending\/carriagereturn","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"kind":"identifier","text":"carriageReturn"}],"type":"topic","abstract":[{"text":"MacOS line ending ","type":"text"},{"type":"codeVoice","code":"\\r"},{"text":" character","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/carriagereturnlinefeed.json b/data/documentation/codeedittextview/lineending/carriagereturnlinefeed.json
new file mode 100644
index 000000000..d7ee2371e
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/carriagereturnlinefeed.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/lineending\/carriagereturnlinefeed"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"carriageReturnLineFeed","kind":"identifier"}],"platforms":["macOS"]}]}],"metadata":{"roleHeading":"Case","externalID":"s:16CodeEditTextView10LineEndingO014carriageReturnE4FeedyA2CmF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"LineEnding.carriageReturnLineFeed","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"carriageReturnLineFeed","kind":"identifier"}],"symbolKind":"case"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturnLineFeed","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"text":"Windows line ending sequence ","type":"text"},{"type":"codeVoice","code":"\\r\\n"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/carriageReturnLineFeed":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/carriageReturnLineFeed","role":"symbol","url":"\/documentation\/codeedittextview\/lineending\/carriagereturnlinefeed","title":"LineEnding.carriageReturnLineFeed","type":"topic","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"carriageReturnLineFeed","kind":"identifier"}],"abstract":[{"text":"Windows line ending sequence ","type":"text"},{"code":"\\r\\n","type":"codeVoice"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/detectlineending(linestorage:textstorage:).json b/data/documentation/codeedittextview/lineending/detectlineending(linestorage:textstorage:).json
new file mode 100644
index 000000000..44a782fed
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/detectlineending(linestorage:textstorage:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"detectLineEnding(lineStorage:textStorage:)","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"detectLineEnding"},{"kind":"text","text":"("},{"text":"lineStorage","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextLineStorage","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":">, ","kind":"text"},{"text":"textStorage","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView10LineEndingO","text":"LineEnding","kind":"typeIdentifier"}],"externalID":"s:16CodeEditTextView10LineEndingO06detecteF011lineStorage04textI0AcA0ceI0CyAA0cE0CG_So06NSTextI0CtFZ","symbolKind":"method","roleHeading":"Type Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"detectLineEnding"},{"text":"(","kind":"text"},{"text":"lineStorage","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"kind":"text","text":"<"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">, ","kind":"text"},{"text":"textStorage","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":") -> "},{"text":"LineEnding","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","preciseIdentifier":"s:16CodeEditTextView10LineEndingO","kind":"typeIdentifier"}],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The line storage to enumerate.","type":"text"}]}],"name":"lineStorage"}]},{"kind":"content","content":[{"type":"heading","text":"Return Value","level":2,"anchor":"return-value"},{"inlineContent":[{"text":"A line ending. Defaults to ","type":"text"},{"type":"codeVoice","code":".lf"},{"type":"text","text":" if none could be found."}],"type":"paragraph"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/detectLineEnding(lineStorage:textStorage:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/detectlineending(linestorage:textstorage:)"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"abstract":[{"type":"text","text":"Attempts to detect the line ending from a line storage."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/detectLineEnding(lineStorage:textStorage:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/detectLineEnding(lineStorage:textStorage:)","type":"topic","abstract":[{"type":"text","text":"Attempts to detect the line ending from a line storage."}],"kind":"symbol","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"detectLineEnding","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"lineStorage"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">, ","kind":"text"},{"kind":"externalParam","text":"textStorage"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"LineEnding","preciseIdentifier":"s:16CodeEditTextView10LineEndingO"}],"title":"detectLineEnding(lineStorage:textStorage:)","url":"\/documentation\/codeedittextview\/lineending\/detectlineending(linestorage:textstorage:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/equatable-implementations.json b/data/documentation/codeedittextview/lineending/equatable-implementations.json
new file mode 100644
index 000000000..04a7226cb
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/equatable-implementations.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/Equatable-Implementations"},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/equatable-implementations"]}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/!=(_:_:)"],"generated":true,"anchor":"Operators","title":"Operators"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"Equatable Implementations","roleHeading":"API Collection","role":"collectionGroup"},"kind":"article","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/!=(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/!=(_:_:)","kind":"symbol","role":"symbol","title":"!=(_:_:)","url":"\/documentation\/codeedittextview\/lineending\/!=(_:_:)","type":"topic","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/hash(into:).json b/data/documentation/codeedittextview/lineending/hash(into:).json
new file mode 100644
index 000000000..bc0ab3160
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/hash(into:).json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"hash(into:)","role":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Hashable"},{"type":"text","text":" and "},{"code":"RawValue","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Hashable"},{"text":".","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"extendedModule":"Swift","externalID":"s:SYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF::SYNTHESIZED::s:16CodeEditTextView10LineEndingO","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"hash","kind":"identifier"},{"kind":"text","text":"("},{"text":"into","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"Hasher","kind":"typeIdentifier","preciseIdentifier":"s:s6HasherV"},{"text":")","kind":"text"}],"symbolKind":"method"},"sections":[],"kind":"symbol","schemaVersion":{"patch":0,"minor":3,"major":0},"abstract":[{"type":"text","text":"Inherited from "},{"code":"RawRepresentable.hash(into:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"hash"},{"kind":"text","text":"("},{"kind":"externalParam","text":"into"},{"kind":"text","text":" "},{"text":"hasher","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Hasher","kind":"typeIdentifier","preciseIdentifier":"s:s6HasherV"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/hash(into:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hash(into:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/hash(into:)":{"url":"\/documentation\/codeedittextview\/lineending\/hash(into:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hash(into:)","abstract":[],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"hash"},{"kind":"text","text":"("},{"kind":"externalParam","text":"into"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"preciseIdentifier":"s:s6HasherV","kind":"typeIdentifier","text":"Hasher"},{"kind":"text","text":")"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"text":" and ","type":"text"},{"code":"RawValue","type":"codeVoice"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"text":".","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"title":"hash(into:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/hashvalue.json b/data/documentation/codeedittextview/lineending/hashvalue.json
new file mode 100644
index 000000000..c7982012d
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/hashvalue.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hashValue"},"metadata":{"externalID":"s:SYsSHRzSH8RawValueSYRpzrlE04hashB0Sivp::SYNTHESIZED::s:16CodeEditTextView10LineEndingO","roleHeading":"Instance Property","title":"hashValue","extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"code":"Self","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Hashable","type":"codeVoice"},{"text":" and ","type":"text"},{"code":"RawValue","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Hashable"},{"text":".","type":"text"}]},"symbolKind":"property","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"hashValue","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}]},"schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"RawRepresentable.hashValue"},{"type":"text","text":"."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/hashvalue"]}],"kind":"symbol","sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"hashValue","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/hashValue":{"url":"\/documentation\/codeedittextview\/lineending\/hashvalue","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hashValue","abstract":[],"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hashValue","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"type":"text","text":" and "},{"type":"codeVoice","code":"RawValue"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"text":".","type":"text"}]},"title":"hashValue","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/init(line:).json b/data/documentation/codeedittextview/lineending/init(line:).json
new file mode 100644
index 000000000..2b536e6ff
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/init(line:).json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"init","kind":"keyword"},{"text":"?(","kind":"text"},{"kind":"externalParam","text":"line"},{"kind":"text","text":": "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"text":"The line to use","type":"text"}],"type":"paragraph"}],"name":"line"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(line:)"},"sections":[],"metadata":{"roleHeading":"Initializer","symbolKind":"init","fragments":[{"text":"init","kind":"identifier"},{"text":"?(","kind":"text"},{"text":"line","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView10LineEndingO4lineACSgSS_tcfc","role":"symbol","title":"init(line:)","modules":[{"name":"CodeEditTextView"}]},"abstract":[{"text":"Initialize a line ending from a line string.","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/lineending\/init(line:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/init(line:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/lineending\/init(line:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(line:)","title":"init(line:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Initialize a line ending from a line string."}],"fragments":[{"text":"init","kind":"identifier"},{"text":"?(","kind":"text"},{"text":"line","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":")","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/init(rawvalue:).json b/data/documentation/codeedittextview/lineending/init(rawvalue:).json
new file mode 100644
index 000000000..1f36fea30
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/init(rawvalue:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/init(rawvalue:)"]}],"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"RawRepresentable.init(rawValue:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"init"},{"text":"?(","kind":"text"},{"kind":"externalParam","text":"rawValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"kind":"text","text":")"}],"platforms":["macOS"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(rawValue:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"kind":"symbol","metadata":{"title":"init(rawValue:)","role":"symbol","roleHeading":"Initializer","symbolKind":"init","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"?("},{"text":"rawValue","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":")"}],"externalID":"s:16CodeEditTextView10LineEndingO8rawValueACSgSS_tcfc"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/init(rawValue:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/lineending\/init(rawvalue:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/init(rawValue:)","fragments":[{"kind":"identifier","text":"init"},{"text":"?(","kind":"text"},{"text":"rawValue","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"init(rawValue:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/length.json b/data/documentation/codeedittextview/lineending/length.json
new file mode 100644
index 000000000..e2ae337c0
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/length.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Property","role":"symbol","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"title":"length","externalID":"s:16CodeEditTextView10LineEndingO6lengthSivp","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/length"},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"length","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}]}],"kind":"declarations"}],"abstract":[{"text":"The UTF-16 Length of the line ending.","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/lineending\/length"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/length":{"role":"symbol","url":"\/documentation\/codeedittextview\/lineending\/length","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/length","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"length","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"abstract":[{"text":"The UTF-16 Length of the line ending.","type":"text"}],"title":"length"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/linefeed.json b/data/documentation/codeedittextview/lineending/linefeed.json
new file mode 100644
index 000000000..b30d6a817
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/linefeed.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Case","title":"LineEnding.lineFeed","role":"symbol","symbolKind":"case","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineFeed","kind":"identifier"}],"externalID":"s:16CodeEditTextView10LineEndingO8lineFeedyA2CmF","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"sections":[],"abstract":[{"type":"text","text":"The default unix "},{"type":"codeVoice","code":"\\n"},{"text":" character","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/lineFeed"},"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/lineending\/linefeed"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"lineFeed","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/lineFeed":{"type":"topic","abstract":[{"type":"text","text":"The default unix "},{"type":"codeVoice","code":"\\n"},{"text":" character","type":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/lineFeed","url":"\/documentation\/codeedittextview\/lineending\/linefeed","title":"LineEnding.lineFeed","kind":"symbol","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"lineFeed","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/lineending/rawrepresentable-implementations.json b/data/documentation/codeedittextview/lineending/rawrepresentable-implementations.json
new file mode 100644
index 000000000..1acc4e9eb
--- /dev/null
+++ b/data/documentation/codeedittextview/lineending/rawrepresentable-implementations.json
@@ -0,0 +1 @@
+{"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/RawRepresentable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hashValue"],"generated":true,"title":"Instance Properties","anchor":"Instance-Properties"},{"title":"Instance Methods","generated":true,"anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hash(into:)"]}],"kind":"article","metadata":{"title":"RawRepresentable Implementations","modules":[{"name":"CodeEditTextView"}],"roleHeading":"API Collection","role":"collectionGroup"},"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/lineending\/rawrepresentable-implementations"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/hash(into:)":{"url":"\/documentation\/codeedittextview\/lineending\/hash(into:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hash(into:)","abstract":[],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"hash"},{"kind":"text","text":"("},{"kind":"externalParam","text":"into"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"preciseIdentifier":"s:s6HasherV","kind":"typeIdentifier","text":"Hasher"},{"kind":"text","text":")"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"text":" and ","type":"text"},{"code":"RawValue","type":"codeVoice"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"text":".","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"title":"hash(into:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding/hashValue":{"url":"\/documentation\/codeedittextview\/lineending\/hashvalue","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding\/hashValue","abstract":[],"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hashValue","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"type":"text","text":" and "},{"type":"codeVoice","code":"RawValue"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Hashable"},{"text":".","type":"text"}]},"title":"hashValue","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment.json b/data/documentation/codeedittextview/linefragment.json
new file mode 100644
index 000000000..8934070e7
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment.json
@@ -0,0 +1 @@
+{"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","interfaceLanguage":"swift"},"abstract":[{"text":"A ","type":"text"},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"text":" represents a subrange of characters in a line. Every text line contains at least one line","type":"text"},{"type":"text","text":" "},{"text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment.","type":"text"}],"relationshipsSections":[{"title":"Conforms To","type":"conformsTo","kind":"relationships","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/s12IdentifiableP"]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment"]}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/ContentPosition","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent"],"title":"Structures","generated":true,"anchor":"Structures"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/==(_:_:)"],"generated":true,"title":"Operators","anchor":"Operators"},{"title":"Instance Properties","anchor":"Instance-Properties","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/contents","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/descent","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/documentRange","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/height","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/heightDifference","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/id","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/scaledHeight","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/width"]},{"generated":true,"title":"Default Implementations","anchor":"Default-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/Equatable-Implementations"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"metadata":{"symbolKind":"class","externalID":"s:16CodeEditTextView12LineFragmentC","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragment"}],"title":"LineFragment","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"roleHeading":"Class","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"final"},{"text":" ","kind":"text"},{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineFragment","kind":"identifier"}],"languages":["swift"]}]}],"seeAlsoSections":[{"anchor":"Text-Layout","title":"Text Layout","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"],"generated":true}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/contents":{"role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/contents","url":"\/documentation\/codeedittextview\/linefragment\/contents","abstract":[],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"contents","kind":"identifier"},{"text":": [","kind":"text"},{"text":"FragmentContent","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV"},{"kind":"text","text":"]"}],"title":"contents","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/documentRange":{"kind":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/documentrange","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/documentRange","abstract":[],"title":"documentRange","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"documentRange","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}],"role":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/Equatable-Implementations":{"abstract":[],"role":"collectionGroup","url":"\/documentation\/codeedittextview\/linefragment\/equatable-implementations","type":"topic","kind":"article","title":"Equatable Implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/Equatable-Implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/width":{"url":"\/documentation\/codeedittextview\/linefragment\/width","abstract":[],"kind":"symbol","title":"width","role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"width","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/width"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/==(_:_:)":{"abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"==","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/linefragment\/==(_:_:)","type":"topic","kind":"symbol","title":"==(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/==(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/scaledHeight":{"url":"\/documentation\/codeedittextview\/linefragment\/scaledheight","abstract":[],"kind":"symbol","title":"scaledHeight","role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"scaledHeight","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/scaledHeight"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/ContentPosition":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/ContentPosition","url":"\/documentation\/codeedittextview\/linefragment\/contentposition","role":"symbol","abstract":[],"kind":"symbol","title":"LineFragment.ContentPosition","navigatorTitle":[{"text":"ContentPosition","kind":"identifier"}],"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"ContentPosition","kind":"identifier"}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/SQ":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","title":"Swift.Equatable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/height":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/height","url":"\/documentation\/codeedittextview\/linefragment\/height","role":"symbol","abstract":[],"kind":"symbol","title":"height","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/s12IdentifiableP":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s12IdentifiableP","title":"Swift.Identifiable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/id":{"title":"id","url":"\/documentation\/codeedittextview\/linefragment\/id","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/id","abstract":[],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation4UUIDV","kind":"typeIdentifier","text":"UUID"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/heightDifference":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/heightDifference","url":"\/documentation\/codeedittextview\/linefragment\/heightdifference","title":"heightDifference","abstract":[{"text":"The difference between the real text height and the scaled height","type":"text"}],"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"heightDifference","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/descent":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"descent","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/descent","abstract":[],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/descent","title":"descent","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/!=(_:_:).json b/data/documentation/codeedittextview/linefragment/!=(_:_:).json
new file mode 100644
index 000000000..a49161061
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/!=(_:_:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"symbolKind":"op","roleHeading":"Operator","role":"symbol","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView12LineFragmentC","title":"!=(_:_:)"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/!=(_:_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/!=(_:_:)"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/!=(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/!=(_:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/!=(_:_:)","kind":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"!=(_:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/==(_:_:).json b/data/documentation/codeedittextview/linefragment/==(_:_:).json
new file mode 100644
index 000000000..417806df5
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/==(_:_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/==(_:_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/==(_:_:)","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"typeIdentifier","text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"LineFragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"platforms":["macOS"]}],"kind":"declarations"}],"metadata":{"externalID":"s:16CodeEditTextView12LineFragmentC2eeoiySbAC_ACtFZ","title":"==(_:_:)","modules":[{"name":"CodeEditTextView"}],"symbolKind":"op","role":"symbol","roleHeading":"Operator","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier","text":"LineFragment"},{"text":", ","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/==(_:_:)":{"abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"==","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/linefragment\/==(_:_:)","type":"topic","kind":"symbol","title":"==(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/==(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/contentposition.json b/data/documentation/codeedittextview/linefragment/contentposition.json
new file mode 100644
index 000000000..b67c76fcd
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/contentposition.json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"struct","externalID":"s:16CodeEditTextView12LineFragmentC15ContentPositionV","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"ContentPosition"}],"title":"LineFragment.ContentPosition","navigatorTitle":[{"text":"ContentPosition","kind":"identifier"}],"roleHeading":"Structure","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/ContentPosition","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"ContentPosition"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/contentposition"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/ContentPosition":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/ContentPosition","url":"\/documentation\/codeedittextview\/linefragment\/contentposition","role":"symbol","abstract":[],"kind":"symbol","title":"LineFragment.ContentPosition","navigatorTitle":[{"text":"ContentPosition","kind":"identifier"}],"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"ContentPosition","kind":"identifier"}],"type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/contents.json b/data/documentation/codeedittextview/linefragment/contents.json
new file mode 100644
index 000000000..f5875de66
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/contents.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"contents","kind":"identifier"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"FragmentContent","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV"},{"kind":"text","text":"]"}],"externalID":"s:16CodeEditTextView12LineFragmentC8contentsSayAC0F7ContentVGvp","role":"symbol","title":"contents","modules":[{"name":"CodeEditTextView"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/contents"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"contents"},{"text":": [","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","text":"FragmentContent","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/contents","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/contents":{"role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/contents","url":"\/documentation\/codeedittextview\/linefragment\/contents","abstract":[],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"contents","kind":"identifier"},{"text":": [","kind":"text"},{"text":"FragmentContent","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV"},{"kind":"text","text":"]"}],"title":"contents","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/descent.json b/data/documentation/codeedittextview/linefragment/descent.json
new file mode 100644
index 000000000..522aa6cf4
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/descent.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"descent"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]}]}],"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"descent"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView12LineFragmentC7descent14CoreFoundation7CGFloatVvp","role":"symbol","roleHeading":"Instance Property","title":"descent","symbolKind":"property"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/descent"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/descent","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/descent":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"descent","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/descent","abstract":[],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/descent","title":"descent","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/documentrange.json b/data/documentation/codeedittextview/linefragment/documentrange.json
new file mode 100644
index 000000000..e26005b33
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/documentrange.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView12LineFragmentC13documentRangeSo8_NSRangeVvp","role":"symbol","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"documentRange"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"symbolKind":"property","title":"documentRange"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"documentRange","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/documentRange"},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/documentrange"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/documentRange":{"kind":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/documentrange","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/documentRange","abstract":[],"title":"documentRange","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"documentRange","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}],"role":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/equatable-implementations.json b/data/documentation/codeedittextview/linefragment/equatable-implementations.json
new file mode 100644
index 000000000..8563b0983
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/equatable-implementations.json
@@ -0,0 +1 @@
+{"sections":[],"kind":"article","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/Equatable-Implementations"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"metadata":{"role":"collectionGroup","roleHeading":"API Collection","title":"Equatable Implementations","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"topicSections":[{"title":"Operators","generated":true,"anchor":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/!=(_:_:)"]}],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/!=(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/!=(_:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/!=(_:_:)","kind":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"!=(_:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent.json b/data/documentation/codeedittextview/linefragment/fragmentcontent.json
new file mode 100644
index 000000000..55cba9b25
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","interfaceLanguage":"swift"},"sections":[],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/data","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/length","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/width"],"generated":true,"title":"Instance Properties","anchor":"Instance-Properties"},{"title":"Enumerations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content"],"generated":true,"anchor":"Enumerations"},{"generated":true,"title":"Default Implementations","anchor":"Default-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Equatable-Implementations"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent"],"traits":[{"interfaceLanguage":"swift"}]}],"relationshipsSections":[{"kind":"relationships","title":"Conforms To","type":"conformsTo","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ"]}],"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"struct","externalID":"s:16CodeEditTextView12LineFragmentC0F7ContentV","title":"LineFragment.FragmentContent","navigatorTitle":[{"text":"FragmentContent","kind":"identifier"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"roleHeading":"Structure"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"FragmentContent"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/length":{"title":"length","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/length","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"length","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/length","type":"topic","role":"symbol","kind":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Equatable-Implementations":{"role":"collectionGroup","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Equatable-Implementations","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/equatable-implementations","title":"Equatable Implementations","type":"topic","abstract":[],"kind":"article"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content":{"abstract":[],"navigatorTitle":[{"kind":"identifier","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"Content","kind":"identifier"}],"type":"topic","kind":"symbol","title":"LineFragment.FragmentContent.Content","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/data":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/data","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"data","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/data","title":"data","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/SQ":{"title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/width":{"title":"width","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"width"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/width","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/width"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/!=(_:_:).json b/data/documentation/codeedittextview/linefragment/fragmentcontent/!=(_:_:).json
new file mode 100644
index 000000000..9b0f91e0c
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/!=(_:_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/!=(_:_:)"]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/!=(_:_:)","interfaceLanguage":"swift"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent"]]},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"metadata":{"symbolKind":"op","extendedModule":"Swift","roleHeading":"Operator","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView12LineFragmentC0F7ContentV","title":"!=(_:_:)","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/!=(_:_:)":{"type":"topic","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/!=(_:_:)","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/!=(_:_:)","kind":"symbol","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"!=(_:_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/content.json b/data/documentation/codeedittextview/linefragment/fragmentcontent/content.json
new file mode 100644
index 000000000..fb0772fba
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/content.json
@@ -0,0 +1 @@
+{"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Enumeration","symbolKind":"enum","role":"symbol","externalID":"s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O","title":"LineFragment.FragmentContent.Content","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"Content","kind":"identifier"}],"navigatorTitle":[{"text":"Content","kind":"identifier"}]},"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ"],"type":"conformsTo","title":"Conforms To","kind":"relationships"}],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"Content","kind":"identifier"}]}],"kind":"declarations"}],"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/attachment(attachment:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/text(line:)"],"anchor":"Enumeration-Cases","title":"Enumeration Cases"},{"title":"Default Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/Equatable-Implementations"],"anchor":"Default-Implementations","generated":true}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content/Equatable-Implementations":{"kind":"article","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/Equatable-Implementations","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/equatable-implementations","role":"collectionGroup","title":"Equatable Implementations","abstract":[],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content":{"abstract":[],"navigatorTitle":[{"kind":"identifier","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"Content","kind":"identifier"}],"type":"topic","kind":"symbol","title":"LineFragment.FragmentContent.Content","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"},"doc://codeedittextview.CodeEditTextView/SQ":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable","title":"Swift.Equatable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content/attachment(attachment:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/attachment(attachment:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/attachment(attachment:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"attachment","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"attachment"},{"text":": ","kind":"text"},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":")","kind":"text"}],"abstract":[],"title":"LineFragment.FragmentContent.Content.attachment(attachment:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content/text(line:)":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/text(line:)","type":"topic","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/text(line:)","title":"LineFragment.FragmentContent.Content.text(line:)","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"text","kind":"identifier"},{"kind":"text","text":"("},{"text":"line","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@CTLineRef","text":"CTLine"},{"kind":"text","text":")"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/content/!=(_:_:).json b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/!=(_:_:).json
new file mode 100644
index 000000000..6c11a3958
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/!=(_:_:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Operator","symbolKind":"op","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O","extendedModule":"Swift","title":"!=(_:_:)","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/!=(_:_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content/!=(_:_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/!=(_:_:)","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/!=(_:_:)","title":"!=(_:_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content":{"abstract":[],"navigatorTitle":[{"kind":"identifier","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"Content","kind":"identifier"}],"type":"topic","kind":"symbol","title":"LineFragment.FragmentContent.Content","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/content/attachment(attachment:).json b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/attachment(attachment:).json
new file mode 100644
index 000000000..e9feecba7
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/attachment(attachment:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"attachment","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"attachment"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":")"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/attachment(attachment:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/attachment(attachment:)","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Case","externalID":"s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O10attachmentyAgA03AnyC10AttachmentV_tcAGmF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"LineFragment.FragmentContent.Content.attachment(attachment:)","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"attachment"},{"text":"(","kind":"text"},{"text":"attachment","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier","text":"AnyTextAttachment"},{"text":")","kind":"text"}],"symbolKind":"case"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content"]]},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content/attachment(attachment:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/attachment(attachment:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/attachment(attachment:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"attachment","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"attachment"},{"text":": ","kind":"text"},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":")","kind":"text"}],"abstract":[],"title":"LineFragment.FragmentContent.Content.attachment(attachment:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content":{"abstract":[],"navigatorTitle":[{"kind":"identifier","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"Content","kind":"identifier"}],"type":"topic","kind":"symbol","title":"LineFragment.FragmentContent.Content","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/content/equatable-implementations.json b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/equatable-implementations.json
new file mode 100644
index 000000000..38c3d10d9
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/equatable-implementations.json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/!=(_:_:)"],"generated":true,"anchor":"Operators","title":"Operators"}],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content"]]},"kind":"article","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/Equatable-Implementations","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content":{"abstract":[],"navigatorTitle":[{"kind":"identifier","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"Content","kind":"identifier"}],"type":"topic","kind":"symbol","title":"LineFragment.FragmentContent.Content","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content/!=(_:_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/!=(_:_:)","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/!=(_:_:)","title":"!=(_:_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/content/text(line:).json b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/text(line:).json
new file mode 100644
index 000000000..c0dd35cba
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/content/text(line:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/text(line:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"text"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"line"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@CTLineRef","kind":"typeIdentifier","text":"CTLine"},{"kind":"text","text":")"}],"languages":["swift"]}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Case","role":"symbol","externalID":"s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O4textyAGSo9CTLineRefa_tcAGmF","symbolKind":"case","title":"LineFragment.FragmentContent.Content.text(line:)","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"text"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"line"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@CTLineRef","text":"CTLine","kind":"typeIdentifier"},{"text":")","kind":"text"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/text(line:)","interfaceLanguage":"swift"},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content":{"abstract":[],"navigatorTitle":[{"kind":"identifier","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"Content","kind":"identifier"}],"type":"topic","kind":"symbol","title":"LineFragment.FragmentContent.Content","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content/text(line:)":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content\/text(line:)","type":"topic","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/text(line:)","title":"LineFragment.FragmentContent.Content.text(line:)","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"text","kind":"identifier"},{"kind":"text","text":"("},{"text":"line","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@CTLineRef","text":"CTLine"},{"kind":"text","text":")"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/data.json b/data/documentation/codeedittextview/linefragment/fragmentcontent/data.json
new file mode 100644
index 000000000..30f3e85cd
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/data.json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/data","interfaceLanguage":"swift"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"data","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Content","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"roleHeading":"Instance Property","role":"symbol","title":"data","externalID":"s:16CodeEditTextView12LineFragmentC0F7ContentV4dataAE0G0Ovp","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"data","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O","text":"Content","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"property"},"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/data"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/Content":{"abstract":[],"navigatorTitle":[{"kind":"identifier","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Content","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"text":"Content","kind":"identifier"}],"type":"topic","kind":"symbol","title":"LineFragment.FragmentContent.Content","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/data":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/data","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"data","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC0F7ContentV0G0O","text":"Content"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/data","title":"data","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/equatable-implementations.json b/data/documentation/codeedittextview/linefragment/fragmentcontent/equatable-implementations.json
new file mode 100644
index 000000000..cbf6508bd
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/equatable-implementations.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/Equatable-Implementations"},"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent"]]},"topicSections":[{"title":"Operators","generated":true,"anchor":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/!=(_:_:)"]}],"sections":[],"metadata":{"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"kind":"article","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/!=(_:_:)":{"type":"topic","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/!=(_:_:)","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/!=(_:_:)","kind":"symbol","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"!=(_:_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/length.json b/data/documentation/codeedittextview/linefragment/fragmentcontent/length.json
new file mode 100644
index 000000000..a35d8a7b8
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/length.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"length","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"externalID":"s:16CodeEditTextView12LineFragmentC0F7ContentV6lengthSivp","roleHeading":"Instance Property","title":"length"},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/length"},"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/length"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/length":{"title":"length","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/length","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"length","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/length","type":"topic","role":"symbol","kind":"symbol","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/fragmentcontent/width.json b/data/documentation/codeedittextview/linefragment/fragmentcontent/width.json
new file mode 100644
index 000000000..0335855f7
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/fragmentcontent/width.json
@@ -0,0 +1 @@
+{"metadata":{"title":"width","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"width","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"role":"symbol","externalID":"s:16CodeEditTextView12LineFragmentC0F7ContentV5width14CoreFoundation7CGFloatVvp","symbolKind":"property","roleHeading":"Instance Property"},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/width","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"width","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/width"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent":{"url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent","navigatorTitle":[{"kind":"identifier","text":"FragmentContent"}],"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"FragmentContent","kind":"identifier"}],"title":"LineFragment.FragmentContent","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/FragmentContent/width":{"title":"width","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"width"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/width","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/FragmentContent\/width"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/height.json b/data/documentation/codeedittextview/linefragment/height.json
new file mode 100644
index 000000000..c48c27ca7
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/height.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/height"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/height"},"metadata":{"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"symbolKind":"property","role":"symbol","modules":[{"name":"CodeEditTextView"}],"title":"height","externalID":"s:16CodeEditTextView12LineFragmentC6height14CoreFoundation7CGFloatVvp"},"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/height":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/height","url":"\/documentation\/codeedittextview\/linefragment\/height","role":"symbol","abstract":[],"kind":"symbol","title":"height","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/heightdifference.json b/data/documentation/codeedittextview/linefragment/heightdifference.json
new file mode 100644
index 000000000..95e4057f7
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/heightdifference.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/heightdifference"]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/heightDifference"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"abstract":[{"type":"text","text":"The difference between the real text height and the scaled height"}],"metadata":{"roleHeading":"Instance Property","externalID":"s:16CodeEditTextView12LineFragmentC16heightDifference14CoreFoundation7CGFloatVvp","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"heightDifference","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"heightDifference"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"symbolKind":"property"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"heightDifference","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/heightDifference":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/heightDifference","url":"\/documentation\/codeedittextview\/linefragment\/heightdifference","title":"heightDifference","abstract":[{"text":"The difference between the real text height and the scaled height","type":"text"}],"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"heightDifference","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/id.json b/data/documentation/codeedittextview/linefragment/id.json
new file mode 100644
index 000000000..5781af7fd
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/id.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/id"},"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Identifiable.id"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"id","kind":"identifier"},{"text":": ","kind":"text"},{"text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}]}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragment\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"kind":"symbol","metadata":{"externalID":"s:16CodeEditTextView12LineFragmentC2id10Foundation4UUIDVvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"id","kind":"identifier"},{"text":": ","kind":"text"},{"text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV","kind":"typeIdentifier"}],"title":"id"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/id":{"title":"id","url":"\/documentation\/codeedittextview\/linefragment\/id","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/id","abstract":[],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation4UUIDV","kind":"typeIdentifier","text":"UUID"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/scaledheight.json b/data/documentation/codeedittextview/linefragment/scaledheight.json
new file mode 100644
index 000000000..a25b9bdc5
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/scaledheight.json
@@ -0,0 +1 @@
+{"metadata":{"title":"scaledHeight","role":"symbol","symbolKind":"property","externalID":"s:16CodeEditTextView12LineFragmentC12scaledHeight14CoreFoundation7CGFloatVvp","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"scaledHeight"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"scaledHeight"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/scaledHeight"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/scaledheight"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/scaledHeight":{"url":"\/documentation\/codeedittextview\/linefragment\/scaledheight","abstract":[],"kind":"symbol","title":"scaledHeight","role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"scaledHeight","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/scaledHeight"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragment/width.json b/data/documentation/codeedittextview/linefragment/width.json
new file mode 100644
index 000000000..4f8a46836
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragment/width.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","symbolKind":"property","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","title":"width","externalID":"s:16CodeEditTextView12LineFragmentC5width14CoreFoundation7CGFloatVvp","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"width","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragment\/width"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"width"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"platforms":["macOS"],"languages":["swift"]}]}],"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/width","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment/width":{"url":"\/documentation\/codeedittextview\/linefragment\/width","abstract":[],"kind":"symbol","title":"width","role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"width","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment\/width"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentrenderer.json b/data/documentation/codeedittextview/linefragmentrenderer.json
new file mode 100644
index 000000000..5052c2266
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentrenderer.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Class","role":"symbol","title":"LineFragmentRenderer","navigatorTitle":[{"kind":"identifier","text":"LineFragmentRenderer"}],"externalID":"s:16CodeEditTextView20LineFragmentRendererC","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"LineFragmentRenderer","kind":"identifier"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"class"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"topicSections":[{"title":"Initializers","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/init(textStorage:invisibleCharacterDelegate:)"],"anchor":"Initializers"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/draw(lineFragment:in:yPos:)"],"title":"Instance Methods","generated":true,"anchor":"Instance-Methods"}],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentrenderer"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"final"},{"kind":"text","text":" "},{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"LineFragmentRenderer","kind":"identifier"}]}],"kind":"declarations"}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","interfaceLanguage":"swift"},"sections":[],"abstract":[{"type":"text","text":"Manages drawing line fragments into a drawing context."}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragmentRenderer"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentRenderer"}],"abstract":[{"type":"text","text":"Manages drawing line fragments into a drawing context."}],"title":"LineFragmentRenderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer/init(textStorage:invisibleCharacterDelegate:)":{"abstract":[{"type":"text","text":"Create a fragment renderer."}],"title":"init(textStorage:invisibleCharacterDelegate:)","type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/init(textStorage:invisibleCharacterDelegate:)","url":"\/documentation\/codeedittextview\/linefragmentrenderer\/init(textstorage:invisiblecharacterdelegate:)","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"text":"textStorage","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"invisibleCharacterDelegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate"},{"text":"?)","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer/draw(lineFragment:in:yPos:)":{"title":"draw(lineFragment:in:yPos:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/draw(lineFragment:in:yPos:)","type":"topic","kind":"symbol","abstract":[{"text":"Draw the given line fragment into a drawing context, using the invisible character configuration determined","type":"text"},{"type":"text","text":" "},{"text":"from the ","type":"text"},{"code":"invisibleCharacterDelegate","type":"codeVoice"},{"type":"text","text":", and line fragment information from the passed "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","isActive":true},{"text":" object.","type":"text"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer\/draw(linefragment:in:ypos:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"text":"lineFragment","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGContext","kind":"typeIdentifier","preciseIdentifier":"c:@T@CGContextRef"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"yPos"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentrenderer/draw(linefragment:in:ypos:).json b/data/documentation/codeedittextview/linefragmentrenderer/draw(linefragment:in:ypos:).json
new file mode 100644
index 000000000..955f35fba
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentrenderer/draw(linefragment:in:ypos:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/draw(lineFragment:in:yPos:)","interfaceLanguage":"swift"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"draw","kind":"identifier"},{"text":"(","kind":"text"},{"text":"lineFragment","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment"},{"text":", ","kind":"text"},{"text":"in","kind":"externalParam"},{"kind":"text","text":" "},{"text":"context","kind":"internalParam"},{"kind":"text","text":": "},{"text":"CGContext","kind":"typeIdentifier","preciseIdentifier":"c:@T@CGContextRef"},{"text":", ","kind":"text"},{"text":"yPos","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"name":"lineFragment","content":[{"type":"paragraph","inlineContent":[{"text":"The line fragment to drawn","type":"text"}]}]},{"name":"context","content":[{"inlineContent":[{"type":"text","text":"The drawing context to draw into."}],"type":"paragraph"}]},{"name":"yPos","content":[{"inlineContent":[{"text":"In the drawing context, what ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" position to start drawing at."}],"type":"paragraph"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer"]]},"sections":[],"metadata":{"title":"draw(lineFragment:in:yPos:)","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView20LineFragmentRendererC4draw04lineF02in4yPosyAA0eF0C_So12CGContextRefa14CoreFoundation7CGFloatVtF","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"draw","kind":"identifier"},{"kind":"text","text":"("},{"text":"lineFragment","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier","text":"LineFragment"},{"kind":"text","text":", "},{"text":"in","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@CGContextRef","text":"CGContext"},{"text":", ","kind":"text"},{"text":"yPos","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":")"}]},"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"type":"text","text":"Draw the given line fragment into a drawing context, using the invisible character configuration determined"},{"type":"text","text":" "},{"type":"text","text":"from the "},{"type":"codeVoice","code":"invisibleCharacterDelegate"},{"text":", and line fragment information from the passed ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference","isActive":true},{"type":"text","text":" object."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragmentrenderer\/draw(linefragment:in:ypos:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragmentRenderer"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentRenderer"}],"abstract":[{"type":"text","text":"Manages drawing line fragments into a drawing context."}],"title":"LineFragmentRenderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer/draw(lineFragment:in:yPos:)":{"title":"draw(lineFragment:in:yPos:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/draw(lineFragment:in:yPos:)","type":"topic","kind":"symbol","abstract":[{"text":"Draw the given line fragment into a drawing context, using the invisible character configuration determined","type":"text"},{"type":"text","text":" "},{"text":"from the ","type":"text"},{"code":"invisibleCharacterDelegate","type":"codeVoice"},{"type":"text","text":", and line fragment information from the passed "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","isActive":true},{"text":" object.","type":"text"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer\/draw(linefragment:in:ypos:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"text":"lineFragment","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGContext","kind":"typeIdentifier","preciseIdentifier":"c:@T@CGContextRef"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"yPos"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentrenderer/init(textstorage:invisiblecharacterdelegate:).json b/data/documentation/codeedittextview/linefragmentrenderer/init(textstorage:invisiblecharacterdelegate:).json
new file mode 100644
index 000000000..8e910779c
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentrenderer/init(textstorage:invisiblecharacterdelegate:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Initializer","title":"init(textStorage:invisibleCharacterDelegate:)","modules":[{"name":"CodeEditTextView"}],"role":"symbol","externalID":"s:16CodeEditTextView20LineFragmentRendererC11textStorage26invisibleCharacterDelegateACSo06NSTextI0CSg_AA019InvisibleCharactersL0_pSgtcfc","symbolKind":"init","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"textStorage"},{"kind":"text","text":": "},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"invisibleCharacterDelegate"},{"text":": ","kind":"text"},{"text":"InvisibleCharactersDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP"},{"kind":"text","text":"?)"}]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/init(textStorage:invisibleCharacterDelegate:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"text":"(","kind":"text"},{"text":"textStorage","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":"?, "},{"text":"invisibleCharacterDelegate","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"InvisibleCharactersDelegate","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"name":"textStorage","content":[{"inlineContent":[{"type":"text","text":"The text storage backing the fragments being drawn."}],"type":"paragraph"}]},{"name":"invisibleCharacterDelegate","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"A delegate object to interrogate for invisible character drawing."}]}]}]}],"abstract":[{"type":"text","text":"Create a fragment renderer."}],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentrenderer\/init(textstorage:invisiblecharacterdelegate:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragmentRenderer"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentRenderer"}],"abstract":[{"type":"text","text":"Manages drawing line fragments into a drawing context."}],"title":"LineFragmentRenderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer/init(textStorage:invisibleCharacterDelegate:)":{"abstract":[{"type":"text","text":"Create a fragment renderer."}],"title":"init(textStorage:invisibleCharacterDelegate:)","type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer\/init(textStorage:invisibleCharacterDelegate:)","url":"\/documentation\/codeedittextview\/linefragmentrenderer\/init(textstorage:invisiblecharacterdelegate:)","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"text":"textStorage","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"invisibleCharacterDelegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate"},{"text":"?)","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview.json b/data/documentation/codeedittextview/linefragmentview.json
new file mode 100644
index 000000000..23699e0da
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","interfaceLanguage":"swift"},"topicSections":[{"title":"Initializers","anchor":"Initializers","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(coder:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(frame:)"],"generated":true},{"generated":true,"anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isFlipped","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isOpaque","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/lineFragment","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/renderer"],"title":"Instance Properties"},{"generated":true,"title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/draw(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/hitTest(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/prepareForReuse()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/setLineFragment(_:fragmentRange:renderer:)"],"anchor":"Instance-Methods"}],"relationshipsSections":[{"title":"Inherits From","kind":"relationships","type":"inheritsFrom","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSView"]},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibilityElement","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibility","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAnimatablePropertyContainer","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAppearanceCustomization","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingDestination","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSStandardKeyBindingResponding","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTouchBarProvider","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserActivityRestoring","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserInterfaceItemIdentification","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSCoding","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH","doc:\/\/codeedittextview.CodeEditTextView\/s8SendableP"],"title":"Conforms To","type":"conformsTo","kind":"relationships"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"LineFragmentView","externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView","symbolKind":"class","role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Class","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"LineFragmentView","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"LineFragmentView"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"abstract":[{"type":"text","text":"Displays a line fragment."}],"references":{"doc://codeedittextview.CodeEditTextView/s23CustomStringConvertibleP":{"title":"Swift.CustomStringConvertible","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/init(frame:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(frame:)","type":"topic","abstract":[],"kind":"symbol","title":"init(frame:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"frame"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/linefragmentview\/init(frame:)"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSDraggingDestination":{"title":"AppKit.NSDraggingDestination","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingDestination"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSCoding":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSCoding","title":"Foundation.NSCoding","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAppearanceCustomization":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAppearanceCustomization","title":"AppKit.NSAppearanceCustomization","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/renderer":{"role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"renderer","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC","kind":"typeIdentifier","text":"LineFragmentRenderer"},{"text":"?","kind":"text"}],"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/renderer","url":"\/documentation\/codeedittextview\/linefragmentview\/renderer","title":"renderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/hitTest(_:)":{"title":"hitTest(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"hitTest","kind":"identifier"},{"text":"(","kind":"text"},{"text":"NSPoint","preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSView","kind":"typeIdentifier","text":"NSView"},{"text":"?","kind":"text"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/hitTest(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/linefragmentview\/hittest(_:)"},"doc://codeedittextview.CodeEditTextView/s7CVarArgP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","title":"Swift.CVarArg","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/objc(cs)NSView":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSView","title":"AppKit.NSView","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/draw(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/draw(_:)","abstract":[{"text":"Draws the line fragment in the graphics context.","type":"text"}],"url":"\/documentation\/codeedittextview\/linefragmentview\/draw(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"text":"NSRect","preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"draw(_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSTouchBarProvider":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTouchBarProvider","title":"AppKit.NSTouchBarProvider","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/SQ":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","title":"Swift.Equatable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAccessibility":{"title":"AppKit.NSAccessibilityProtocol","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibility"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/isFlipped":{"title":"isFlipped","url":"\/documentation\/codeedittextview\/linefragmentview\/isflipped","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isFlipped","abstract":[],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isFlipped","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/s8SendableP":{"title":"Swift.Sendable","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s8SendableP"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAnimatablePropertyContainer":{"title":"AppKit.NSAnimatablePropertyContainer","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAnimatablePropertyContainer"},"doc://codeedittextview.CodeEditTextView/SH":{"title":"Swift.Hashable","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSUserInterfaceItemIdentification":{"title":"AppKit.NSUserInterfaceItemIdentification","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserInterfaceItemIdentification"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAccessibilityElement":{"title":"AppKit.NSAccessibilityElementProtocol","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibilityElement"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/init(coder:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(coder:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linefragmentview\/init(coder:)","kind":"symbol","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"?("},{"text":"coder","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSCoder","kind":"typeIdentifier","text":"NSCoder"},{"text":")","kind":"text"}],"title":"init(coder:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/prepareForReuse()":{"title":"prepareForReuse()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/prepareForReuse()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"prepareForReuse"},{"text":"()","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/linefragmentview\/prepareforreuse()"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSObject":{"title":"ObjectiveC.NSObjectProtocol","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/setLineFragment(_:fragmentRange:renderer:)":{"type":"topic","url":"\/documentation\/codeedittextview\/linefragmentview\/setlinefragment(_:fragmentrange:renderer:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setLineFragment"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment"},{"kind":"text","text":", "},{"kind":"externalParam","text":"fragmentRange"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"renderer","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"LineFragmentRenderer","preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC","kind":"typeIdentifier"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/setLineFragment(_:fragmentRange:renderer:)","kind":"symbol","role":"symbol","title":"setLineFragment(_:fragmentRange:renderer:)","abstract":[{"type":"text","text":"Set a new line fragment for this view, updating view size."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/lineFragment":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/lineFragment","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"lineFragment"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":"?","kind":"text"}],"title":"lineFragment","role":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/linefragmentview\/linefragment"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSStandardKeyBindingResponding":{"title":"AppKit.NSStandardKeyBindingResponding","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSStandardKeyBindingResponding","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/s28CustomDebugStringConvertibleP":{"title":"Swift.CustomDebugStringConvertible","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/isOpaque":{"type":"topic","url":"\/documentation\/codeedittextview\/linefragmentview\/isopaque","abstract":[],"title":"isOpaque","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isOpaque","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isOpaque","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSUserActivityRestoring":{"title":"AppKit.NSUserActivityRestoring","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserActivityRestoring","type":"unresolvable"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/draw(_:).json b/data/documentation/codeedittextview/linefragmentview/draw(_:).json
new file mode 100644
index 000000000..3a77dabf0
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/draw(_:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/draw(_:)"},"abstract":[{"type":"text","text":"Draws the line fragment in the graphics context."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draw","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"dirtyRect"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","text":"NSRect","kind":"typeIdentifier"},{"kind":"text","text":")"}],"platforms":["macOS"]}]}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview\/draw(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draw"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView(im)drawRect:","title":"draw(_:)","symbolKind":"method"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/draw(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/draw(_:)","abstract":[{"text":"Draws the line fragment in the graphics context.","type":"text"}],"url":"\/documentation\/codeedittextview\/linefragmentview\/draw(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"text":"NSRect","preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"draw(_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/hittest(_:).json b/data/documentation/codeedittextview/linefragmentview/hittest(_:).json
new file mode 100644
index 000000000..b998bb984
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/hittest(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hitTest","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"point","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview\/hittest(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"metadata":{"title":"hitTest(_:)","externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView(im)hitTest:","symbolKind":"method","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"hitTest","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/hitTest(_:)","interfaceLanguage":"swift"},"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/hitTest(_:)":{"title":"hitTest(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"hitTest","kind":"identifier"},{"text":"(","kind":"text"},{"text":"NSPoint","preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSView","kind":"typeIdentifier","text":"NSView"},{"text":"?","kind":"text"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/hitTest(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/linefragmentview\/hittest(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/init(coder:).json b/data/documentation/codeedittextview/linefragmentview/init(coder:).json
new file mode 100644
index 000000000..1b6252c06
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/init(coder:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"symbolKind":"init","roleHeading":"Initializer","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"?("},{"kind":"externalParam","text":"coder"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSCoder","preciseIdentifier":"c:objc(cs)NSCoder"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView(im)initWithCoder:","title":"init(coder:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(coder:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview\/init(coder:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"required"},{"kind":"text","text":" "},{"text":"init","kind":"keyword"},{"text":"?(","kind":"text"},{"text":"coder","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSCoder","kind":"typeIdentifier","text":"NSCoder"},{"text":")","kind":"text"}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/init(coder:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(coder:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linefragmentview\/init(coder:)","kind":"symbol","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"?("},{"text":"coder","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSCoder","kind":"typeIdentifier","text":"NSCoder"},{"text":")","kind":"text"}],"title":"init(coder:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/init(frame:).json b/data/documentation/codeedittextview/linefragmentview/init(frame:).json
new file mode 100644
index 000000000..e7ab46312
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/init(frame:).json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView(im)initWithFrame:","role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Initializer","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"text":"frame","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"},{"kind":"text","text":")"}],"title":"init(frame:)","symbolKind":"init"},"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview\/init(frame:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(frame:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"init","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"frame"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"frameRect"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"kind":"text","text":")"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/init(frame:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/init(frame:)","type":"topic","abstract":[],"kind":"symbol","title":"init(frame:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"frame"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/linefragmentview\/init(frame:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/isflipped.json b/data/documentation/codeedittextview/linefragmentview/isflipped.json
new file mode 100644
index 000000000..0af5c0b3b
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/isflipped.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview\/isflipped"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isFlipped","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"metadata":{"roleHeading":"Instance Property","externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView(py)flipped","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"isFlipped","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isFlipped"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"property"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"isFlipped"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/isFlipped":{"title":"isFlipped","url":"\/documentation\/codeedittextview\/linefragmentview\/isflipped","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isFlipped","abstract":[],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isFlipped","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/isopaque.json b/data/documentation/codeedittextview/linefragmentview/isopaque.json
new file mode 100644
index 000000000..81e6a2ca8
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/isopaque.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isOpaque"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isOpaque","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"sections":[],"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isOpaque","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView(py)opaque","title":"isOpaque","symbolKind":"property","roleHeading":"Instance Property"},"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview\/isopaque"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/isOpaque":{"type":"topic","url":"\/documentation\/codeedittextview\/linefragmentview\/isopaque","abstract":[],"title":"isOpaque","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/isOpaque","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isOpaque","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/linefragment.json b/data/documentation/codeedittextview/linefragmentview/linefragment.json
new file mode 100644
index 000000000..f454eb975
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/linefragment.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"weak"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineFragment","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"title":"lineFragment","externalID":"s:16CodeEditTextView012LineFragmentD0C04lineF0AA0eF0CSgvp","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineFragment","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":"?"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/lineFragment"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragmentview\/linefragment"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/lineFragment":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/lineFragment","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"lineFragment"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":"?","kind":"text"}],"title":"lineFragment","role":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/linefragmentview\/linefragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/prepareforreuse().json b/data/documentation/codeedittextview/linefragmentview/prepareforreuse().json
new file mode 100644
index 000000000..5309225b9
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/prepareforreuse().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragmentview\/prepareforreuse()"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/prepareForReuse()","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"title":"prepareForReuse()","externalID":"c:@M@CodeEditTextView@objc(cs)LineFragmentView(im)prepareForReuse","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"prepareForReuse","kind":"identifier"},{"text":"()","kind":"text"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareForReuse"},{"kind":"text","text":"()"}],"platforms":["macOS"],"languages":["swift"]}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/prepareForReuse()":{"title":"prepareForReuse()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/prepareForReuse()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"prepareForReuse"},{"text":"()","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/linefragmentview\/prepareforreuse()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/renderer.json b/data/documentation/codeedittextview/linefragmentview/renderer.json
new file mode 100644
index 000000000..4a4857b4e
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/renderer.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/linefragmentview\/renderer"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/renderer"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"renderer","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC","kind":"typeIdentifier","text":"LineFragmentRenderer"},{"kind":"text","text":"?"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView012LineFragmentD0C8rendererAA0eF8RendererCSgvp","title":"renderer","roleHeading":"Instance Property","symbolKind":"property","role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"text":"weak","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"renderer","kind":"identifier"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC","text":"LineFragmentRenderer","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/renderer":{"role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"renderer","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC","kind":"typeIdentifier","text":"LineFragmentRenderer"},{"text":"?","kind":"text"}],"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/renderer","url":"\/documentation\/codeedittextview\/linefragmentview\/renderer","title":"renderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragmentRenderer"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentRenderer"}],"abstract":[{"type":"text","text":"Manages drawing line fragments into a drawing context."}],"title":"LineFragmentRenderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/linefragmentview/setlinefragment(_:fragmentrange:renderer:).json b/data/documentation/codeedittextview/linefragmentview/setlinefragment(_:fragmentrange:renderer:).json
new file mode 100644
index 000000000..6ec27d5dc
--- /dev/null
+++ b/data/documentation/codeedittextview/linefragmentview/setlinefragment(_:fragmentrange:renderer:).json
@@ -0,0 +1 @@
+{"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"Set a new line fragment for this view, updating view size.","type":"text"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","externalID":"s:16CodeEditTextView012LineFragmentD0C03seteF0_13fragmentRange8rendereryAA0eF0C_So8_NSRangeVAA0eF8RendererCtF","symbolKind":"method","title":"setLineFragment(_:fragmentRange:renderer:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"setLineFragment"},{"text":"(","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"fragmentRange"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":", "},{"text":"renderer","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineFragmentRenderer","preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC","kind":"typeIdentifier"},{"text":")","kind":"text"}],"roleHeading":"Instance Method"},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setLineFragment","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"newFragment","kind":"internalParam"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"text":"fragmentRange","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"text":"renderer","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"LineFragmentRenderer","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC"},{"kind":"text","text":")"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"text":"The new fragment to use.","type":"text"}],"type":"paragraph"}],"name":"newFragment"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"]]},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/linefragmentview\/setlinefragment(_:fragmentrange:renderer:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/setLineFragment(_:fragmentRange:renderer:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView/setLineFragment(_:fragmentRange:renderer:)":{"type":"topic","url":"\/documentation\/codeedittextview\/linefragmentview\/setlinefragment(_:fragmentrange:renderer:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setLineFragment"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment"},{"kind":"text","text":", "},{"kind":"externalParam","text":"fragmentRange"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"renderer","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"LineFragmentRenderer","preciseIdentifier":"s:16CodeEditTextView20LineFragmentRendererC","kind":"typeIdentifier"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView\/setLineFragment(_:fragmentRange:renderer:)","kind":"symbol","role":"symbol","title":"setLineFragment(_:fragmentRange:renderer:)","abstract":[{"type":"text","text":"Set a new line fragment for this view, updating view size."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentRenderer":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragmentRenderer"}],"url":"\/documentation\/codeedittextview\/linefragmentrenderer","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentRenderer","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentRenderer"}],"abstract":[{"type":"text","text":"Manages drawing line fragments into a drawing context."}],"title":"LineFragmentRenderer"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/markedranges.json b/data/documentation/codeedittextview/markedranges.json
new file mode 100644
index 000000000..d26001409
--- /dev/null
+++ b/data/documentation/codeedittextview/markedranges.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"MarkedRanges"}],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/markedranges"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"externalID":"s:16CodeEditTextView12MarkedRangesV","title":"MarkedRanges","modules":[{"name":"CodeEditTextView"}],"symbolKind":"struct","role":"symbol","roleHeading":"Structure","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"MarkedRanges","kind":"identifier"}],"navigatorTitle":[{"text":"MarkedRanges","kind":"identifier"}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"abstract":[{"text":"Struct for passing attribute and range information easily down into line fragments, typesetters without","type":"text"},{"text":" ","type":"text"},{"text":"requiring a reference to the marked text manager.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MarkedRanges":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"MarkedRanges"}],"url":"\/documentation\/codeedittextview\/markedranges","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"MarkedRanges","kind":"identifier"}],"abstract":[{"type":"text","text":"Struct for passing attribute and range information easily down into line fragments, typesetters without"},{"type":"text","text":" "},{"type":"text","text":"requiring a reference to the marked text manager."}],"title":"MarkedRanges"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/multistoragedelegate.json b/data/documentation/codeedittextview/multistoragedelegate.json
new file mode 100644
index 000000000..46a2a3ba6
--- /dev/null
+++ b/data/documentation/codeedittextview/multistoragedelegate.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","navigatorTitle":[{"text":"MultiStorageDelegate","kind":"identifier"}],"symbolKind":"class","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"MultiStorageDelegate","kind":"identifier"}],"externalID":"c:@M@CodeEditTextView@objc(cs)MultiStorageDelegate","title":"MultiStorageDelegate","roleHeading":"Class"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"topicSections":[{"title":"Instance Methods","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/addDelegate(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/removeDelegate(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:didProcessEditing:range:changeInLength:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:willProcessEditing:range:changeInLength:)"],"anchor":"Instance-Methods"}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/multistoragedelegate"]}],"kind":"symbol","relationshipsSections":[{"title":"Inherits From","type":"inheritsFrom","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSObject"],"kind":"relationships"},{"title":"Conforms To","kind":"relationships","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextStorageDelegate","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"type":"conformsTo"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"text":"MultiStorageDelegate","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/s23CustomStringConvertibleP":{"title":"Swift.CustomStringConvertible","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate":{"kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"MultiStorageDelegate"}],"title":"MultiStorageDelegate","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate","url":"\/documentation\/codeedittextview\/multistoragedelegate","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"MultiStorageDelegate"}]},"doc://codeedittextview.CodeEditTextView/SH":{"title":"Swift.Hashable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/SQ":{"title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/s7CVarArgP":{"title":"Swift.CVarArg","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSTextStorageDelegate":{"title":"AppKit.NSTextStorageDelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextStorageDelegate","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/textStorage(_:willProcessEditing:range:changeInLength:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textStorage","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"willProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions"},{"text":", ","kind":"text"},{"text":"range","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"changeInLength"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:willProcessEditing:range:changeInLength:)","url":"\/documentation\/codeedittextview\/multistoragedelegate\/textstorage(_:willprocessediting:range:changeinlength:)","abstract":[],"role":"symbol","type":"topic","title":"textStorage(_:willProcessEditing:range:changeInLength:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/addDelegate(_:)":{"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"addDelegate"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/multistoragedelegate\/adddelegate(_:)","abstract":[],"title":"addDelegate(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/addDelegate(_:)","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(cs)NSObject":{"title":"ObjectiveC.NSObject","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSObject","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSObject":{"title":"ObjectiveC.NSObjectProtocol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/textStorage(_:didProcessEditing:range:changeInLength:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"text":"didProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"range","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"changeInLength","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":")"}],"url":"\/documentation\/codeedittextview\/multistoragedelegate\/textstorage(_:didprocessediting:range:changeinlength:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:didProcessEditing:range:changeInLength:)","type":"topic","abstract":[],"title":"textStorage(_:didProcessEditing:range:changeInLength:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/s28CustomDebugStringConvertibleP":{"title":"Swift.CustomDebugStringConvertible","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/removeDelegate(_:)":{"url":"\/documentation\/codeedittextview\/multistoragedelegate\/removedelegate(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"removeDelegate"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"kind":"text","text":")"}],"title":"removeDelegate(_:)","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/removeDelegate(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/multistoragedelegate/adddelegate(_:).json b/data/documentation/codeedittextview/multistoragedelegate/adddelegate(_:).json
new file mode 100644
index 000000000..aab6344f1
--- /dev/null
+++ b/data/documentation/codeedittextview/multistoragedelegate/adddelegate(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/multistoragedelegate\/adddelegate(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"addDelegate","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"delegate"},{"text":": ","kind":"text"},{"text":"NSTextStorageDelegate","kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate"},{"kind":"text","text":")"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","sections":[],"metadata":{"title":"addDelegate(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"addDelegate","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSTextStorageDelegate","kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView20MultiStorageDelegateC03addG0yySo06NSTextfG0_pF","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/addDelegate(_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/addDelegate(_:)":{"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"addDelegate"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/multistoragedelegate\/adddelegate(_:)","abstract":[],"title":"addDelegate(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/addDelegate(_:)","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate":{"kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"MultiStorageDelegate"}],"title":"MultiStorageDelegate","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate","url":"\/documentation\/codeedittextview\/multistoragedelegate","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"MultiStorageDelegate"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/multistoragedelegate/removedelegate(_:).json b/data/documentation/codeedittextview/multistoragedelegate/removedelegate(_:).json
new file mode 100644
index 000000000..5d0b978b7
--- /dev/null
+++ b/data/documentation/codeedittextview/multistoragedelegate/removedelegate(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/multistoragedelegate\/removedelegate(_:)"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"roleHeading":"Instance Method","externalID":"s:16CodeEditTextView20MultiStorageDelegateC06removeG0yySo06NSTextfG0_pF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"removeDelegate(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeDelegate"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","kind":"typeIdentifier","text":"NSTextStorageDelegate"},{"text":")","kind":"text"}],"symbolKind":"method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"removeDelegate","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"delegate"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"kind":"text","text":")"}],"languages":["swift"]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/removeDelegate(_:)","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate":{"kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"MultiStorageDelegate"}],"title":"MultiStorageDelegate","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate","url":"\/documentation\/codeedittextview\/multistoragedelegate","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"MultiStorageDelegate"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/removeDelegate(_:)":{"url":"\/documentation\/codeedittextview\/multistoragedelegate\/removedelegate(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"removeDelegate"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"kind":"text","text":")"}],"title":"removeDelegate(_:)","type":"topic","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/removeDelegate(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/multistoragedelegate/textstorage(_:didprocessediting:range:changeinlength:).json b/data/documentation/codeedittextview/multistoragedelegate/textstorage(_:didprocessediting:range:changeinlength:).json
new file mode 100644
index 000000000..3ec590129
--- /dev/null
+++ b/data/documentation/codeedittextview/multistoragedelegate/textstorage(_:didprocessediting:range:changeinlength:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"minor":3,"major":0},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textStorage"},{"kind":"text","text":"("},{"preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"didProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSTextStorageEditActions","text":"NSTextStorageEditActions"},{"kind":"text","text":", "},{"kind":"externalParam","text":"range"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"changeInLength"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)MultiStorageDelegate(im)textStorage:didProcessEditing:range:changeInLength:","title":"textStorage(_:didProcessEditing:range:changeInLength:)","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textStorage","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"textStorage"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSTextStorage","kind":"typeIdentifier","text":"NSTextStorage"},{"text":", ","kind":"text"},{"text":"didProcessEditing","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"editedMask","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions"},{"text":", ","kind":"text"},{"text":"range","kind":"externalParam"},{"kind":"text","text":" "},{"text":"editedRange","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"changeInLength","kind":"externalParam"},{"kind":"text","text":" "},{"text":"delta","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/multistoragedelegate\/textstorage(_:didprocessediting:range:changeinlength:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:didProcessEditing:range:changeInLength:)"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/textStorage(_:didProcessEditing:range:changeInLength:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"text":"didProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"range","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"changeInLength","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":")"}],"url":"\/documentation\/codeedittextview\/multistoragedelegate\/textstorage(_:didprocessediting:range:changeinlength:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:didProcessEditing:range:changeInLength:)","type":"topic","abstract":[],"title":"textStorage(_:didProcessEditing:range:changeInLength:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate":{"kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"MultiStorageDelegate"}],"title":"MultiStorageDelegate","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate","url":"\/documentation\/codeedittextview\/multistoragedelegate","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"MultiStorageDelegate"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/multistoragedelegate/textstorage(_:willprocessediting:range:changeinlength:).json b/data/documentation/codeedittextview/multistoragedelegate/textstorage(_:willprocessediting:range:changeinlength:).json
new file mode 100644
index 000000000..66fd6ee72
--- /dev/null
+++ b/data/documentation/codeedittextview/multistoragedelegate/textstorage(_:willprocessediting:range:changeinlength:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textStorage"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"willProcessEditing","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"editedMask"},{"text":": ","kind":"text"},{"text":"NSTextStorageEditActions","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSTextStorageEditActions"},{"kind":"text","text":", "},{"text":"range","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"editedRange","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"changeInLength"},{"text":" ","kind":"text"},{"text":"delta","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/multistoragedelegate\/textstorage(_:willprocessediting:range:changeinlength:)"]}],"metadata":{"role":"symbol","title":"textStorage(_:willProcessEditing:range:changeInLength:)","externalID":"c:@M@CodeEditTextView@objc(cs)MultiStorageDelegate(im)textStorage:willProcessEditing:range:changeInLength:","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textStorage"},{"text":"(","kind":"text"},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"willProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"range","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"changeInLength","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":")","kind":"text"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:willProcessEditing:range:changeInLength:)"},"sections":[],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"NSTextStorageDelegate.textStorage(_:willProcessEditing:range:changeInLength:)","type":"codeVoice"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate":{"kind":"symbol","type":"topic","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"MultiStorageDelegate"}],"title":"MultiStorageDelegate","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate","url":"\/documentation\/codeedittextview\/multistoragedelegate","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"MultiStorageDelegate"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MultiStorageDelegate/textStorage(_:willProcessEditing:range:changeInLength:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textStorage","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"willProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions"},{"text":", ","kind":"text"},{"text":"range","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"changeInLength"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MultiStorageDelegate\/textStorage(_:willProcessEditing:range:changeInLength:)","url":"\/documentation\/codeedittextview\/multistoragedelegate\/textstorage(_:willprocessediting:range:changeinlength:)","abstract":[],"role":"symbol","type":"topic","title":"textStorage(_:willProcessEditing:range:changeInLength:)","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachment.json b/data/documentation/codeedittextview/textattachment.json
new file mode 100644
index 000000000..73b5156a9
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachment.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"roleHeading":"Protocol","symbolKind":"protocol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextAttachment"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}],"externalID":"s:16CodeEditTextView0C10AttachmentP","role":"symbol","title":"TextAttachment","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextAttachment"},{"kind":"text","text":" : AnyObject"}],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textattachment"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","interfaceLanguage":"swift"},"sections":[],"topicSections":[{"generated":true,"anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/isSelected","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/width"],"title":"Instance Properties"},{"generated":true,"title":"Instance Methods","anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/draw(in:rect:)"]}],"abstract":[{"text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/draw(in:rect:)":{"role":"symbol","required":true,"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@CGContextRef","kind":"typeIdentifier","text":"CGContext"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"rect"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/draw(in:rect:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textattachment\/draw(in:rect:)","title":"draw(in:rect:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/isSelected":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/isSelected","title":"isSelected","required":true,"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isSelected","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"kind":"symbol","type":"topic","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachment\/isselected"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/attachmentAction()":{"title":"attachmentAction()","kind":"symbol","defaultImplementations":1,"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"attachmentAction","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextAttachmentAction","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO"}],"required":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()","url":"\/documentation\/codeedittextview\/textattachment\/attachmentaction()","role":"symbol","abstract":[{"type":"text","text":"The action that should be performed when this attachment is invoked (double-click, enter pressed)."},{"text":" ","type":"text"},{"text":"This method is optional, by default the attachment is discarded.","type":"text"}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/width":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/width","role":"symbol","kind":"symbol","required":true,"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"width"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"url":"\/documentation\/codeedittextview\/textattachment\/width","title":"width","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachment/attachmentaction()-87rcy.json b/data/documentation/codeedittextview/textattachment/attachmentaction()-87rcy.json
new file mode 100644
index 000000000..3003ddc75
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachment/attachmentaction()-87rcy.json
@@ -0,0 +1 @@
+{"metadata":{"title":"attachmentAction()","externalID":"s:16CodeEditTextView0C10AttachmentPAAE16attachmentActionAA0ceG0OyF","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"attachmentAction"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO","kind":"typeIdentifier","text":"TextAttachmentAction"}],"role":"symbol","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}]},"abstract":[{"type":"text","text":"The action that should be performed when this attachment is invoked (double-click, enter pressed)."},{"text":" ","type":"text"},{"type":"text","text":"This method is optional, by default the attachment is discarded."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textattachment\/attachmentaction()-87rcy"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"attachmentAction","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextAttachmentAction","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO"}],"platforms":["macOS"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()-87rcy","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction":{"title":"TextAttachmentAction","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","navigatorTitle":[{"text":"TextAttachmentAction","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/attachmentAction()-87rcy":{"kind":"symbol","abstract":[{"text":"The action that should be performed when this attachment is invoked (double-click, enter pressed).","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"This method is optional, by default the attachment is discarded."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"attachmentAction","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"TextAttachmentAction","preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textattachment\/attachmentaction()-87rcy","title":"attachmentAction()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()-87rcy","type":"topic","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachment/attachmentaction().json b/data/documentation/codeedittextview/textattachment/attachmentaction().json
new file mode 100644
index 000000000..98a42f491
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachment/attachmentaction().json
@@ -0,0 +1 @@
+{"defaultImplementationsSections":[{"anchor":"TextAttachment-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()-87rcy"],"title":"TextAttachment Implementations"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"attachmentAction","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"TextAttachmentAction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO"}]}]}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textattachment\/attachmentaction()"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"symbolKind":"method","externalID":"s:16CodeEditTextView0C10AttachmentP16attachmentActionAA0ceG0OyF","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"attachmentAction","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"TextAttachmentAction","preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO","kind":"typeIdentifier"}],"title":"attachmentAction()","roleHeading":"Instance Method","required":true,"modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"abstract":[{"text":"The action that should be performed when this attachment is invoked (double-click, enter pressed).","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"This method is optional, by default the attachment is discarded."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/attachmentAction()":{"title":"attachmentAction()","kind":"symbol","defaultImplementations":1,"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"attachmentAction","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextAttachmentAction","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO"}],"required":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()","url":"\/documentation\/codeedittextview\/textattachment\/attachmentaction()","role":"symbol","abstract":[{"type":"text","text":"The action that should be performed when this attachment is invoked (double-click, enter pressed)."},{"text":" ","type":"text"},{"text":"This method is optional, by default the attachment is discarded.","type":"text"}],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction":{"title":"TextAttachmentAction","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","navigatorTitle":[{"text":"TextAttachmentAction","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/attachmentAction()-87rcy":{"kind":"symbol","abstract":[{"text":"The action that should be performed when this attachment is invoked (double-click, enter pressed).","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"This method is optional, by default the attachment is discarded."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"attachmentAction","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"TextAttachmentAction","preciseIdentifier":"s:16CodeEditTextView0C16AttachmentActionO","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textattachment\/attachmentaction()-87rcy","title":"attachmentAction()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/attachmentAction()-87rcy","type":"topic","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachment/draw(in:rect:).json b/data/documentation/codeedittextview/textattachment/draw(in:rect:).json
new file mode 100644
index 000000000..a4075de58
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachment/draw(in:rect:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"title":"draw(in:rect:)","required":true,"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C10AttachmentP4draw2in4rectySo12CGContextRefa_So6CGRectVtF","role":"symbol","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@CGContextRef","text":"CGContext"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"rect"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","text":"NSRect","kind":"typeIdentifier"},{"text":")","kind":"text"}]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/draw(in:rect:)","interfaceLanguage":"swift"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draw"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"text":" ","kind":"text"},{"text":"context","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGContext","preciseIdentifier":"c:@T@CGContextRef"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"rect"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"},{"text":")","kind":"text"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textattachment\/draw(in:rect:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/draw(in:rect:)":{"role":"symbol","required":true,"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@CGContextRef","kind":"typeIdentifier","text":"CGContext"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"rect"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/draw(in:rect:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textattachment\/draw(in:rect:)","title":"draw(in:rect:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachment/isselected.json b/data/documentation/codeedittextview/textattachment/isselected.json
new file mode 100644
index 000000000..0f2de81c9
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachment/isselected.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/isSelected","interfaceLanguage":"swift"},"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"isSelected"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textattachment\/isselected"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"roleHeading":"Instance Property","title":"isSelected","externalID":"s:16CodeEditTextView0C10AttachmentP10isSelectedSbvp","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isSelected","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"role":"symbol","required":true,"symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/isSelected":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/isSelected","title":"isSelected","required":true,"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isSelected","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"kind":"symbol","type":"topic","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachment\/isselected"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachment/width.json b/data/documentation/codeedittextview/textattachment/width.json
new file mode 100644
index 000000000..77824b77c
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachment/width.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textattachment\/width"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/width","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"width","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"]}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"width","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"width"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"roleHeading":"Instance Property","externalID":"s:16CodeEditTextView0C10AttachmentP5width14CoreFoundation7CGFloatVvp","required":true,"symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment/width":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment\/width","role":"symbol","kind":"symbol","required":true,"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"width"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"url":"\/documentation\/codeedittextview\/textattachment\/width","title":"width","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentaction.json b/data/documentation/codeedittextview/textattachmentaction.json
new file mode 100644
index 000000000..243200c98
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentaction.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/discard","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/none","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/replace(text:)"],"title":"Enumeration Cases","anchor":"Enumeration-Cases","generated":true}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextAttachmentAction"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentaction"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","interfaceLanguage":"swift"},"metadata":{"title":"TextAttachmentAction","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"role":"symbol","externalID":"s:16CodeEditTextView0C16AttachmentActionO","navigatorTitle":[{"kind":"identifier","text":"TextAttachmentAction"}],"symbolKind":"enum","roleHeading":"Enumeration"},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction/discard":{"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction\/discard","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/discard","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"discard","kind":"identifier"}],"abstract":[{"text":"Discard the attachment and perform no other action, this is the default action.","type":"text"}],"title":"TextAttachmentAction.discard"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction":{"title":"TextAttachmentAction","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","navigatorTitle":[{"text":"TextAttachmentAction","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction/none":{"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction\/none","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/none","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"none"}],"abstract":[{"text":"Perform no action.","type":"text"}],"title":"TextAttachmentAction.none"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction/replace(text:)":{"title":"TextAttachmentAction.replace(text:)","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"replace","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"text"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"type":"topic","kind":"symbol","abstract":[{"text":"Replace the attachment range with the given string.","type":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction\/replace(text:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/replace(text:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentaction/discard.json b/data/documentation/codeedittextview/textattachmentaction/discard.json
new file mode 100644
index 000000000..676e68911
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentaction/discard.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"discard"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentaction\/discard"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/discard","interfaceLanguage":"swift"},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16AttachmentActionO7discardyA2CmF","symbolKind":"case","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"discard","kind":"identifier"}],"title":"TextAttachmentAction.discard","roleHeading":"Case","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction"]]},"kind":"symbol","abstract":[{"text":"Discard the attachment and perform no other action, this is the default action.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction/discard":{"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction\/discard","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/discard","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"discard","kind":"identifier"}],"abstract":[{"text":"Discard the attachment and perform no other action, this is the default action.","type":"text"}],"title":"TextAttachmentAction.discard"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction":{"title":"TextAttachmentAction","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","navigatorTitle":[{"text":"TextAttachmentAction","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentaction/none.json b/data/documentation/codeedittextview/textattachmentaction/none.json
new file mode 100644
index 000000000..1350e7678
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentaction/none.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16AttachmentActionO4noneyA2CmF","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"none","kind":"identifier"}],"symbolKind":"case","title":"TextAttachmentAction.none","roleHeading":"Case"},"sections":[],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"type":"text","text":"Perform no action."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"none","kind":"identifier"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textattachmentaction\/none"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/none"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction/none":{"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction\/none","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/none","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"none"}],"abstract":[{"text":"Perform no action.","type":"text"}],"title":"TextAttachmentAction.none"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction":{"title":"TextAttachmentAction","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","navigatorTitle":[{"text":"TextAttachmentAction","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentaction/replace(text:).json b/data/documentation/codeedittextview/textattachmentaction/replace(text:).json
new file mode 100644
index 000000000..b6c155114
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentaction/replace(text:).json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16AttachmentActionO7replaceyACSS_tcACmF","role":"symbol","roleHeading":"Case","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"replace","kind":"identifier"},{"kind":"text","text":"("},{"text":"text","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":")"}],"symbolKind":"case","title":"TextAttachmentAction.replace(text:)"},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"replace","kind":"identifier"},{"text":"(","kind":"text"},{"text":"text","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/replace(text:)","interfaceLanguage":"swift"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentaction\/replace(text:)"]}],"kind":"symbol","abstract":[{"type":"text","text":"Replace the attachment range with the given string."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction":{"title":"TextAttachmentAction","fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"TextAttachmentAction","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction","navigatorTitle":[{"text":"TextAttachmentAction","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentAction/replace(text:)":{"title":"TextAttachmentAction.replace(text:)","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"replace","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"text"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"type":"topic","kind":"symbol","abstract":[{"text":"Replace the attachment range with the given string.","type":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentaction\/replace(text:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentAction\/replace(text:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanager.json b/data/documentation/codeedittextview/textattachmentmanager.json
new file mode 100644
index 000000000..926d9bd8b
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanager.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"final"},{"kind":"text","text":" "},{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"text":"TextAttachmentManager","kind":"identifier"}]}],"kind":"declarations"},{"kind":"content","content":[{"level":2,"anchor":"overview","text":"Overview","type":"heading"},{"type":"paragraph","inlineContent":[{"text":"If two attachments are overlapping, the one placed further along in the document will be","type":"text"},{"text":" ","type":"text"},{"text":"ignored when laying out attachments.","type":"text"}]}]}],"abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"type":"text","text":"line range."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textattachmentmanager"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"TextAttachmentManager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextAttachmentManager"}],"externalID":"s:16CodeEditTextView0C17AttachmentManagerC","symbolKind":"class","navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"roleHeading":"Class","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/delegate"],"anchor":"Instance-Properties","title":"Instance Properties"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/add(_:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsOverlapping(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsStartingIn(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/remove(atOffset:)"],"title":"Instance Methods","generated":true,"anchor":"Instance-Methods"}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/add(_:for:)":{"url":"\/documentation\/codeedittextview\/textattachmentmanager\/add(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"add"},{"kind":"text","text":"("},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","kind":"typeIdentifier","text":"TextAttachment"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"type":"topic","abstract":[{"type":"text","text":"Adds a new attachment, keeping "},{"type":"codeVoice","code":"orderedAttachments"},{"text":" sorted by range.location.","type":"text"},{"text":" ","type":"text"},{"text":"If two attachments overlap, the layout phase will later ignore the one with the higher start.","type":"text"}],"title":"add(_:for:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/add(_:for:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/getAttachmentsOverlapping(_:)":{"title":"getAttachmentsOverlapping(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsOverlapping(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Returns all attachments whose ranges overlap the given query range.","type":"text"}],"url":"\/documentation\/codeedittextview\/textattachmentmanager\/getattachmentsoverlapping(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getAttachmentsOverlapping","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":") -> [","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier","text":"AnyTextAttachment"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/remove(atOffset:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"remove","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/remove(atOffset:)","url":"\/documentation\/codeedittextview\/textattachmentmanager\/remove(atoffset:)","abstract":[{"type":"text","text":"Removes an attachment and invalidates layout for the removed range."}],"role":"symbol","type":"topic","title":"remove(atOffset:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/getAttachmentsStartingIn(_:)":{"url":"\/documentation\/codeedittextview\/textattachmentmanager\/getattachmentsstartingin(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"getAttachmentsStartingIn","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":") -> [","kind":"text"},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":"]"}],"type":"topic","abstract":[{"text":"Finds attachments starting in the given line range, and returns them as an array.","type":"text"},{"text":" ","type":"text"},{"text":"Returned attachment’s ranges will be relative to the ","type":"text"},{"inlineContent":[{"type":"text","text":"document"}],"type":"emphasis"},{"type":"text","text":", not the line."}],"title":"getAttachmentsStartingIn(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsStartingIn(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/delegate":{"title":"delegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/delegate","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textattachmentmanager\/delegate","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"delegate","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C25AttachmentManagerDelegateP","kind":"typeIdentifier","text":"TextAttachmentManagerDelegate"},{"text":"?","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanager/add(_:for:).json b/data/documentation/codeedittextview/textattachmentmanager/add(_:for:).json
new file mode 100644
index 000000000..2a7bca491
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanager/add(_:for:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textattachmentmanager\/add(_:for:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"add"},{"kind":"text","text":"("},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","text":"TextAttachment"},{"kind":"text","text":", "},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":")"}],"title":"add(_:for:)","externalID":"s:16CodeEditTextView0C17AttachmentManagerC3add_3foryAA0cE0_p_So8_NSRangeVtF","symbolKind":"method"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/add(_:for:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"add","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"attachment","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"any"},{"text":" ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","text":"TextAttachment","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":")"}],"platforms":["macOS"]}]},{"content":[{"type":"heading","level":2,"anchor":"discussion","text":"Discussion"},{"type":"aside","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":""},{"code":"O(n log(n))","type":"codeVoice"},{"text":" due to array insertion. Could be improved with a binary tree.","type":"text"}]}],"name":"Complexity","style":"note"}],"kind":"content"}],"abstract":[{"text":"Adds a new attachment, keeping ","type":"text"},{"code":"orderedAttachments","type":"codeVoice"},{"text":" sorted by range.location.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"If two attachments overlap, the layout phase will later ignore the one with the higher start."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/add(_:for:)":{"url":"\/documentation\/codeedittextview\/textattachmentmanager\/add(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"add"},{"kind":"text","text":"("},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","kind":"typeIdentifier","text":"TextAttachment"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"type":"topic","abstract":[{"type":"text","text":"Adds a new attachment, keeping "},{"type":"codeVoice","code":"orderedAttachments"},{"text":" sorted by range.location.","type":"text"},{"text":" ","type":"text"},{"text":"If two attachments overlap, the layout phase will later ignore the one with the higher start.","type":"text"}],"title":"add(_:for:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/add(_:for:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanager/delegate.json b/data/documentation/codeedittextview/textattachmentmanager/delegate.json
new file mode 100644
index 000000000..869d9477e
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanager/delegate.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager"]]},"kind":"symbol","sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"weak"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delegate"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C25AttachmentManagerDelegateP","text":"TextAttachmentManagerDelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textattachmentmanager\/delegate"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextAttachmentManagerDelegate","preciseIdentifier":"s:16CodeEditTextView0C25AttachmentManagerDelegateP"},{"kind":"text","text":"?"}],"symbolKind":"property","title":"delegate","externalID":"s:16CodeEditTextView0C17AttachmentManagerC8delegateAA0ceF8Delegate_pSgvp","modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Property"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/delegate"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","role":"symbol","kind":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentManagerDelegate","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachmentManagerDelegate"}],"url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate","title":"TextAttachmentManagerDelegate","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/delegate":{"title":"delegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/delegate","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textattachmentmanager\/delegate","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"delegate","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C25AttachmentManagerDelegateP","kind":"typeIdentifier","text":"TextAttachmentManagerDelegate"},{"text":"?","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanager/getattachmentsoverlapping(_:).json b/data/documentation/codeedittextview/textattachmentmanager/getattachmentsoverlapping(_:).json
new file mode 100644
index 000000000..ad0d65910
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanager/getattachmentsoverlapping(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentmanager\/getattachmentsoverlapping(_:)"]}],"abstract":[{"text":"Returns all attachments whose ranges overlap the given query range.","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsOverlapping(_:)"},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"getAttachmentsOverlapping(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"getAttachmentsOverlapping","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":"]"}],"externalID":"s:16CodeEditTextView0C17AttachmentManagerC25getAttachmentsOverlappingySayAA03AnycE0VGSo8_NSRangeVF","roleHeading":"Instance Method","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getAttachmentsOverlapping","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":") -> ["},{"text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"},{"kind":"text","text":"]"}],"platforms":["macOS"],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"name":"range","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The "},{"type":"codeVoice","code":"NSRange"},{"text":" to test for overlap.","type":"text"}]}]}]},{"content":[{"text":"Return Value","anchor":"return-value","level":2,"type":"heading"},{"inlineContent":[{"text":"An array of ","type":"text"},{"code":"AnyTextAttachment","type":"codeVoice"},{"text":" instances whose ranges intersect ","type":"text"},{"code":"query","type":"codeVoice"},{"text":".","type":"text"}],"type":"paragraph"}],"kind":"content"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/getAttachmentsOverlapping(_:)":{"title":"getAttachmentsOverlapping(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsOverlapping(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Returns all attachments whose ranges overlap the given query range.","type":"text"}],"url":"\/documentation\/codeedittextview\/textattachmentmanager\/getattachmentsoverlapping(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getAttachmentsOverlapping","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":") -> [","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier","text":"AnyTextAttachment"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanager/getattachmentsstartingin(_:).json b/data/documentation/codeedittextview/textattachmentmanager/getattachmentsstartingin(_:).json
new file mode 100644
index 000000000..775103610
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanager/getattachmentsstartingin(_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsStartingIn(_:)"},"abstract":[{"text":"Finds attachments starting in the given line range, and returns them as an array.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"Returned attachment’s ranges will be relative to the "},{"type":"emphasis","inlineContent":[{"type":"text","text":"document"}]},{"type":"text","text":", not the line."}],"metadata":{"title":"getAttachmentsStartingIn(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"getAttachmentsStartingIn"},{"kind":"text","text":"("},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":"]","kind":"text"}],"externalID":"s:16CodeEditTextView0C17AttachmentManagerC24getAttachmentsStartingInySayAA03AnycE0VGSo8_NSRangeVF","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getAttachmentsStartingIn","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"AnyTextAttachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":"]"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"content","content":[{"text":"Discussion","level":2,"anchor":"discussion","type":"heading"},{"style":"note","content":[{"inlineContent":[{"text":"","type":"text"},{"type":"codeVoice","code":"O(n log(n))"},{"type":"text","text":", ideally "},{"code":"O(log(n))","type":"codeVoice"}],"type":"paragraph"}],"type":"aside","name":"Complexity"}]}],"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentmanager\/getattachmentsstartingin(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/getAttachmentsStartingIn(_:)":{"url":"\/documentation\/codeedittextview\/textattachmentmanager\/getattachmentsstartingin(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"getAttachmentsStartingIn","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":") -> [","kind":"text"},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":"]"}],"type":"topic","abstract":[{"text":"Finds attachments starting in the given line range, and returns them as an array.","type":"text"},{"text":" ","type":"text"},{"text":"Returned attachment’s ranges will be relative to the ","type":"text"},{"inlineContent":[{"type":"text","text":"document"}],"type":"emphasis"},{"type":"text","text":", not the line."}],"title":"getAttachmentsStartingIn(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/getAttachmentsStartingIn(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanager/remove(atoffset:).json b/data/documentation/codeedittextview/textattachmentmanager/remove(atoffset:).json
new file mode 100644
index 000000000..a11f67565
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanager/remove(atoffset:).json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentmanager\/remove(atoffset:)"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","symbolKind":"method","externalID":"s:16CodeEditTextView0C17AttachmentManagerC6remove8atOffsetAA03AnycE0VSgSi_tF","title":"remove(atOffset:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"remove","kind":"identifier"},{"kind":"text","text":"("},{"text":"atOffset","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"text":"?","kind":"text"}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@discardableResult"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"remove"},{"text":"(","kind":"text"},{"text":"atOffset","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"offset"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"text":"AnyTextAttachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"parameters":[{"name":"offset","content":[{"type":"paragraph","inlineContent":[{"text":"The offset the attachment begins at.","type":"text"}]}]}],"kind":"parameters"},{"kind":"content","content":[{"level":2,"anchor":"return-value","text":"Return Value","type":"heading"},{"type":"paragraph","inlineContent":[{"type":"text","text":"The removed attachment, if it exists."}]}]}],"abstract":[{"text":"Removes an attachment and invalidates layout for the removed range.","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/remove(atOffset:)","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager/remove(atOffset:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"remove","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager\/remove(atOffset:)","url":"\/documentation\/codeedittextview\/textattachmentmanager\/remove(atoffset:)","abstract":[{"type":"text","text":"Removes an attachment and invalidates layout for the removed range."}],"role":"symbol","type":"topic","title":"remove(atOffset:)","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanagerdelegate.json b/data/documentation/codeedittextview/textattachmentmanagerdelegate.json
new file mode 100644
index 000000000..c4ad21e93
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanagerdelegate.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textattachmentmanagerdelegate"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"title":"TextAttachmentManagerDelegate","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentManagerDelegate","kind":"identifier"}],"externalID":"s:16CodeEditTextView0C25AttachmentManagerDelegateP","symbolKind":"protocol","navigatorTitle":[{"text":"TextAttachmentManagerDelegate","kind":"identifier"}],"roleHeading":"Protocol","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentManagerDelegate","kind":"identifier"},{"text":" : AnyObject","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","interfaceLanguage":"swift"},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidAdd(_:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidRemove(_:for:)"],"anchor":"Instance-Methods","title":"Instance Methods","generated":true}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate/textAttachmentDidRemove(_:for:)":{"title":"textAttachmentDidRemove(_:for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidRemove(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textAttachmentDidRemove"},{"text":"(","kind":"text"},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","kind":"typeIdentifier","text":"TextAttachment"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":")","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","required":true,"url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate\/textattachmentdidremove(_:for:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate/textAttachmentDidAdd(_:for:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidAdd(_:for:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate\/textattachmentdidadd(_:for:)","kind":"symbol","required":true,"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textAttachmentDidAdd","kind":"identifier"},{"text":"(","kind":"text"},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","text":"TextAttachment"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":")","kind":"text"}],"title":"textAttachmentDidAdd(_:for:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","role":"symbol","kind":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentManagerDelegate","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachmentManagerDelegate"}],"url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate","title":"TextAttachmentManagerDelegate","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidadd(_:for:).json b/data/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidadd(_:for:).json
new file mode 100644
index 000000000..2d2ae1c2b
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidadd(_:for:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidAdd(_:for:)"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textAttachmentDidAdd","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"attachment","kind":"internalParam"},{"kind":"text","text":": "},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","text":"TextAttachment","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":")","kind":"text"}]}],"kind":"declarations"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C25AttachmentManagerDelegateP04textE6DidAdd_3foryAA0cE0_p_So8_NSRangeVtF","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textAttachmentDidAdd","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"any"},{"kind":"text","text":" "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","text":"TextAttachment"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"required":true,"symbolKind":"method","roleHeading":"Instance Method","title":"textAttachmentDidAdd(_:for:)"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentmanagerdelegate\/textattachmentdidadd(_:for:)"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","role":"symbol","kind":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentManagerDelegate","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachmentManagerDelegate"}],"url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate","title":"TextAttachmentManagerDelegate","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate/textAttachmentDidAdd(_:for:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidAdd(_:for:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate\/textattachmentdidadd(_:for:)","kind":"symbol","required":true,"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textAttachmentDidAdd","kind":"identifier"},{"text":"(","kind":"text"},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","text":"TextAttachment"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":")","kind":"text"}],"title":"textAttachmentDidAdd(_:for:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidremove(_:for:).json b/data/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidremove(_:for:).json
new file mode 100644
index 000000000..55dbed5e1
--- /dev/null
+++ b/data/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidremove(_:for:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textAttachmentDidRemove","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"attachment"},{"kind":"text","text":": "},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","kind":"typeIdentifier","text":"TextAttachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"range"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":")","kind":"text"}]}],"kind":"declarations"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"externalID":"s:16CodeEditTextView0C25AttachmentManagerDelegateP04textE9DidRemove_3foryAA0cE0_p_So8_NSRangeVtF","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","required":true,"title":"textAttachmentDidRemove(_:for:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textAttachmentDidRemove","kind":"identifier"},{"text":"(","kind":"text"},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","text":"TextAttachment"},{"kind":"text","text":", "},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"roleHeading":"Instance Method","role":"symbol"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidRemove(_:for:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate"]]},"sections":[],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textattachmentmanagerdelegate\/textattachmentdidremove(_:for:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate","role":"symbol","kind":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextAttachmentManagerDelegate","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachmentManagerDelegate"}],"url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate","title":"TextAttachmentManagerDelegate","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManagerDelegate/textAttachmentDidRemove(_:for:)":{"title":"textAttachmentDidRemove(_:for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManagerDelegate\/textAttachmentDidRemove(_:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textAttachmentDidRemove"},{"text":"(","kind":"text"},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C10AttachmentP","kind":"typeIdentifier","text":"TextAttachment"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":")","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","required":true,"url":"\/documentation\/codeedittextview\/textattachmentmanagerdelegate\/textattachmentdidremove(_:for:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager.json b/data/documentation/codeedittextview/textlayoutmanager.json
new file mode 100644
index 000000000..06a7b55ad
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager.json
@@ -0,0 +1 @@
+{"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","interfaceLanguage":"swift"},"sections":[],"relationshipsSections":[{"kind":"relationships","title":"Inherits From","type":"inheritsFrom","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSObject"]},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextStorageDelegate","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","doc:\/\/codeedittextview.CodeEditTextView\/s8CopyableP","doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"type":"conformsTo","title":"Conforms To","kind":"relationships"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"The text layout manager manages laying out lines in a code document.","type":"text"}],"metadata":{"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLayoutManager"}],"roleHeading":"Class","modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"externalID":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager","symbolKind":"class","title":"TextLayoutManager","role":"symbol"},"seeAlsoSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"],"generated":true,"anchor":"Text-Layout","title":"Text Layout"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManager"}]}],"kind":"declarations"}],"topicSections":[{"title":"Structures","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"],"anchor":"Structures"},{"anchor":"Initializers","generated":true,"title":"Initializers","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)"]},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/attachments","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/delegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/detectedLineEnding","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/edgeInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invisibleCharacterDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/isInTransaction","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineBreakStrategy","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineCount","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/maxLineLayoutWidth","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/renderDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/verticalLayoutPadding","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLinesWidth"],"generated":true,"anchor":"Instance-Properties","title":"Instance Properties"},{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterRect(in:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterXPosition(in:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimateLineHeight()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedHeight()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedWidth()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRange(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRect(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/layoutLines(in:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesInRange(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesStartingAt(_:until:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectForOffset(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectsFor(range:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/roundedPathForRange(_:cornerRadius:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/setNeedsLayout()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForIndex(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForOffset(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForPosition(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textOffsetAtPoint(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/visibleLines()"],"anchor":"Instance-Methods","title":"Instance Methods"},{"generated":true,"anchor":"Default-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/NSTextStorageDelegate-Implementations"],"title":"Default Implementations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/delegate":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/delegate","abstract":[],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delegate"},{"text":": ","kind":"text"},{"text":"TextLayoutManagerDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP"},{"kind":"text","text":"?"}],"title":"delegate","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/delegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSObject":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","title":"ObjectiveC.NSObjectProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/detectedLineEnding":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/detectedLineEnding","abstract":[],"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"detectedLineEnding","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView10LineEndingO","text":"LineEnding","kind":"typeIdentifier"}],"title":"detectedLineEnding","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/detectedlineending"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:)","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"text":"textStorage","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"lineHeightMultiplier"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"text":"wrapLines","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"text":"textView","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView","text":"NSView"},{"kind":"text","text":", "},{"kind":"externalParam","text":"delegate"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP","text":"TextLayoutManagerDelegate","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"renderDelegate"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","text":"TextLayoutManagerRenderDelegate"},{"text":"?, ","kind":"text"},{"text":"invisibleCharacterDelegate","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate"},{"text":"?)","kind":"text"}],"type":"topic","abstract":[{"type":"text","text":"Initialize a text layout manager and prepare it for use."}],"title":"init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/visibleLines()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/visibleLines()","abstract":[{"type":"text","text":"Iterate over all visible lines."}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"visibleLines","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"YPositionIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV"}],"title":"visibleLines()","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/visiblelines()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/estimateLineHeight()":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatelineheight()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"estimateLineHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"type":"topic","abstract":[{"text":"Estimates the line height for the current typing attributes.","type":"text"},{"text":" ","type":"text"},{"text":"Takes into account ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier"},{"text":".","type":"text"}],"title":"estimateLineHeight()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimateLineHeight()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineBreakStrategy":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineBreakStrategy","abstract":[{"type":"text","text":"The strategy to use when breaking lines. Defaults to "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"reference"},{"type":"text","text":"."}],"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineBreakStrategy","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO","text":"LineBreakStrategy","kind":"typeIdentifier"}],"title":"lineBreakStrategy","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/linebreakstrategy"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/renderDelegate":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"renderDelegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","text":"TextLayoutManagerRenderDelegate"},{"kind":"text","text":"?"}],"role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/renderdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/renderDelegate","title":"renderDelegate","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/edgeInsets":{"title":"edgeInsets","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/edgeInsets","kind":"symbol","abstract":[{"type":"text","text":"The edge insets to inset all text layout with."}],"type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/edgeinsets","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"edgeInsets"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/s23CustomStringConvertibleP":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","title":"Swift.CustomStringConvertible"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/rectsFor(range:)":{"title":"rectsFor(range:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectsFor(range:)","kind":"symbol","abstract":[{"type":"text","text":"Calculates all text bounding rects that intersect with a given range."}],"type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rectsfor(range:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"rectsFor","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"preciseIdentifier":"c:@S@CGRect","text":"CGRect","kind":"typeIdentifier"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/wrapLinesWidth":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLinesWidth","type":"topic","title":"wrapLinesWidth","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"wrapLinesWidth","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/wraplineswidth","abstract":[{"type":"text","text":"The width of the space available to draw text fragments when wrapping lines."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/characterRect(in:for:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/characterrect(in:for:)","abstract":[],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"characterRect","kind":"identifier"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:@S@CGRect","text":"CGRect","kind":"typeIdentifier"}],"kind":"symbol","title":"characterRect(in:for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterRect(in:for:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/characterXPosition(in:for:)":{"abstract":[{"type":"text","text":"Finds the x position of the offset in the string the fragment represents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterXPosition(in:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"characterXPosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"type":"topic","kind":"symbol","title":"characterXPosition(in:for:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/characterxposition(in:for:)"},"doc://codeedittextview.CodeEditTextView/objc(cs)NSObject":{"type":"unresolvable","title":"ObjectiveC.NSObject","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSObject"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/invalidateLayoutForRect(_:)":{"abstract":[{"type":"text","text":"Invalidates layout for the given rect."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRect(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"invalidateLayoutForRect","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"},{"text":")","kind":"text"}],"type":"topic","kind":"symbol","title":"invalidateLayoutForRect(_:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrect(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/setNeedsLayout()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/setNeedsLayout()","type":"topic","title":"setNeedsLayout()","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setNeedsLayout","kind":"identifier"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/setneedslayout()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineHeightMultiplier":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineHeightMultiplier"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","title":"lineHeightMultiplier","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/lineheightmultiplier"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/isInTransaction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/isInTransaction","abstract":[],"type":"topic","role":"symbol","title":"isInTransaction","url":"\/documentation\/codeedittextview\/textlayoutmanager\/isintransaction","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"isInTransaction"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/objc(pl)NSTextStorageDelegate":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextStorageDelegate","type":"unresolvable","title":"AppKit.NSTextStorageDelegate"},"doc://codeedittextview.CodeEditTextView/s7CVarArgP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","type":"unresolvable","title":"Swift.CVarArg"},"doc://codeedittextview.CodeEditTextView/SH":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","type":"unresolvable","title":"Swift.Hashable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textLineForOffset(_:)":{"abstract":[{"text":"Finds a text line for a given text offset.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForOffset(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textLineForOffset","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"type":"topic","kind":"symbol","title":"textLineForOffset(_:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforoffset(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/estimatedHeight()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedHeight()","type":"topic","title":"estimatedHeight()","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"estimatedHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatedheight()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/roundedPathForRange(_:cornerRadius:)":{"abstract":[{"text":"Creates a smooth bezier path for the specified range.","type":"text"},{"text":" ","type":"text"},{"text":"If the range exceeds the available text, it uses the maximum available range.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/roundedPathForRange(_:cornerRadius:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"roundedPathForRange"},{"kind":"text","text":"("},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"text":"cornerRadius","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":") -> ","kind":"text"},{"text":"NSBezierPath","preciseIdentifier":"c:objc(cs)NSBezierPath","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"type":"topic","kind":"symbol","title":"roundedPathForRange(_:cornerRadius:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/roundedpathforrange(_:cornerradius:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/layoutLines(in:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/layoutLines(in:)","type":"topic","title":"layoutLines(in:)","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"layoutLines","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"kind":"text","text":"?) -> "},{"kind":"typeIdentifier","text":"Set","preciseIdentifier":"s:Sh"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"ID","preciseIdentifier":"s:16CodeEditTextView0C4LineC2IDa","kind":"typeIdentifier"},{"text":">","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/layoutlines(in:)","abstract":[{"text":"Lays out all visible lines","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/attachments":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/attachments","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"attachments","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C17AttachmentManagerC","text":"TextAttachmentManager","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","title":"attachments","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/attachments"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/invalidateLayoutForRange(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRange(_:)","type":"topic","title":"invalidateLayoutForRange(_:)","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"invalidateLayoutForRange","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":")"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrange(_:)","abstract":[{"text":"Invalidates layout for the given range of text.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/estimatedWidth()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedWidth()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"estimatedWidth","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","title":"estimatedWidth()","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatedwidth()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/invisibleCharacterDelegate":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invisibleCharacterDelegate","type":"topic","title":"invisibleCharacterDelegate","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"invisibleCharacterDelegate","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/invisiblecharacterdelegate","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/wrapLines":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"wrapLines"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"type":"topic","kind":"symbol","title":"wrapLines","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/wraplines"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/rectForOffset(_:)":{"title":"rectForOffset(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectForOffset(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Find a position for the character at a given offset.","type":"text"},{"type":"text","text":" "},{"text":"Returns the rect of the character at the given offset.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"The rect may represent more than one unicode unit, for instance if the offset is at the beginning of an"},{"type":"text","text":" "},{"text":"emoji or non-latin glyph.","type":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rectforoffset(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"rectForOffset"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@S@CGRect","text":"CGRect","kind":"typeIdentifier"},{"kind":"text","text":"?"}]},"doc://codeedittextview.CodeEditTextView/SQ":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","title":"Swift.Equatable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/NSTextStorageDelegate-Implementations":{"abstract":[],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/NSTextStorageDelegate-Implementations","role":"collectionGroup","kind":"article","title":"NSTextStorageDelegate Implementations","url":"\/documentation\/codeedittextview\/textlayoutmanager\/nstextstoragedelegate-implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/verticalLayoutPadding":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/verticalLayoutPadding","url":"\/documentation\/codeedittextview\/textlayoutmanager\/verticallayoutpadding","title":"verticalLayoutPadding","abstract":[{"text":"The amount of extra vertical padding used to lay out lines in before they come into view.","type":"text"}],"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"verticalLayoutPadding","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/word":{"abstract":[{"type":"text","text":"Break lines at word boundaries when possible."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/word","kind":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"title":"LineBreakStrategy.word"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/linesInRange(_:)":{"abstract":[{"type":"text","text":"Iterate over all lines that overlap a document range."}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesInRange(_:)","role":"symbol","kind":"symbol","title":"linesInRange(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"linesInRange"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"RangeIterator","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/linesinrange(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineCount":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineCount","url":"\/documentation\/codeedittextview\/textlayoutmanager\/linecount","title":"lineCount","abstract":[{"type":"text","text":"The number of lines in the document"}],"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineCount","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/maxLineLayoutWidth":{"role":"symbol","type":"topic","title":"maxLineLayoutWidth","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"maxLineLayoutWidth"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/maxLineLayoutWidth","abstract":[{"type":"text","text":"The maximum width available to lay out lines in, used to determine how much space is available for laying out"},{"text":" ","type":"text"},{"text":"lines. Evals to ","type":"text"},{"code":".greatestFiniteMagnitude","type":"codeVoice"},{"text":" when ","type":"text"},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","type":"reference"},{"type":"text","text":" is "},{"code":"false","type":"codeVoice"},{"text":".","type":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/maxlinelayoutwidth","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/linesStartingAt(_:until:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/linesstartingat(_:until:)","abstract":[{"text":"Iterate over all lines in the y position range.","type":"text"}],"type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesStartingAt(_:until:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"linesStartingAt","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"until","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","text":"YPositionIterator"}],"title":"linesStartingAt(_:until:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/s8CopyableP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s8CopyableP","title":"Swift.Copyable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textLineForIndex(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textLineForIndex","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforindex(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForIndex(_:)","type":"topic","abstract":[{"text":"Finds text line and returns it if found.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"Lines are 0 indexed."}],"title":"textLineForIndex(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/s28CustomDebugStringConvertibleP":{"type":"unresolvable","title":"Swift.CustomDebugStringConvertible","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textOffsetAtPoint(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"textOffsetAtPoint"},{"text":"(","kind":"text"},{"text":"CGPoint","preciseIdentifier":"c:@S@CGPoint","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/textoffsetatpoint(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textOffsetAtPoint(_:)","type":"topic","abstract":[{"type":"text","text":"Calculates the text position at the given point in the view."}],"title":"textOffsetAtPoint(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineStorage":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineStorage","url":"\/documentation\/codeedittextview\/textlayoutmanager\/linestorage","title":"lineStorage","kind":"symbol","abstract":[],"type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineStorage","kind":"identifier"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textLineForPosition(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textLineForPosition","kind":"identifier"},{"kind":"text","text":"("},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforposition(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForPosition(_:)","type":"topic","abstract":[{"text":"Finds a text line for the given y position relative to the text view.","type":"text"}],"title":"textLineForPosition(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/attachments.json b/data/documentation/codeedittextview/textlayoutmanager/attachments.json
new file mode 100644
index 000000000..c3060575e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/attachments.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"attachments","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextAttachmentManager","preciseIdentifier":"s:16CodeEditTextView0C17AttachmentManagerC"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC11attachmentsAA0c10AttachmentF0Cvp","title":"attachments","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/attachments"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/attachments"]}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"attachments","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C17AttachmentManagerC","kind":"typeIdentifier","text":"TextAttachmentManager","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachmentManager":{"kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Manages a set of attachments for the layout manager, provides methods for efficiently finding attachments for a"},{"type":"text","text":" "},{"text":"line range.","type":"text"}],"navigatorTitle":[{"text":"TextAttachmentManager","kind":"identifier"}],"title":"TextAttachmentManager","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachmentManager","url":"\/documentation\/codeedittextview\/textattachmentmanager","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextAttachmentManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/attachments":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/attachments","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"attachments","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C17AttachmentManagerC","text":"TextAttachmentManager","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","title":"attachments","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/attachments"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/characterrect(in:for:).json b/data/documentation/codeedittextview/textlayoutmanager/characterrect(in:for:).json
new file mode 100644
index 000000000..fe9ed8fd7
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/characterrect(in:for:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterRect(in:for:)","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterRect"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"lineFragment","kind":"internalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":") -> ","kind":"text"},{"text":"CGRect","kind":"typeIdentifier","preciseIdentifier":"c:@S@CGRect"}]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/characterrect(in:for:)"]}],"kind":"symbol","metadata":{"roleHeading":"Instance Method","symbolKind":"method","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"characterRect","kind":"identifier"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@S@CGRect","kind":"typeIdentifier","text":"CGRect"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC13characterRect2in3forSo6CGRectVAA12LineFragmentC_So8_NSRangeVtF","title":"characterRect(in:for:)"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/characterRect(in:for:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/characterrect(in:for:)","abstract":[],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"characterRect","kind":"identifier"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:@S@CGRect","text":"CGRect","kind":"typeIdentifier"}],"kind":"symbol","title":"characterRect(in:for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterRect(in:for:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/characterxposition(in:for:).json b/data/documentation/codeedittextview/textlayoutmanager/characterxposition(in:for:).json
new file mode 100644
index 000000000..ed8a190a4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/characterxposition(in:for:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/characterxposition(in:for:)"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterXPosition(in:for:)","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"characterXPosition","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"kind":"text","text":" "},{"text":"lineFragment","kind":"internalParam"},{"kind":"text","text":": "},{"text":"LineFragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"offset","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The line fragment to calculate for."}]}],"name":"lineFragment"},{"content":[{"type":"paragraph","inlineContent":[{"text":"The offset, relative to the start of the ","type":"text"},{"inlineContent":[{"type":"text","text":"line"}],"type":"emphasis"},{"text":".","type":"text"}]}],"name":"offset"}]},{"kind":"content","content":[{"level":2,"text":"Return Value","anchor":"return-value","type":"heading"},{"inlineContent":[{"type":"text","text":"The x position of the character in the drawn line, from the left."}],"type":"paragraph"}]}],"abstract":[{"text":"Finds the x position of the offset in the string the fragment represents.","type":"text"}],"metadata":{"extendedModule":"CodeEditTextView","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"characterXPosition","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC18characterXPosition2in3for14CoreFoundation7CGFloatVAA12LineFragmentC_SitF","title":"characterXPosition(in:for:)","symbolKind":"method","role":"symbol"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/characterXPosition(in:for:)":{"abstract":[{"type":"text","text":"Finds the x position of the offset in the string the fragment represents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/characterXPosition(in:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"characterXPosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"type":"topic","kind":"symbol","title":"characterXPosition(in:for:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/characterxposition(in:for:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/delegate.json b/data/documentation/codeedittextview/textlayoutmanager/delegate.json
new file mode 100644
index 000000000..8ac9447a9
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/delegate.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/delegate"]}],"metadata":{"title":"delegate","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"delegate","kind":"identifier"},{"kind":"text","text":": "},{"text":"TextLayoutManagerDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP"},{"text":"?","kind":"text"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC8delegateAA0ceF8Delegate_pSgvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"weak","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"delegate","kind":"identifier"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP","text":"TextLayoutManagerDelegate","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/delegate"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/delegate":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/delegate","abstract":[],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delegate"},{"text":": ","kind":"text"},{"text":"TextLayoutManagerDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP"},{"kind":"text","text":"?"}],"title":"delegate","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/delegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/detectedlineending.json b/data/documentation/codeedittextview/textlayoutmanager/detectedlineending.json
new file mode 100644
index 000000000..ca479ebc5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/detectedlineending.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/detectedlineending"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/detectedLineEnding"},"metadata":{"roleHeading":"Instance Property","symbolKind":"property","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC18detectedLineEndingAA0hI0Ovp","role":"symbol","title":"detectedLineEnding","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"detectedLineEnding"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView10LineEndingO","text":"LineEnding"}]},"kind":"symbol","sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"detectedLineEnding","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView10LineEndingO","text":"LineEnding","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/detectedLineEnding":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/detectedLineEnding","abstract":[],"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"detectedLineEnding","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView10LineEndingO","text":"LineEnding","kind":"typeIdentifier"}],"title":"detectedLineEnding","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/detectedlineending"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/determinevisibleposition(for:).json b/data/documentation/codeedittextview/textlayoutmanager/determinevisibleposition(for:).json
new file mode 100644
index 000000000..32310be12
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/determinevisibleposition(for:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","interfaceLanguage":"swift"},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"kind":"text","text":"<"},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"kind":"text","text":">."},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">.","kind":"text"},{"kind":"typeIdentifier","text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SN","text":"ClosedRange"},{"text":"<","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":">)?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC24determineVisiblePosition3forAA0C11LineStorageC0ckI0VyAA0cK0C_G8position_SNySiG10indexRangetSgALSg_tF","title":"determineVisiblePosition(for:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"determineVisiblePosition"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"originalPosition"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","kind":"typeIdentifier","text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"kind":"text","text":"<"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"},{"kind":"text","text":">."},{"text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"},{"kind":"text","text":"?) -> (position"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","text":"TextLinePosition","kind":"typeIdentifier"},{"text":", indexRange","kind":"text"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SN","text":"ClosedRange","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":">)?","kind":"text"}]}]},{"parameters":[{"name":"originalPosition","content":[{"inlineContent":[{"text":"The initial ","type":"text"},{"type":"codeVoice","code":"TextLinePosition"},{"type":"text","text":" to inspect."},{"type":"text","text":" "},{"type":"text","text":"Pass in the position you got from "},{"type":"codeVoice","code":"lineStorage.getLine(atOffset:)"},{"type":"text","text":" or similar."}],"type":"paragraph"}]}],"kind":"parameters"},{"content":[{"level":2,"anchor":"return-value","type":"heading","text":"Return Value"},{"type":"paragraph","inlineContent":[{"type":"text","text":"A tuple containing "},{"type":"codeVoice","code":"position"},{"type":"text","text":": A "},{"type":"codeVoice","code":"TextLinePosition"},{"type":"text","text":" whose "},{"code":"range","type":"codeVoice"},{"type":"text","text":" and "},{"type":"codeVoice","code":"index"},{"type":"text","text":" have been"},{"type":"text","text":" "},{"text":"adjusted to include any attachment‐spanned lines.. ","type":"text"},{"type":"codeVoice","code":"indexRange"},{"type":"text","text":": A "},{"code":"ClosedRange","type":"codeVoice"},{"type":"text","text":" listing all of"},{"text":" ","type":"text"},{"type":"text","text":"the line indices that are now covered by the returned position."},{"text":" ","type":"text"},{"type":"text","text":"Returns "},{"code":"nil","type":"codeVoice"},{"text":" if ","type":"text"},{"type":"codeVoice","code":"originalPosition"},{"type":"text","text":" is "},{"code":"nil","type":"codeVoice"},{"text":".","type":"text"}]}],"kind":"content"},{"content":[{"level":2,"anchor":"discussion","text":"Discussion","type":"heading"},{"type":"paragraph","inlineContent":[{"text":"For example, given the following: ","type":"text"},{"inlineContent":[{"type":"text","text":"("},{"type":"codeVoice","code":"["},{"text":" == attachment start, ","type":"text"},{"type":"codeVoice","code":"]"},{"text":" == attachment end)","type":"text"}],"type":"emphasis"}]},{"code":["Line 1","Line[ 2","Line 3","Line] 4"],"syntax":null,"type":"codeListing"},{"type":"paragraph","inlineContent":[{"text":"If you start at the position for “Line 2”, the first and last attachments","type":"text"},{"text":" ","type":"text"},{"text":"overlap lines 2–4, so this method will extend the range to cover lines 2–4","type":"text"},{"type":"text","text":" "},{"text":"and return a position whose ","type":"text"},{"code":"range","type":"codeVoice"},{"type":"text","text":" spans the entire attachment."}]},{"text":"Why recursion?","type":"heading","anchor":"Why-recursion","level":1},{"type":"paragraph","inlineContent":[{"type":"text","text":"When an attachment extends the visible range, it may pull in new lines that themselves overlap other"},{"type":"text","text":" "},{"type":"text","text":"attachments. A simple one‐pass merge wouldn’t catch those secondary overlaps. By calling"},{"text":" ","type":"text"},{"type":"text","text":"determineVisiblePosition again on the newly extended range, we ensure that all cascading attachments—no matter"},{"text":" ","type":"text"},{"text":"how many lines they span—are folded into a single, coherent TextLinePosition before returning.","type":"text"}]}],"kind":"content"}],"abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"text":" ","type":"text"},{"type":"text","text":"that are spanned by text attachments. If an attachment overlaps beyond the"},{"type":"text","text":" "},{"text":"bounds of the original line, this method will extend the returned range to","type":"text"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"type":"text","text":" "},{"type":"text","text":"cross into newly included lines)."}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/edgeinsets.json b/data/documentation/codeedittextview/textlayoutmanager/edgeinsets.json
new file mode 100644
index 000000000..c5df90ca2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/edgeinsets.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"The edge insets to inset all text layout with."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"edgeInsets","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC10edgeInsetsAA014HorizontalEdgeH0Vvp","role":"symbol","title":"edgeInsets","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"edgeInsets"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}],"platforms":["macOS"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/edgeInsets"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/edgeinsets"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/edgeInsets":{"title":"edgeInsets","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/edgeInsets","kind":"symbol","abstract":[{"type":"text","text":"The edge insets to inset all text layout with."}],"type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/edgeinsets","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"edgeInsets"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/estimatedheight().json b/data/documentation/codeedittextview/textlayoutmanager/estimatedheight().json
new file mode 100644
index 000000000..9e981c68d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/estimatedheight().json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/estimatedheight()"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedHeight"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"languages":["swift"],"platforms":["macOS"]}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"estimatedHeight()","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"estimatedHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"extendedModule":"CodeEditTextView","roleHeading":"Instance Method","externalID":"s:16CodeEditTextView0C13LayoutManagerC15estimatedHeight14CoreFoundation7CGFloatVyF","symbolKind":"method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedHeight()","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/estimatedHeight()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedHeight()","type":"topic","title":"estimatedHeight()","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"estimatedHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatedheight()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/estimatedwidth().json b/data/documentation/codeedittextview/textlayoutmanager/estimatedwidth().json
new file mode 100644
index 000000000..4968a0c75
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/estimatedwidth().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/estimatedwidth()"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedWidth()","interfaceLanguage":"swift"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"estimatedWidth","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"symbolKind":"method","externalID":"s:16CodeEditTextView0C13LayoutManagerC14estimatedWidth14CoreFoundation7CGFloatVyF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"CodeEditTextView","title":"estimatedWidth()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"estimatedWidth"},{"kind":"text","text":"() -> "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"roleHeading":"Instance Method"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/estimatedWidth()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimatedWidth()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"estimatedWidth","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","title":"estimatedWidth()","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatedwidth()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/estimatelineheight().json b/data/documentation/codeedittextview/textlayoutmanager/estimatelineheight().json
new file mode 100644
index 000000000..11dc52557
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/estimatelineheight().json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","externalID":"s:16CodeEditTextView0C13LayoutManagerC18estimateLineHeight14CoreFoundation7CGFloatVyF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"estimateLineHeight()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"estimateLineHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"symbolKind":"method"},"abstract":[{"type":"text","text":"Estimates the line height for the current typing attributes."},{"type":"text","text":" "},{"type":"text","text":"Takes into account "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier","isActive":true,"type":"reference"},{"text":".","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimateLineHeight()","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/estimatelineheight()"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimateLineHeight"},{"kind":"text","text":"() -> "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}]}]},{"kind":"content","content":[{"text":"Return Value","type":"heading","anchor":"return-value","level":2},{"type":"paragraph","inlineContent":[{"text":"The estimated line height.","type":"text"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineHeightMultiplier":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineHeightMultiplier"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","title":"lineHeightMultiplier","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/lineheightmultiplier"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/estimateLineHeight()":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatelineheight()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"estimateLineHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"type":"topic","abstract":[{"text":"Estimates the line height for the current typing attributes.","type":"text"},{"text":" ","type":"text"},{"text":"Takes into account ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier"},{"text":".","type":"text"}],"title":"estimateLineHeight()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/estimateLineHeight()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:).json b/data/documentation/codeedittextview/textlayoutmanager/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:).json
new file mode 100644
index 000000000..d8390097b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"kind":"symbol","metadata":{"role":"symbol","title":"init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)","symbolKind":"init","roleHeading":"Initializer","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC11textStorage20lineHeightMultiplier9wrapLines0gD08delegate14renderDelegate018invisibleCharacterP0ACSo06NSTextH0C_14CoreFoundation7CGFloatVSbSo6NSViewCAA0cefP0_pSgAA0cef6RenderP0_pSgAA019InvisibleCharactersP0_pSgtcfc","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"textStorage"},{"kind":"text","text":": "},{"text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"lineHeightMultiplier","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"wrapLines"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":", "},{"kind":"externalParam","text":"textView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView","text":"NSView"},{"kind":"text","text":", "},{"text":"delegate","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextLayoutManagerDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP"},{"kind":"text","text":"?, "},{"text":"renderDelegate","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLayoutManagerRenderDelegate","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","kind":"typeIdentifier"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"invisibleCharacterDelegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate"},{"text":"?)","kind":"text"}]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"init","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"textStorage"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":", ","kind":"text"},{"text":"lineHeightMultiplier","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"wrapLines"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":", "},{"kind":"externalParam","text":"textView"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView","text":"NSView"},{"kind":"text","text":", "},{"kind":"externalParam","text":"delegate"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","text":"TextLayoutManagerDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"renderDelegate"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","text":"TextLayoutManagerRenderDelegate"},{"text":"? = nil, ","kind":"text"},{"text":"invisibleCharacterDelegate","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate"},{"kind":"text","text":"? = nil)"}],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"name":"textStorage","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The text storage object to use as a data source."}]}]},{"name":"lineHeightMultiplier","content":[{"inlineContent":[{"text":"The multiplier to use for line heights.","type":"text"}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"text":"Set to true to wrap lines to the visible editor width.","type":"text"}],"type":"paragraph"}],"name":"wrapLines"},{"name":"textView","content":[{"inlineContent":[{"text":"The view to layout text fragments in.","type":"text"}],"type":"paragraph"}]},{"name":"delegate","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"A delegate for the layout manager."}]}]}]}],"abstract":[{"type":"text","text":"Initialize a text layout manager and prepare it for use."}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:)","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"text":"textStorage","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"lineHeightMultiplier"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"text":"wrapLines","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"text":"textView","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView","text":"NSView"},{"kind":"text","text":", "},{"kind":"externalParam","text":"delegate"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C21LayoutManagerDelegateP","text":"TextLayoutManagerDelegate","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"renderDelegate"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","text":"TextLayoutManagerRenderDelegate"},{"text":"?, ","kind":"text"},{"text":"invisibleCharacterDelegate","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate"},{"text":"?)","kind":"text"}],"type":"topic","abstract":[{"type":"text","text":"Initialize a text layout manager and prepare it for use."}],"title":"init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/init(textStorage:lineHeightMultiplier:wrapLines:textView:delegate:renderDelegate:invisibleCharacterDelegate:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrange(_:).json b/data/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrange(_:).json
new file mode 100644
index 000000000..13a6db64b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrange(_:).json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"invalidateLayoutForRange(_:)","role":"symbol","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invalidateLayoutForRange"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":")"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC010invalidateE8ForRangeyySo8_NSRangeVF","extendedModule":"CodeEditTextView","roleHeading":"Instance Method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"sections":[],"abstract":[{"text":"Invalidates layout for the given range of text.","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRange(_:)","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrange(_:)"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"invalidateLayoutForRange","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"range","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"name":"range","content":[{"inlineContent":[{"type":"text","text":"The range of text to invalidate."}],"type":"paragraph"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/invalidateLayoutForRange(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRange(_:)","type":"topic","title":"invalidateLayoutForRange(_:)","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"invalidateLayoutForRange","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":")"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrange(_:)","abstract":[{"text":"Invalidates layout for the given range of text.","type":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrect(_:).json b/data/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrect(_:).json
new file mode 100644
index 000000000..95021f71b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrect(_:).json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0C13LayoutManagerC010invalidateE7ForRectyySo6CGRectVF","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invalidateLayoutForRect"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"},{"kind":"text","text":")"}],"role":"symbol","title":"invalidateLayoutForRect(_:)","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRect(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Invalidates layout for the given rect."}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"invalidateLayoutForRect","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"rect","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"},{"text":")","kind":"text"}],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The rect to invalidate.","type":"text"}]}],"name":"rect"}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrect(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/invalidateLayoutForRect(_:)":{"abstract":[{"type":"text","text":"Invalidates layout for the given rect."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invalidateLayoutForRect(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"invalidateLayoutForRect","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"},{"text":")","kind":"text"}],"type":"topic","kind":"symbol","title":"invalidateLayoutForRect(_:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrect(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/invisiblecharacterdelegate.json b/data/documentation/codeedittextview/textlayoutmanager/invisiblecharacterdelegate.json
new file mode 100644
index 000000000..532d3756f
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/invisiblecharacterdelegate.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"metadata":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invisibleCharacterDelegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate"},{"text":"?","kind":"text"}],"roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","role":"symbol","title":"invisibleCharacterDelegate","externalID":"s:16CodeEditTextView0C13LayoutManagerC26invisibleCharacterDelegateAA019InvisibleCharactersI0_pSgvp"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"weak","kind":"keyword"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"invisibleCharacterDelegate"},{"kind":"text","text":": "},{"text":"InvisibleCharactersDelegate","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP"},{"kind":"text","text":"? { "},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"kind":"text","text":" }"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/invisiblecharacterdelegate"]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invisibleCharacterDelegate"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/InvisibleCharactersDelegate":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"InvisibleCharactersDelegate"}],"url":"\/documentation\/codeedittextview\/invisiblecharactersdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/InvisibleCharactersDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"InvisibleCharactersDelegate","kind":"identifier"}],"abstract":[],"title":"InvisibleCharactersDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/invisibleCharacterDelegate":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/invisibleCharacterDelegate","type":"topic","title":"invisibleCharacterDelegate","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"invisibleCharacterDelegate","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView27InvisibleCharactersDelegateP","text":"InvisibleCharactersDelegate","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/invisiblecharacterdelegate","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/isintransaction.json b/data/documentation/codeedittextview/textlayoutmanager/isintransaction.json
new file mode 100644
index 000000000..977b7810a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/isintransaction.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/isInTransaction","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isInTransaction","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/isintransaction"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"isInTransaction"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC15isInTransactionSbvp","roleHeading":"Instance Property","title":"isInTransaction"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/isInTransaction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/isInTransaction","abstract":[],"type":"topic","role":"symbol","title":"isInTransaction","url":"\/documentation\/codeedittextview\/textlayoutmanager\/isintransaction","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"isInTransaction"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/layoutlines(in:).json b/data/documentation/codeedittextview/textlayoutmanager/layoutlines(in:).json
new file mode 100644
index 000000000..db1d169a8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/layoutlines(in:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","title":"layoutLines(in:)","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutLines"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","text":"NSRect","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"kind":"typeIdentifier","text":"Set","preciseIdentifier":"s:Sh"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"ID","preciseIdentifier":"s:16CodeEditTextView0C4LineC2IDa","kind":"typeIdentifier"},{"text":">","kind":"text"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC11layoutLines2inShy10Foundation4UUIDVGSo6CGRectVSg_tF","symbolKind":"method"},"abstract":[{"text":"Lays out all visible lines","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/layoutlines(in:)"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@discardableResult","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"layoutLines","kind":"identifier"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"rect"},{"kind":"text","text":": "},{"text":"NSRect","preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier"},{"kind":"text","text":"? = nil) -> "},{"kind":"typeIdentifier","text":"Set","preciseIdentifier":"s:Sh"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":".","kind":"text"},{"text":"ID","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC2IDa"},{"text":">","kind":"text"}],"platforms":["macOS"]}]},{"kind":"content","content":[{"text":"Overview Of The Layout Routine","level":2,"anchor":"Overview-Of-The-Layout-Routine","type":"heading"},{"type":"paragraph","inlineContent":[{"type":"text","text":"The basic premise of this method is that it loops over all lines in the given rect (defaults to the visible"},{"text":" ","type":"text"},{"text":"rect), checks if the line needs a layout calculation, and performs layout on the line if it does.","type":"text"}]},{"inlineContent":[{"type":"text","text":"The thing that makes this layout method so fast is the second point, checking if a line needs layout. To"},{"text":" ","type":"text"},{"type":"text","text":"determine if a line needs a layout pass, the layout manager can check three things:"}],"type":"paragraph"},{"items":[{"content":[{"inlineContent":[{"type":"strong","inlineContent":[{"text":"1","type":"text"}]},{"type":"text","text":" Was the line laid out under the assumption of a different maximum layout width?"},{"type":"text","text":" "},{"text":"For instance, if a line was previously broken by the line wrapping setting, it won’t need to wrap once the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"line wrapping is disabled. This will detect that, and cause the lines to be recalculated."}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"strong","inlineContent":[{"type":"text","text":"2"}]},{"type":"text","text":" Was the line previously not visible? This is determined by keeping a set of visible line IDs. If the"},{"text":" ","type":"text"},{"type":"text","text":"line does not appear in that set, we can assume it was previously off screen and may need layout."}]}]},{"content":[{"type":"paragraph","inlineContent":[{"inlineContent":[{"type":"text","text":"3"}],"type":"strong"},{"text":" Was the line entirely laid out? We break up lines into line fragments. When we do layout, we determine","type":"text"},{"text":" ","type":"text"},{"text":"all line fragments but don’t necessarily place them all in the view. This checks if all line fragments have","type":"text"},{"text":" ","type":"text"},{"text":"been placed in the view. If not, we need to place them.","type":"text"}]}]}],"type":"unorderedList"},{"type":"paragraph","inlineContent":[{"text":"Once it has been determined that a line needs layout, we perform layout by recalculating it’s line fragments,","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"removing all old line fragment views, and creating new ones for the line."}]},{"text":"Laziness","type":"heading","level":2,"anchor":"Laziness"},{"inlineContent":[{"type":"text","text":"At the end of the layout pass, we clean up any old lines by updating the set of visible line IDs and fragment"},{"type":"text","text":" "},{"text":"IDs. Any IDs that no longer appear in those sets are removed to save resources. This facilitates the text view’s","type":"text"},{"type":"text","text":" "},{"type":"text","text":"ability to only render text that is visible and saves tons of resources (similar to the lazy loading of"},{"type":"text","text":" "},{"type":"text","text":"collection or table views)."}],"type":"paragraph"},{"inlineContent":[{"text":"The other important lazy attribute is the line iteration. Line iteration is done lazily. As we iterate","type":"text"},{"type":"text","text":" "},{"text":"through lines and potentially update their heights, the next line is only queried for ","type":"text"},{"type":"emphasis","inlineContent":[{"type":"text","text":"after"}]},{"text":" the updates are","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"finished."}],"type":"paragraph"},{"anchor":"Reentry","text":"Reentry","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"type":"text","text":"An important thing to note is that this method cannot be reentered. If a layout pass has begun while a layout"},{"type":"text","text":" "},{"text":"pass is already ongoing, internal data structures will be broken. In debug builds, this is checked with a simple","type":"text"},{"text":" ","type":"text"},{"text":"boolean and assertion.","type":"text"}]},{"inlineContent":[{"type":"text","text":"To help ensure this property, all view modifications are performed within a "},{"type":"codeVoice","code":"CATransaction"},{"text":". This guarantees","type":"text"},{"text":" ","type":"text"},{"text":"that macOS calls ","type":"text"},{"type":"codeVoice","code":"layout"},{"type":"text","text":" on any related views only after we’ve finished inserting and removing line fragment"},{"text":" ","type":"text"},{"type":"text","text":"views. Otherwise, inserting a line fragment view could trigger a layout pass prematurely and cause this method"},{"text":" ","type":"text"},{"text":"to re-enter.","type":"text"}],"type":"paragraph"},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"This is probably not what you’re looking for. If you need to invalidate layout, or update lines, this"},{"text":" ","type":"text"},{"type":"text","text":"is not the way to do so. This should only be called when macOS performs layout."}]}],"name":"Warning","type":"aside","style":"warning"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/layoutLines(in:)","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/layoutLines(in:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/layoutLines(in:)","type":"topic","title":"layoutLines(in:)","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"layoutLines","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"kind":"text","text":"?) -> "},{"kind":"typeIdentifier","text":"Set","preciseIdentifier":"s:Sh"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"ID","preciseIdentifier":"s:16CodeEditTextView0C4LineC2IDa","kind":"typeIdentifier"},{"text":">","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/layoutlines(in:)","abstract":[{"text":"Lays out all visible lines","type":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/linebreakstrategy.json b/data/documentation/codeedittextview/textlayoutmanager/linebreakstrategy.json
new file mode 100644
index 000000000..612506d9c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/linebreakstrategy.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC17lineBreakStrategyAA04LinehI0Ovp","role":"symbol","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineBreakStrategy"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO","text":"LineBreakStrategy"}],"title":"lineBreakStrategy","symbolKind":"property"},"abstract":[{"text":"The strategy to use when breaking lines. Defaults to ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","isActive":true,"type":"reference"},{"text":".","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/linebreakstrategy"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineBreakStrategy"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO","text":"LineBreakStrategy"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineBreakStrategy"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineBreakStrategy":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineBreakStrategy","abstract":[{"type":"text","text":"The strategy to use when breaking lines. Defaults to "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"reference"},{"type":"text","text":"."}],"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineBreakStrategy","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO","text":"LineBreakStrategy","kind":"typeIdentifier"}],"title":"lineBreakStrategy","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/linebreakstrategy"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/word":{"abstract":[{"type":"text","text":"Break lines at word boundaries when possible."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/word","kind":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"title":"LineBreakStrategy.word"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/linecount.json b/data/documentation/codeedittextview/textlayoutmanager/linecount.json
new file mode 100644
index 000000000..9c968aa11
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/linecount.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineCount"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/linecount"]}],"kind":"symbol","sections":[],"metadata":{"symbolKind":"property","title":"lineCount","externalID":"s:16CodeEditTextView0C13LayoutManagerC9lineCountSivp","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineCount"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}]},"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"abstract":[{"text":"The number of lines in the document","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineCount"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineCount":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineCount","url":"\/documentation\/codeedittextview\/textlayoutmanager\/linecount","title":"lineCount","abstract":[{"type":"text","text":"The number of lines in the document"}],"role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineCount","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/lineheightmultiplier.json b/data/documentation/codeedittextview/textlayoutmanager/lineheightmultiplier.json
new file mode 100644
index 000000000..e93fc14b5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/lineheightmultiplier.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"lineHeightMultiplier","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/lineheightmultiplier"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineHeightMultiplier","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC20lineHeightMultiplier14CoreFoundation7CGFloatVvp","title":"lineHeightMultiplier"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineHeightMultiplier":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineHeightMultiplier","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineHeightMultiplier"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","title":"lineHeightMultiplier","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/lineheightmultiplier"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/linesinrange(_:).json b/data/documentation/codeedittextview/textlayoutmanager/linesinrange(_:).json
new file mode 100644
index 000000000..6c4b1f94c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/linesinrange(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/linesinrange(_:)"]}],"abstract":[{"text":"Iterate over all lines that overlap a document range.","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesInRange(_:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"externalID":"s:16CodeEditTextView0C13LayoutManagerC12linesInRangeyAC0I8IteratorVSo8_NSRangeVF","title":"linesInRange(_:)","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"linesInRange"},{"text":"(","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"RangeIterator","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV"}],"extendedModule":"CodeEditTextView"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"linesInRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":") -> "},{"text":"RangeIterator","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"}]}]},{"parameters":[{"content":[{"inlineContent":[{"text":"The range in the document to iterate over.","type":"text"}],"type":"paragraph"}],"name":"range"}],"kind":"parameters"},{"kind":"content","content":[{"level":2,"text":"Return Value","type":"heading","anchor":"return-value"},{"inlineContent":[{"text":"An iterator for lines in the range. The iterator returns lines that ","type":"text"},{"inlineContent":[{"type":"text","text":"overlap"}],"type":"emphasis"},{"text":" with the range.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"Returned lines may extend slightly before or after the queried range."}],"type":"paragraph"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/linesInRange(_:)":{"abstract":[{"type":"text","text":"Iterate over all lines that overlap a document range."}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesInRange(_:)","role":"symbol","kind":"symbol","title":"linesInRange(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"linesInRange"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"RangeIterator","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/linesinrange(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/linesstartingat(_:until:).json b/data/documentation/codeedittextview/textlayoutmanager/linesstartingat(_:until:).json
new file mode 100644
index 000000000..061d8b236
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/linesstartingat(_:until:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"linesStartingAt","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"minY"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":", "},{"text":"until","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"maxY","kind":"internalParam"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":") -> "},{"text":"YPositionIterator","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"}],"platforms":["macOS"]}]},{"kind":"parameters","parameters":[{"name":"minY","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The minimum y position to begin at."}]}]},{"name":"maxY","content":[{"inlineContent":[{"type":"text","text":"The maximum y position to iterate to."}],"type":"paragraph"}]}]},{"content":[{"level":2,"text":"Return Value","type":"heading","anchor":"return-value"},{"inlineContent":[{"text":"An iterator that will iterate through all text lines in the y position range.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/linesstartingat(_:until:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesStartingAt(_:until:)","interfaceLanguage":"swift"},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC15linesStartingAt_5untilAC17YPositionIteratorV14CoreFoundation7CGFloatV_AJtF","symbolKind":"method","extendedModule":"CodeEditTextView","title":"linesStartingAt(_:until:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"linesStartingAt","kind":"identifier"},{"kind":"text","text":"("},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"text":"until","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":") -> "},{"text":"YPositionIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV"}],"roleHeading":"Instance Method","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"kind":"symbol","abstract":[{"text":"Iterate over all lines in the y position range.","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/linesStartingAt(_:until:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/linesstartingat(_:until:)","abstract":[{"text":"Iterate over all lines in the y position range.","type":"text"}],"type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/linesStartingAt(_:until:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"linesStartingAt","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"until","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","text":"YPositionIterator"}],"title":"linesStartingAt(_:until:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/linestorage.json b/data/documentation/codeedittextview/textlayoutmanager/linestorage.json
new file mode 100644
index 000000000..3a4c4f146
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/linestorage.json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"title":"lineStorage","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"lineStorage","kind":"identifier"},{"text":": ","kind":"text"},{"text":"TextLineStorage","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">","kind":"text"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC11lineStorageAA0c4LineH0CyAA0cI0CGvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"lineStorage"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/linestorage"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineStorage","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/lineStorage":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/lineStorage","url":"\/documentation\/codeedittextview\/textlayoutmanager\/linestorage","title":"lineStorage","kind":"symbol","abstract":[],"type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineStorage","kind":"identifier"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/maxlinelayoutwidth.json b/data/documentation/codeedittextview/textlayoutmanager/maxlinelayoutwidth.json
new file mode 100644
index 000000000..1ac3ad55a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/maxlinelayoutwidth.json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","role":"symbol","title":"maxLineLayoutWidth","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"maxLineLayoutWidth","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC07maxLineE5Width14CoreFoundation7CGFloatVvp"},"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/maxLineLayoutWidth"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/maxlinelayoutwidth"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"abstract":[{"text":"The maximum width available to lay out lines in, used to determine how much space is available for laying out","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"lines. Evals to "},{"type":"codeVoice","code":".greatestFiniteMagnitude"},{"text":" when ","type":"text"},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","type":"reference"},{"type":"text","text":" is "},{"type":"codeVoice","code":"false"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"maxLineLayoutWidth","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/wrapLines":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"wrapLines"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"type":"topic","kind":"symbol","title":"wrapLines","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/wraplines"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/maxLineLayoutWidth":{"role":"symbol","type":"topic","title":"maxLineLayoutWidth","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"maxLineLayoutWidth"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/maxLineLayoutWidth","abstract":[{"type":"text","text":"The maximum width available to lay out lines in, used to determine how much space is available for laying out"},{"text":" ","type":"text"},{"text":"lines. Evals to ","type":"text"},{"code":".greatestFiniteMagnitude","type":"codeVoice"},{"text":" when ","type":"text"},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","type":"reference"},{"type":"text","text":" is "},{"code":"false","type":"codeVoice"},{"text":".","type":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/maxlinelayoutwidth","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/nstextstoragedelegate-implementations.json b/data/documentation/codeedittextview/textlayoutmanager/nstextstoragedelegate-implementations.json
new file mode 100644
index 000000000..e2a0321f7
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/nstextstoragedelegate-implementations.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/nstextstoragedelegate-implementations"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/NSTextStorageDelegate-Implementations","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"metadata":{"role":"collectionGroup","roleHeading":"API Collection","title":"NSTextStorageDelegate Implementations","modules":[{"name":"CodeEditTextView"}]},"topicSections":[{"title":"Instance Methods","generated":true,"anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textStorage(_:didProcessEditing:range:changeInLength:)"]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"article","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textStorage(_:didProcessEditing:range:changeInLength:)":{"title":"textStorage(_:didProcessEditing:range:changeInLength:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/textstorage(_:didprocessediting:range:changeinlength:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textStorage(_:didProcessEditing:range:changeInLength:)","abstract":[{"type":"text","text":"Receives edit notifications from the text storage and updates internal data structures to stay in sync with"},{"type":"text","text":" "},{"type":"text","text":"text content."}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textStorage","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"didProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"changeInLength","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":")"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator.json
new file mode 100644
index 000000000..43fdd978f
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"RangeIterator","kind":"identifier"}],"languages":["swift"],"platforms":["macOS"]}]},{"kind":"content","content":[{"text":"Overview","type":"heading","anchor":"overview","level":2},{"inlineContent":[{"type":"text","text":"Next elements are retrieved lazily. Additionally, this iterator uses a stable "},{"code":"index","type":"codeVoice"},{"type":"text","text":" rather than a y position"},{"text":" ","type":"text"},{"text":"or a range to fetch the next line. This means the line storage can be updated during iteration.","type":"text"}],"type":"paragraph"}]}],"kind":"symbol","sections":[],"abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","type":"reference","isActive":true},{"text":".","type":"text"}],"metadata":{"navigatorTitle":[{"kind":"identifier","text":"RangeIterator"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Structure","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","symbolKind":"struct","title":"TextLayoutManager.RangeIterator","extendedModule":"CodeEditTextView","role":"symbol"},"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/next()"],"generated":true,"anchor":"Instance-Methods"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/LazySequenceProtocol-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/Sequence-Implementations"],"generated":true,"anchor":"Default-Implementations","title":"Default Implementations"}],"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/St","doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP","doc:\/\/codeedittextview.CodeEditTextView\/ST"],"title":"Conforms To","kind":"relationships","type":"conformsTo"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/next()":{"title":"next()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/next()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":">.","kind":"text"},{"text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"Iterates over the “visible” text positions."}],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/next()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/ST":{"title":"Swift.Sequence","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/ST"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/s20LazySequenceProtocolP":{"title":"Swift.LazySequenceProtocol","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/Sequence-Implementations":{"title":"Sequence Implementations","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sequence-implementations","role":"collectionGroup","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/Sequence-Implementations","abstract":[],"kind":"article"},"doc://codeedittextview.CodeEditTextView/St":{"title":"Swift.IteratorProtocol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/St","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/LazySequenceProtocol-Implementations":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/LazySequenceProtocol-Implementations","type":"topic","role":"collectionGroup","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lazysequenceprotocol-implementations","kind":"article","title":"LazySequenceProtocol Implementations"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/allsatisfy(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/allsatisfy(_:).json
new file mode 100644
index 000000000..9a31cc4c5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/allsatisfy(_:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"allSatisfy(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"allSatisfy","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"externalID":"s:STsE10allSatisfyyS2b7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/allSatisfy(_:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.allSatisfy(_:)"},{"type":"text","text":"."}],"kind":"symbol","sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/allsatisfy(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/allSatisfy(_:)":{"title":"allSatisfy(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/allSatisfy(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/allsatisfy(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5uuh9.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5uuh9.json
new file mode 100644
index 000000000..6d7159f4f
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5uuh9.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5uuh9","interfaceLanguage":"swift"},"sections":[],"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"externalID":"s:STsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","role":"symbol","title":"compactMap(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.compactMap(_:)"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5uuh9"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/compactMap(_:)-5uuh9":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5uuh9","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5uuh9","kind":"symbol","title":"compactMap(_:)","role":"symbol","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5x9rx.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5x9rx.json
new file mode 100644
index 000000000..f3dfc9436
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5x9rx.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compactMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5x9rx","interfaceLanguage":"swift"},"sections":[],"metadata":{"extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:s20LazySequenceProtocolPsE10compactMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"compactMap(_:)","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"LazySequenceProtocol.compactMap(_:)","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5x9rx"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/compactMap(_:)-5x9rx":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5x9rx","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"title":"compactMap(_:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5x9rx"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compare(_:_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compare(_:_:).json
new file mode 100644
index 000000000..3e264a96c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/compare(_:_:).json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","title":"compare(_:_:)","extendedModule":"Swift","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compare"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult","kind":"typeIdentifier"}],"roleHeading":"Instance Method","platforms":[{"introducedAt":"15.0","unavailable":false,"deprecated":false,"name":"iOS","beta":false},{"name":"macOS","introducedAt":"12.0","deprecated":false,"beta":false,"unavailable":false},{"name":"tvOS","unavailable":false,"beta":false,"introducedAt":"15.0","deprecated":false},{"beta":false,"unavailable":false,"deprecated":false,"name":"watchOS","introducedAt":"8.0"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:ST10FoundationE7compareySo18NSComparisonResultV8ComparedQyd___AFtAA14SortComparatorRd__7ElementQzRsd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compare(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compare(_:_:)","interfaceLanguage":"swift"},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.compare(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compare","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier","text":"Compared"},{"kind":"text","text":") -> "},{"text":"ComparisonResult","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult"},{"kind":"text","text":" "},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":" : "},{"text":"SortComparator","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"text":" == ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/compare(_:_:)":{"abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compare(_:_:)","title":"compare(_:_:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compare(_:_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":") -> "},{"text":"ComparisonResult","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/contains(where:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/contains(where:).json
new file mode 100644
index 000000000..ded87ace4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/contains(where:).json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/contains(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"contains"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"languages":["swift"]}],"kind":"declarations"}],"metadata":{"externalID":"s:STsE8contains5whereS2b7ElementQzKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","role":"symbol","roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"contains"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"title":"contains(where:)","symbolKind":"method","extendedModule":"Swift"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/contains(where:)"},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.contains(where:)"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/contains(where:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"contains"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"type":"topic","abstract":[],"title":"contains(where:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/contains(where:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/count(where:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/count(where:).json
new file mode 100644
index 000000000..fabd8a743
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/count(where:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.count(where:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":"<","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":" "},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"preciseIdentifier":"s:s5ErrorP","text":"Error","kind":"typeIdentifier"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/count(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"role":"symbol","externalID":"s:STsE5count5whereSiSb7ElementQzqd__YKXE_tqd__YKs5ErrorRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"count","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"E"},{"kind":"text","text":">("},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"title":"count(where:)","symbolKind":"method"},"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/count(where:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/count(where:)":{"kind":"symbol","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/count(where:)","title":"count(where:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/count(where:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/drop(while:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/drop(while:).json
new file mode 100644
index 000000000..f28d6e775
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/drop(while:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"text":"(","kind":"text"},{"text":"while","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV","text":"LazyDropWhileSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}],"platforms":["macOS"]}]}],"metadata":{"title":"drop(while:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","symbolKind":"method","externalID":"s:s20LazySequenceProtocolPsE4drop5whiles0a9DropWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"drop"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s21LazyDropWhileSequenceV","text":"LazyDropWhileSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/drop(while:)","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/drop(while:)"]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.drop(while:)"},{"type":"text","text":"."}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/drop(while:)":{"title":"drop(while:)","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"drop"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/drop(while:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/dropfirst(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/dropfirst(_:).json
new file mode 100644
index 000000000..3f3067823
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/dropfirst(_:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"externalID":"s:STsE9dropFirstys04DropB8SequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"dropFirst(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s17DropFirstSequenceV","kind":"typeIdentifier","text":"DropFirstSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropFirst(_:)"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/dropfirst(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropFirst","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"k"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"kind":"text","text":" = 1) -> "},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.dropFirst(_:)"},{"type":"text","text":"."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/dropFirst(_:)":{"title":"dropFirst(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropFirst(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"DropFirstSequence","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/dropfirst(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/droplast(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/droplast(_:).json
new file mode 100644
index 000000000..5581af0bb
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/droplast(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropLast(_:)","interfaceLanguage":"swift"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/droplast(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE8dropLastySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","symbolKind":"method","extendedModule":"Swift","title":"dropLast(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"roleHeading":"Instance Method","role":"symbol"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.dropLast(_:)"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropLast"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"k"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":" = 1) -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/dropLast(_:)":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropLast(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"title":"dropLast(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/droplast(_:)","abstract":[],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/elements.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/elements.json
new file mode 100644
index 000000000..c2a3e3ad0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/elements.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.elements","type":"codeVoice"},{"type":"text","text":"."}],"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elements"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elements","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"kind":"symbol","metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elements"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}],"externalID":"s:s20LazySequenceProtocolPs8ElementsQzRszrlE8elementsxvp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","conformance":{"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"type":"codeVoice","code":"Self.Elements"},{"type":"text","text":"."}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"type":"text","text":"Available when"}]},"role":"symbol","title":"elements","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elements"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/elements":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elements","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elements"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}],"type":"topic","abstract":[],"title":"elements","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elements","role":"symbol","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"code":"Self.Elements","type":"codeVoice"},{"text":".","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/elementsequal(_:by:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/elementsequal(_:by:).json
new file mode 100644
index 000000000..70dec319e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/elementsequal(_:by:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elementsEqual(_:by:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"other","kind":"internalParam"},{"kind":"text","text":": "},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":" "},{"text":"areEquivalent","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":" "},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"}],"languages":["swift"]}],"kind":"declarations"}],"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"externalID":"s:STsE13elementsEqual_2bySbqd___Sb7ElementQz_ACQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","title":"elementsEqual(_:by:)","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elementsequal(_:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.elementsEqual(_:by:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/elementsEqual(_:by:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elementsEqual(_:by:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elementsEqual"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elementsequal(_:by:)","kind":"symbol","title":"elementsEqual(_:by:)","role":"symbol","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/enumerated().json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/enumerated().json
new file mode 100644
index 000000000..bb07fefbd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/enumerated().json
@@ -0,0 +1 @@
+{"metadata":{"externalID":"s:STsE10enumerateds18EnumeratedSequenceVyxGyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"enumerated()","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"enumerated","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"enumerated","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/enumerated()","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.enumerated()"},{"text":".","type":"text"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/enumerated()"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/enumerated()":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/enumerated()","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18EnumeratedSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/enumerated()","title":"enumerated()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/filter(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/filter(_:).json
new file mode 100644
index 000000000..d3c524aa0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/filter(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/filter(_:)"},"kind":"symbol","metadata":{"role":"symbol","roleHeading":"Instance Method","extendedModule":"Swift","symbolKind":"method","externalID":"s:s20LazySequenceProtocolPsE6filterys0a6FilterB0Vy8ElementsQzGSb7ElementQzcF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"filter(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"filter","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":">","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/filter(_:)"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"filter"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"isIncluded"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":">","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.filter(_:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/filter(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"filter","kind":"identifier"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/filter(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/filter(_:)","type":"topic","kind":"symbol","title":"filter(_:)","abstract":[],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/first(where:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/first(where:).json
new file mode 100644
index 000000000..a08ba20d6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/first(where:).json
@@ -0,0 +1 @@
+{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}]}]}],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","extendedModule":"Swift","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"externalID":"s:STsE5first5where7ElementQzSgSbADKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"first(where:)","roleHeading":"Instance Method"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/first(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/first(where:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.first(where:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/first(where:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/first(where:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/first(where:)","title":"first(where:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-28gsc.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-28gsc.json
new file mode 100644
index 000000000..6f0608ea5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-28gsc.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aB0Vys07FlattenB0Vys0aeB0Vy8ElementsQzqd__GGGqd__7ElementQzcSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","roleHeading":"Instance Method","extendedModule":"Swift","title":"flatMap(_:)","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazySequence","preciseIdentifier":"s:s12LazySequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>>","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"sections":[],"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.flatMap(_:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":">>> "},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":" : "},{"preciseIdentifier":"s:ST","text":"Sequence","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-28gsc"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-28gsc","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-28gsc":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-28gsc","title":"flatMap(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s12LazySequenceV","kind":"typeIdentifier","text":"LazySequence"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>>","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-28gsc","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-3fyy7.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-3fyy7.json
new file mode 100644
index 000000000..852735d55
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-3fyy7.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-3fyy7"]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-3fyy7","interfaceLanguage":"swift"},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:ST"}],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.flatMap(_:)"},{"text":".","type":"text"}],"metadata":{"title":"flatMap(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"symbolKind":"method","role":"symbol","externalID":"s:STsE7flatMapySay7ElementQyd__Gqd__ABQzKXEKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-3fyy7":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-3fyy7","type":"topic","abstract":[],"title":"flatMap(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-3fyy7"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-5tpzt.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-5tpzt.json
new file mode 100644
index 000000000..bf6415720
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-5tpzt.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-5tpzt"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"transform","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}]}],"kind":"declarations"}],"sections":[],"metadata":{"roleHeading":"Instance Method","platforms":[{"deprecatedAt":"4.1","message":"Please use compactMap(_:) for the case where closure returns an optional value","renamed":"compactMap(_:)","name":"Swift","beta":false,"deprecated":false,"unavailable":false}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"title":"flatMap(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"method","extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","role":"symbol"},"kind":"symbol","deprecationSummary":[{"inlineContent":[{"text":"Please use compactMap(_:) for the case where closure returns an optional value","type":"text"}],"type":"paragraph"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-5tpzt"]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.flatMap(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-5tpzt":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"title":"flatMap(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-5tpzt","deprecated":true,"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-5tpzt","abstract":[],"type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-73i4d.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-73i4d.json
new file mode 100644
index 000000000..21ac759b0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-73i4d.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"languages":["swift"]}]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"metadata":{"role":"symbol","title":"flatMap(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","symbolKind":"method","externalID":"s:STsE7flatMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}],"platforms":[{"name":"Swift","renamed":"compactMap(_:)","message":"Please use compactMap(_:) for the case where closure returns an optional value","deprecatedAt":"4.1","unavailable":false,"deprecated":false,"beta":false}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-73i4d"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-73i4d","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"deprecationSummary":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Please use compactMap(_:) for the case where closure returns an optional value"}]}],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.flatMap(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-73i4d":{"role":"symbol","type":"topic","title":"flatMap(_:)","deprecated":true,"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-73i4d","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-73i4d","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/foreach(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/foreach(_:).json
new file mode 100644
index 000000000..0368a6bc4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/foreach(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"forEach"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"body"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:s4Voida","kind":"typeIdentifier","text":"Void"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/forEach(_:)","interfaceLanguage":"swift"},"sections":[],"metadata":{"extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE7forEachyyy7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"forEach"},{"kind":"text","text":"(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s4Voida","text":"Void"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}],"title":"forEach(_:)","symbolKind":"method"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.forEach(_:)"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/foreach(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/forEach(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/foreach(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/forEach(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"}],"role":"symbol","type":"topic","title":"forEach(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/formatted(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/formatted(_:).json
new file mode 100644
index 000000000..942ad3a85
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/formatted(_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"kind":"symbol","sections":[],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","extendedModule":"Swift","symbolKind":"method","role":"symbol","title":"formatted(_:)","externalID":"s:ST10FoundationE9formattedy12FormatOutputQyd__qd__0C5InputQyd__RszAA0C5StyleRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"formatted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"platforms":[{"beta":false,"name":"iOS","unavailable":false,"introducedAt":"15.0","deprecated":false},{"introducedAt":"12.0","beta":false,"deprecated":false,"name":"macOS","unavailable":false},{"introducedAt":"15.0","deprecated":false,"name":"tvOS","unavailable":false,"beta":false},{"beta":false,"introducedAt":"8.0","unavailable":false,"deprecated":false,"name":"watchOS"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/formatted(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.formatted(_:)"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/formatted(_:)"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"style"},{"kind":"text","text":": "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"S"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":" == "},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B5InputQa","text":"FormatInput"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP","text":"FormatStyle"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/formatted(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/formatted(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"S"},{"text":") -> ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","kind":"typeIdentifier","text":"FormatOutput"}],"type":"topic","abstract":[],"title":"formatted(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/formatted(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazy.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazy.json
new file mode 100644
index 000000000..58e5ff7d9
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazy.json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","extendedModule":"Swift","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"LazySequenceProtocol"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:s20LazySequenceProtocolPssAA8ElementsRpzrlE4lazyADvp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"lazy"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lazy"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lazy"]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"LazySequenceProtocol.lazy","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/lazy":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lazy","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"lazy","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"}],"type":"topic","abstract":[],"title":"lazy","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lazy","role":"symbol","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"LazySequenceProtocol","type":"codeVoice"},{"type":"text","text":"."}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazysequenceprotocol-implementations.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazysequenceprotocol-implementations.json
new file mode 100644
index 000000000..502568b94
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazysequenceprotocol-implementations.json
@@ -0,0 +1 @@
+{"metadata":{"title":"LazySequenceProtocol Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"sections":[],"topicSections":[{"anchor":"Instance-Properties","title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elements","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lazy"],"generated":true},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5x9rx","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/drop(while:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/filter(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-28gsc","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-5tpzt","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-6xfr2","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(while:)"],"title":"Instance Methods","anchor":"Instance-Methods","generated":true}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lazysequenceprotocol-implementations"]}],"kind":"article","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/LazySequenceProtocol-Implementations","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/compactMap(_:)-5x9rx":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5x9rx","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"title":"compactMap(_:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5x9rx"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-28gsc":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-28gsc","title":"flatMap(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s12LazySequenceV","kind":"typeIdentifier","text":"LazySequence"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>>","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-28gsc","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/lazy":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lazy","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"lazy","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"}],"type":"topic","abstract":[],"title":"lazy","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lazy","role":"symbol","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"LazySequenceProtocol","type":"codeVoice"},{"type":"text","text":"."}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/filter(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"filter","kind":"identifier"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/filter(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/filter(_:)","type":"topic","kind":"symbol","title":"filter(_:)","abstract":[],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/prefix(while:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(while:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","text":"LazyPrefixWhileSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"title":"prefix(while:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(while:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/elements":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elements","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elements"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}],"type":"topic","abstract":[],"title":"elements","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elements","role":"symbol","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"code":"Self.Elements","type":"codeVoice"},{"text":".","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/map(_:)-6xfr2":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-6xfr2","title":"map(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"U"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"U"},{"kind":"text","text":">"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-6xfr2"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/drop(while:)":{"title":"drop(while:)","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"drop"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/drop(while:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-5tpzt":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"title":"flatMap(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-5tpzt","deprecated":true,"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-5tpzt","abstract":[],"type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lexicographicallyprecedes(_:by:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lexicographicallyprecedes(_:by:).json
new file mode 100644
index 000000000..03bf7e66e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/lexicographicallyprecedes(_:by:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"other"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"areInIncreasingOrder"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"preciseIdentifier":"s:ST","kind":"typeIdentifier","text":"Sequence"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":" == "},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lexicographicallyPrecedes(_:by:)","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lexicographicallyprecedes(_:by:)"]}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE25lexicographicallyPrecedes_2bySbqd___Sb7ElementQz_ADtKXEtKSTRd__ACQyd__ADRSlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"lexicographicallyPrecedes(_:by:)"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.lexicographicallyPrecedes(_:by:)","type":"codeVoice"},{"type":"text","text":"."}],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/lexicographicallyPrecedes(_:by:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lexicographicallyprecedes(_:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lexicographicallyPrecedes(_:by:)","abstract":[],"role":"symbol","kind":"symbol","title":"lexicographicallyPrecedes(_:by:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/makeiterator().json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/makeiterator().json
new file mode 100644
index 000000000..af11c8311
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/makeiterator().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/makeIterator()"},"kind":"symbol","sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"makeIterator","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}]}],"kind":"declarations"}],"metadata":{"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"text":".","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"makeIterator"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}],"role":"symbol","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"makeIterator()","externalID":"s:STs8IteratorSTQzRszrlE04makeA0xyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","symbolKind":"method","roleHeading":"Instance Method"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/makeiterator()"]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.makeIterator()"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/makeIterator()":{"role":"symbol","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"type":"codeVoice","code":"Self.Iterator"},{"type":"text","text":"."}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/makeIterator()","kind":"symbol","title":"makeIterator()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"makeIterator","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"Self","kind":"typeIdentifier"}],"abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/makeiterator()","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-5l7nx.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-5l7nx.json
new file mode 100644
index 000000000..fc34d7501
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-5l7nx.json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.map(_:)","type":"codeVoice"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-5l7nx","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-5l7nx"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> ["},{"text":"T","kind":"typeIdentifier"},{"text":"] ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"text":"Error","preciseIdentifier":"s:s5ErrorP","kind":"typeIdentifier"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"kind":"symbol","metadata":{"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","extendedModule":"Swift","externalID":"s:STsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"map(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> [","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"symbolKind":"method"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/map(_:)-5l7nx":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-5l7nx","title":"map(_:)","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-5l7nx","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> [","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-6xfr2.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-6xfr2.json
new file mode 100644
index 000000000..d9145a77a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-6xfr2.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-6xfr2"},"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","metadata":{"externalID":"s:s20LazySequenceProtocolPsE3mapys0a3MapB0Vy8ElementsQzqd__Gqd__7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","role":"symbol","roleHeading":"Instance Method","title":"map(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}],"extendedModule":"Swift","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.map(_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"U"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"text":">","kind":"text"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-6xfr2"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/map(_:)-6xfr2":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-6xfr2","title":"map(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"U"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"U"},{"kind":"text","text":">"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-6xfr2"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/max(by:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/max(by:).json
new file mode 100644
index 000000000..84b23bf3c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/max(by:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"max"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"areInIncreasingOrder","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/max(by:)"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/max(by:)"},"metadata":{"title":"max(by:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"max"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"?"}],"externalID":"s:STsE3max2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.max(by:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/max(by:)":{"title":"max(by:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/max(by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/max(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"?"}],"type":"topic","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/min(by:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/min(by:).json
new file mode 100644
index 000000000..fcb467be5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/min(by:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/min(by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/min(by:)","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.min(by:)"},{"text":".","type":"text"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"title":"min(by:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift","roleHeading":"Instance Method","symbolKind":"method","role":"symbol","externalID":"s:STsE3min2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"areInIncreasingOrder","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/min(by:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/min(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/min(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"title":"min(by:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/next().json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/next().json
new file mode 100644
index 000000000..5e60b9709
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/next().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/next()"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/next()","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"mutating"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"next"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier"},{"kind":"text","text":"?"}]}],"kind":"declarations"},{"kind":"content","content":[{"text":"Discussion","anchor":"discussion","level":2,"type":"heading"},{"inlineContent":[{"type":"text","text":"See documentation on "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"text":" for details.","type":"text"}],"type":"paragraph"}]}],"metadata":{"title":"next()","externalID":"s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV4nextAA0C11LineStorageC0cJ8PositionVyAA0cJ0C_GSgyF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"next"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier","text":"TextLine"},{"text":">.","kind":"text"},{"text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier"},{"kind":"text","text":"?"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"abstract":[{"type":"text","text":"Iterates over the “visible” text positions."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/next()":{"title":"next()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/next()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":">.","kind":"text"},{"text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"Iterates over the “visible” text positions."}],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/next()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(_:).json
new file mode 100644
index 000000000..64ea11c8c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(_:)","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"PrefixSequence","preciseIdentifier":"s:s14PrefixSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","title":"prefix(_:)","symbolKind":"method","externalID":"s:STsE6prefixys14PrefixSequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.prefix(_:)"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"maxLength","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/prefix(_:)":{"title":"prefix(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"PrefixSequence","preciseIdentifier":"s:s14PrefixSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"type":"topic","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(while:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(while:).json
new file mode 100644
index 000000000..3fbadf81d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(while:).json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.prefix(while:)"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(while:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"metadata":{"externalID":"s:s20LazySequenceProtocolPsE6prefix5whiles0a11PrefixWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","text":"LazyPrefixWhileSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"extendedModule":"Swift","title":"prefix(while:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","role":"symbol"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(while:)"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazyPrefixWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":">","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/prefix(while:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(while:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","text":"LazyPrefixWhileSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"title":"prefix(while:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(while:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/publisher.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/publisher.json
new file mode 100644
index 000000000..f78d0dcb6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/publisher.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"role":"symbol","platforms":[{"name":"iOS","beta":false,"introducedAt":"13.0","unavailable":false,"deprecated":false},{"deprecated":false,"unavailable":false,"beta":false,"introducedAt":"10.15","name":"macOS"},{"unavailable":false,"beta":false,"name":"tvOS","introducedAt":"13.0","deprecated":false},{"unavailable":false,"deprecated":false,"name":"watchOS","introducedAt":"6.0","beta":false}],"externalID":"s:ST7CombineE9publisherAA10PublishersO8SequenceVy_xs5NeverOGvp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","symbolKind":"property","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Property","title":"publisher","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"publisher","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Publishers","preciseIdentifier":"s:7Combine10PublishersO","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Never","preciseIdentifier":"s:s5NeverO"},{"text":">","kind":"text"}],"extendedModule":"Swift"},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.publisher","type":"codeVoice"},{"text":".","type":"text"}],"kind":"symbol","primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"publisher","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO","text":"Publishers"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Sequence","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:s5NeverO","text":"Never","kind":"typeIdentifier"},{"text":"> { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/publisher"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/publisher","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/publisher":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/publisher","kind":"symbol","abstract":[],"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"publisher"},{"text":": ","kind":"text"},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","text":"Sequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier","text":"Never"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/publisher","title":"publisher","role":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(_:_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(_:_:).json
new file mode 100644
index 000000000..0e9bf0e65
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(_:_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(_:_:)","interfaceLanguage":"swift"},"metadata":{"role":"symbol","roleHeading":"Instance Method","externalID":"s:STsE6reduceyqd__qd___qd__qd___7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"reduce(_:_:)","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"Result"},{"text":", (","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"}]},"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"initialResult","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", "},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"nextPartialResult"},{"kind":"text","text":": ("},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(_:_:)"]}],"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.reduce(_:_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/reduce(_:_:)":{"title":"reduce(_:_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(_:_:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(_:_:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"kind":"text","text":">("},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(into:_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(into:_:).json
new file mode 100644
index 000000000..04d3f7394
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(into:_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"metadata":{"role":"symbol","symbolKind":"method","externalID":"s:STsE6reduce4into_qd__qd__n_yqd__z_7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"extendedModule":"Swift","title":"reduce(into:_:)","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", ("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> ()) "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}]},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.reduce(into:_:)"},{"text":".","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(into:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(into:_:)"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"initialResult"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"updateAccumulatingResult","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/reduce(into:_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(into:_:)","type":"topic","role":"symbol","kind":"symbol","title":"reduce(into:_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"into","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ()) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(into:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reversed().json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reversed().json
new file mode 100644
index 000000000..e16245bf0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/reversed().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reversed()"},"kind":"symbol","sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.reversed()","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reversed","kind":"identifier"},{"kind":"text","text":"() -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"externalID":"s:STsE8reversedSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","symbolKind":"method","title":"reversed()","extendedModule":"Swift","role":"symbol"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reversed()"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reversed","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/reversed()":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reversed()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"reversed","kind":"identifier"},{"kind":"text","text":"() -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"title":"reversed()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reversed()","abstract":[],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sequence-implementations.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sequence-implementations.json
new file mode 100644
index 000000000..f864eb03b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sequence-implementations.json
@@ -0,0 +1 @@
+{"kind":"article","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/Sequence-Implementations","interfaceLanguage":"swift"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sequence-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"API Collection","role":"collectionGroup","title":"Sequence Implementations"},"topicSections":[{"anchor":"Instance-Properties","generated":true,"title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/publisher","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/underestimatedCount"]},{"anchor":"Instance-Methods","title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/allSatisfy(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5uuh9","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compare(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/contains(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/count(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropFirst(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropLast(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elementsEqual(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/enumerated()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/first(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-3fyy7","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-73i4d","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/forEach(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/formatted(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lexicographicallyPrecedes(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/makeIterator()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-5l7nx","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/max(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/min(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(into:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reversed()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled(using:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-4zta4","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-8vhlv","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/starts(with:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/suffix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/withContiguousStorageIfAvailable(_:)"],"generated":true}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/shuffled()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled()","title":"shuffled()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/sorted(using:)-4zta4":{"title":"sorted(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-4zta4","abstract":[],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-4zta4","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/allSatisfy(_:)":{"title":"allSatisfy(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/allSatisfy(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/allsatisfy(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/withContiguousStorageIfAvailable(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/withContiguousStorageIfAvailable(_:)","title":"withContiguousStorageIfAvailable(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/withcontiguousstorageifavailable(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"text":"<","kind":"text"},{"text":"R","kind":"genericParameter"},{"text":">((","kind":"text"},{"preciseIdentifier":"s:SR","text":"UnsafeBufferPointer","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":">) "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/reduce(into:_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(into:_:)","type":"topic","role":"symbol","kind":"symbol","title":"reduce(into:_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"into","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ()) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(into:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/formatted(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/formatted(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"S"},{"text":") -> ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","kind":"typeIdentifier","text":"FormatOutput"}],"type":"topic","abstract":[],"title":"formatted(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/formatted(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-73i4d":{"role":"symbol","type":"topic","title":"flatMap(_:)","deprecated":true,"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-73i4d","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-73i4d","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/compactMap(_:)-5uuh9":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compactMap(_:)-5uuh9","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5uuh9","kind":"symbol","title":"compactMap(_:)","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/makeIterator()":{"role":"symbol","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"type":"codeVoice","code":"Self.Iterator"},{"type":"text","text":"."}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/makeIterator()","kind":"symbol","title":"makeIterator()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"makeIterator","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"Self","kind":"typeIdentifier"}],"abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/makeiterator()","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","kind":"symbol","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"split","kind":"identifier"},{"text":"(","kind":"text"},{"text":"maxSplits","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":", "},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"whereSeparator"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ArraySlice","kind":"typeIdentifier","preciseIdentifier":"s:s10ArraySliceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":">]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/starts(with:by:)":{"abstract":[],"title":"starts(with:by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/starts(with:by:)","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/starts(with:by:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/publisher":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/publisher","kind":"symbol","abstract":[],"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"publisher"},{"text":": ","kind":"text"},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","text":"Sequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier","text":"Never"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/publisher","title":"publisher","role":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/compare(_:_:)":{"abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compare(_:_:)","title":"compare(_:_:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/compare(_:_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":") -> "},{"text":"ComparisonResult","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/dropLast(_:)":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropLast(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"title":"dropLast(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/droplast(_:)","abstract":[],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/sorted(by:)":{"abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(by:)","title":"sorted(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(by:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/flatMap(_:)-3fyy7":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-3fyy7","type":"topic","abstract":[],"title":"flatMap(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/flatMap(_:)-3fyy7"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/dropFirst(_:)":{"title":"dropFirst(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/dropFirst(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"DropFirstSequence","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/dropfirst(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/min(by:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/min(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/min(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"title":"min(by:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/underestimatedCount":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/underestimatedcount","kind":"symbol","title":"underestimatedCount","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/underestimatedCount","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/count(where:)":{"kind":"symbol","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/count(where:)","title":"count(where:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/count(where:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/suffix(_:)":{"title":"suffix(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/suffix(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/suffix(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"suffix"},{"text":"(","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/reversed()":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reversed()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"reversed","kind":"identifier"},{"kind":"text","text":"() -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"title":"reversed()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reversed()","abstract":[],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/max(by:)":{"title":"max(by:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/max(by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/max(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"?"}],"type":"topic","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/forEach(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/foreach(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/forEach(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"}],"role":"symbol","type":"topic","title":"forEach(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/shuffled(using:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled(using:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled(using:)","title":"shuffled(using:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/lexicographicallyPrecedes(_:by:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lexicographicallyprecedes(_:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/lexicographicallyPrecedes(_:by:)","abstract":[],"role":"symbol","kind":"symbol","title":"lexicographicallyPrecedes(_:by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/map(_:)-5l7nx":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/map(_:)-5l7nx","title":"map(_:)","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-5l7nx","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> [","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/elementsEqual(_:by:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/elementsEqual(_:by:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elementsEqual"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elementsequal(_:by:)","kind":"symbol","title":"elementsEqual(_:by:)","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/sorted(using:)-8vhlv":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"abstract":[],"title":"sorted(using:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-8vhlv","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-8vhlv","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/contains(where:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"contains"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"type":"topic","abstract":[],"title":"contains(where:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/contains(where:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/enumerated()":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/enumerated()","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18EnumeratedSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/enumerated()","title":"enumerated()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/prefix(_:)":{"title":"prefix(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/prefix(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"PrefixSequence","preciseIdentifier":"s:s14PrefixSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"type":"topic","kind":"symbol","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/first(where:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/first(where:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/first(where:)","title":"first(where:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/reduce(_:_:)":{"title":"reduce(_:_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(_:_:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/reduce(_:_:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"kind":"text","text":">("},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled().json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled().json
new file mode 100644
index 000000000..44a084e13
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled().json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"metadata":{"roleHeading":"Instance Method","title":"shuffled()","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"symbolKind":"method","externalID":"s:STsE8shuffledSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled()","interfaceLanguage":"swift"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.shuffled()"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled()"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/shuffled()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled()","title":"shuffled()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled(using:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled(using:).json
new file mode 100644
index 000000000..8b6147f4c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled(using:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","extendedModule":"Swift","roleHeading":"Instance Method","title":"shuffled(using:)","symbolKind":"method","externalID":"s:STsE8shuffled5usingSay7ElementQzGqd__z_tSGRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled(using:)"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"shuffled","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":" "},{"kind":"internalParam","text":"generator"},{"text":": ","kind":"text"},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"RandomNumberGenerator","preciseIdentifier":"s:SG","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled(using:)"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.shuffled(using:)"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/shuffled(using:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/shuffled(using:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled(using:)","title":"shuffled(using:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(by:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(by:).json
new file mode 100644
index 000000000..928c1d24e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(by:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(by:)"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(by:)","type":"codeVoice"},{"type":"text","text":"."}],"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(by:)","interfaceLanguage":"swift"},"metadata":{"title":"sorted(by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"externalID":"s:STsE6sorted2bySay7ElementQzGSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"text":"areInIncreasingOrder","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/sorted(by:)":{"abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(by:)","title":"sorted(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(by:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-4zta4.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-4zta4.json
new file mode 100644
index 000000000..e9f96588a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-4zta4.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-4zta4","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"comparator"},{"kind":"text","text":": "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP","text":"SortComparator"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":" == "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-4zta4"]}],"metadata":{"role":"symbol","symbolKind":"method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"roleHeading":"Instance Method","extendedModule":"Swift","title":"sorted(using:)","platforms":[{"introducedAt":"15.0","name":"iOS","beta":false,"unavailable":false,"deprecated":false},{"unavailable":false,"deprecated":false,"beta":false,"name":"macOS","introducedAt":"12.0"},{"beta":false,"deprecated":false,"unavailable":false,"introducedAt":"15.0","name":"tvOS"},{"beta":false,"introducedAt":"8.0","name":"watchOS","unavailable":false,"deprecated":false}],"externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tAA14SortComparatorRd__8ComparedQyd__AERSlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV"},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/sorted(using:)-4zta4":{"title":"sorted(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-4zta4","abstract":[],"type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-4zta4","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-8vhlv.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-8vhlv.json
new file mode 100644
index 000000000..06c7d7115
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-8vhlv.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-8vhlv","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"comparators"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"] "},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"S","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:ST"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":" : "},{"text":"SortComparator","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"}],"languages":["swift"]}]}],"metadata":{"platforms":[{"unavailable":false,"name":"iOS","deprecated":false,"introducedAt":"15.0","beta":false},{"name":"macOS","unavailable":false,"introducedAt":"12.0","beta":false,"deprecated":false},{"beta":false,"name":"tvOS","deprecated":false,"introducedAt":"15.0","unavailable":false},{"name":"watchOS","deprecated":false,"unavailable":false,"introducedAt":"8.0","beta":false}],"externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tSTRd__AA14SortComparatorRd_0_ADQyd__Rsd_0_8ComparedQyd_0_AERSr0_lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","title":"sorted(using:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":", "},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-8vhlv"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"type":"text","text":"."}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/sorted(using:)-8vhlv":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"abstract":[],"title":"sorted(using:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/sorted(using:)-8vhlv","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-8vhlv","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
new file mode 100644
index 000000000..84e8074ab
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)"]}],"metadata":{"title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"split","kind":"identifier"},{"text":"(","kind":"text"},{"text":"maxSplits","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":", "},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"kind":"externalParam","text":"whereSeparator"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":">]","kind":"text"}],"symbolKind":"method","role":"symbol","roleHeading":"Instance Method","extendedModule":"Swift","externalID":"s:STsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSays10ArraySliceVy7ElementQzGGSi_S2bAHKXEtKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV"},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"split"},{"text":"(","kind":"text"},{"text":"maxSplits","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":" = Int.max, ","kind":"text"},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":" = true, ","kind":"text"},{"text":"whereSeparator","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"isSeparator"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":">]","kind":"text"}]}]}],"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","kind":"symbol","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"split","kind":"identifier"},{"text":"(","kind":"text"},{"text":"maxSplits","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":", "},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"whereSeparator"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ArraySlice","kind":"typeIdentifier","preciseIdentifier":"s:s10ArraySliceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":">]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/starts(with:by:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/starts(with:by:).json
new file mode 100644
index 000000000..160b4cd2b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/starts(with:by:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/starts(with:by:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.starts(with:by:)","type":"codeVoice"},{"text":".","type":"text"}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"with"},{"kind":"text","text":" "},{"text":"possiblePrefix","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"areEquivalent"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":" : ","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:ST"}],"languages":["swift"],"platforms":["macOS"]}]}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"starts"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"externalID":"s:STsE6starts4with2bySbqd___Sb7ElementQz_ADQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","role":"symbol","title":"starts(with:by:)"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/starts(with:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/starts(with:by:)":{"abstract":[],"title":"starts(with:by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/starts(with:by:)","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/starts(with:by:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/suffix(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/suffix(_:).json
new file mode 100644
index 000000000..39c9fdff7
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/suffix(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"suffix(_:)","role":"symbol","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"externalID":"s:STsE6suffixySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","roleHeading":"Instance Method"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.suffix(_:)"},{"text":".","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/suffix(_:)","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/suffix(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"maxLength"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/suffix(_:)":{"title":"suffix(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/suffix(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/suffix(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"suffix"},{"text":"(","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","kind":"symbol","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/underestimatedcount.json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/underestimatedcount.json
new file mode 100644
index 000000000..e78f41858
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/underestimatedcount.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.underestimatedCount","type":"codeVoice"},{"text":".","type":"text"}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/underestimatedcount"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/underestimatedCount","interfaceLanguage":"swift"},"metadata":{"extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE19underestimatedCountSivp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","role":"symbol","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"underestimatedCount","symbolKind":"property"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/underestimatedCount":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/underestimatedcount","kind":"symbol","title":"underestimatedCount","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/underestimatedCount","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/withcontiguousstorageifavailable(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/withcontiguousstorageifavailable(_:).json
new file mode 100644
index 000000000..3e973b5a1
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rangeiterator/withcontiguousstorageifavailable(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.withContiguousStorageIfAvailable(_:)","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/withcontiguousstorageifavailable(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"body"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"UnsafeBufferPointer","preciseIdentifier":"s:SR"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}]}],"metadata":{"role":"symbol","roleHeading":"Instance Method","externalID":"s:STsE32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC13RangeIteratorV","extendedModule":"Swift","title":"withContiguousStorageIfAvailable(_:)","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"R"},{"text":">((","kind":"text"},{"preciseIdentifier":"s:SR","text":"UnsafeBufferPointer","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":">) ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/withContiguousStorageIfAvailable(_:)"},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator/withContiguousStorageIfAvailable(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator\/withContiguousStorageIfAvailable(_:)","title":"withContiguousStorageIfAvailable(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/withcontiguousstorageifavailable(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"text":"<","kind":"text"},{"text":"R","kind":"genericParameter"},{"text":">((","kind":"text"},{"preciseIdentifier":"s:SR","text":"UnsafeBufferPointer","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":">) "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/RangeIterator":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/RangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"RangeIterator"}],"navigatorTitle":[{"text":"RangeIterator","kind":"identifier"}],"role":"symbol","abstract":[{"type":"text","text":"This iterator iterates over “visible” text positions that overlap a document using"},{"type":"text","text":" "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rectforoffset(_:).json b/data/documentation/codeedittextview/textlayoutmanager/rectforoffset(_:).json
new file mode 100644
index 000000000..f5990bbe7
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rectforoffset(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Find a position for the character at a given offset.","type":"text"},{"type":"text","text":" "},{"text":"Returns the rect of the character at the given offset.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"The rect may represent more than one unicode unit, for instance if the offset is at the beginning of an"},{"type":"text","text":" "},{"type":"text","text":"emoji or non-latin glyph."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"rectForOffset","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"offset","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGRect","text":"CGRect"},{"kind":"text","text":"?"}]}],"kind":"declarations"},{"parameters":[{"name":"offset","content":[{"inlineContent":[{"type":"text","text":"The offset to create the rect for."}],"type":"paragraph"}]}],"kind":"parameters"},{"kind":"content","content":[{"level":2,"anchor":"return-value","text":"Return Value","type":"heading"},{"type":"paragraph","inlineContent":[{"text":"The found rect for the given offset.","type":"text"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rectforoffset(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectForOffset(_:)"},"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"externalID":"s:16CodeEditTextView0C13LayoutManagerC13rectForOffsetySo6CGRectVSgSiF","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"rectForOffset"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGRect","text":"CGRect"},{"kind":"text","text":"?"}],"role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","title":"rectForOffset(_:)","extendedModule":"CodeEditTextView","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"sections":[],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/rectForOffset(_:)":{"title":"rectForOffset(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectForOffset(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Find a position for the character at a given offset.","type":"text"},{"type":"text","text":" "},{"text":"Returns the rect of the character at the given offset.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"The rect may represent more than one unicode unit, for instance if the offset is at the beginning of an"},{"type":"text","text":" "},{"text":"emoji or non-latin glyph.","type":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/rectforoffset(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"rectForOffset"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@S@CGRect","text":"CGRect","kind":"typeIdentifier"},{"kind":"text","text":"?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/rectsfor(range:).json b/data/documentation/codeedittextview/textlayoutmanager/rectsfor(range:).json
new file mode 100644
index 000000000..3210dd050
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/rectsfor(range:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"rectsFor"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":") -> [","kind":"text"},{"text":"CGRect","preciseIdentifier":"c:@S@CGRect","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC8rectsFor5rangeSaySo6CGRectVGSo8_NSRangeV_tF","title":"rectsFor(range:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectsFor(range:)","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/rectsfor(range:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"rectsFor","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"range"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGRect","text":"CGRect"},{"text":"]","kind":"text"}]}]},{"parameters":[{"name":"range","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The range to calculate bounding rects for."}]}]}],"kind":"parameters"},{"kind":"content","content":[{"level":2,"text":"Return Value","type":"heading","anchor":"return-value"},{"type":"paragraph","inlineContent":[{"text":"Multiple bounding rects. Will return one rect for each line fragment that overlaps the given range.","type":"text"}]}]}],"abstract":[{"text":"Calculates all text bounding rects that intersect with a given range.","type":"text"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/rectsFor(range:)":{"title":"rectsFor(range:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/rectsFor(range:)","kind":"symbol","abstract":[{"type":"text","text":"Calculates all text bounding rects that intersect with a given range."}],"type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/rectsfor(range:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"rectsFor","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"preciseIdentifier":"c:@S@CGRect","text":"CGRect","kind":"typeIdentifier"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/renderdelegate.json b/data/documentation/codeedittextview/textlayoutmanager/renderdelegate.json
new file mode 100644
index 000000000..fdcb8d445
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/renderdelegate.json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"renderDelegate","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextLayoutManagerRenderDelegate","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP"},{"kind":"text","text":"?"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC14renderDelegateAA0cef6RenderH0_pSgvp","title":"renderDelegate"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/renderDelegate"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/renderdelegate"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"weak","kind":"keyword"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"renderDelegate","kind":"identifier"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","text":"TextLayoutManagerRenderDelegate","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","kind":"typeIdentifier"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/renderDelegate":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"renderDelegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","text":"TextLayoutManagerRenderDelegate"},{"kind":"text","text":"?"}],"role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/renderdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/renderDelegate","title":"renderDelegate","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/roundedpathforrange(_:cornerradius:).json b/data/documentation/codeedittextview/textlayoutmanager/roundedpathforrange(_:cornerradius:).json
new file mode 100644
index 000000000..e1c708844
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/roundedpathforrange(_:cornerradius:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/roundedpathforrange(_:cornerradius:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/roundedPathForRange(_:cornerRadius:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"abstract":[{"text":"Creates a smooth bezier path for the specified range.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"If the range exceeds the available text, it uses the maximum available range."}],"metadata":{"title":"roundedPathForRange(_:cornerRadius:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"roundedPathForRange"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"cornerRadius"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"NSBezierPath","preciseIdentifier":"c:objc(cs)NSBezierPath"},{"kind":"text","text":"?"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC19roundedPathForRange_12cornerRadiusSo08NSBezierH0CSgSo8_NSRangeV_14CoreFoundation7CGFloatVtF","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"roundedPathForRange","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"range"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"cornerRadius","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":" = 4) -> ","kind":"text"},{"kind":"typeIdentifier","text":"NSBezierPath","preciseIdentifier":"c:objc(cs)NSBezierPath"},{"text":"?","kind":"text"}],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"type":"text","text":"The range of text offsets to generate the path for."}],"type":"paragraph"}],"name":"range"},{"name":"cornerRadius","content":[{"inlineContent":[{"type":"text","text":"The radius of the edges when rounding. Defaults to four."}],"type":"paragraph"}]}]},{"content":[{"text":"Return Value","type":"heading","anchor":"return-value","level":2},{"type":"paragraph","inlineContent":[{"text":"An ","type":"text"},{"type":"codeVoice","code":"NSBezierPath"},{"text":" representing the visual shape for the text range, or ","type":"text"},{"code":"nil","type":"codeVoice"},{"text":" if the range is invalid.","type":"text"}]}],"kind":"content"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/roundedPathForRange(_:cornerRadius:)":{"abstract":[{"text":"Creates a smooth bezier path for the specified range.","type":"text"},{"text":" ","type":"text"},{"text":"If the range exceeds the available text, it uses the maximum available range.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/roundedPathForRange(_:cornerRadius:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"roundedPathForRange"},{"kind":"text","text":"("},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"text":"cornerRadius","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":") -> ","kind":"text"},{"text":"NSBezierPath","preciseIdentifier":"c:objc(cs)NSBezierPath","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"type":"topic","kind":"symbol","title":"roundedPathForRange(_:cornerRadius:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/roundedpathforrange(_:cornerradius:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/setneedslayout().json b/data/documentation/codeedittextview/textlayoutmanager/setneedslayout().json
new file mode 100644
index 000000000..1f5f2c602
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/setneedslayout().json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setNeedsLayout"},{"text":"()","kind":"text"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC08setNeedsE0yyF","extendedModule":"CodeEditTextView","title":"setNeedsLayout()","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"setNeedsLayout","kind":"identifier"},{"text":"()","kind":"text"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/setNeedsLayout()","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/setneedslayout()"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/setNeedsLayout()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/setNeedsLayout()","type":"topic","title":"setNeedsLayout()","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setNeedsLayout","kind":"identifier"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/setneedslayout()","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/textlineforindex(_:).json b/data/documentation/codeedittextview/textlayoutmanager/textlineforindex(_:).json
new file mode 100644
index 000000000..fb1d7add6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/textlineforindex(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/textlineforindex(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"abstract":[{"type":"text","text":"Finds text line and returns it if found."},{"text":" ","type":"text"},{"type":"text","text":"Lines are 0 indexed."}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForIndex(_:)"},"metadata":{"symbolKind":"method","externalID":"s:16CodeEditTextView0C13LayoutManagerC16textLineForIndexyAA0cH7StorageC0cH8PositionVyAA0cH0C_GSgSiF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"CodeEditTextView","title":"textLineForIndex(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textLineForIndex"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier","text":"TextLine"},{"text":">.","kind":"text"},{"text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"roleHeading":"Instance Method"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textLineForIndex","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"index","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"TextLineStorage","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"},{"kind":"text","text":">."},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"parameters":[{"name":"index","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The line to find."}]}]}],"kind":"parameters"},{"kind":"content","content":[{"level":2,"anchor":"return-value","text":"Return Value","type":"heading"},{"type":"paragraph","inlineContent":[{"type":"text","text":"The text line position if any, "},{"type":"codeVoice","code":"nil"},{"type":"text","text":" if the index is out of bounds."}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textLineForIndex(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textLineForIndex","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforindex(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForIndex(_:)","type":"topic","abstract":[{"text":"Finds text line and returns it if found.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"Lines are 0 indexed."}],"title":"textLineForIndex(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/textlineforoffset(_:).json b/data/documentation/codeedittextview/textlayoutmanager/textlineforoffset(_:).json
new file mode 100644
index 000000000..f412d2597
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/textlineforoffset(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/textlineforoffset(_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textLineForOffset"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"offset","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","kind":"typeIdentifier","text":"TextLineStorage"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier","text":"TextLinePosition"},{"kind":"text","text":"?"}]}]},{"kind":"parameters","parameters":[{"name":"offset","content":[{"type":"paragraph","inlineContent":[{"text":"The offset in the document to fetch a line for.","type":"text"}]}]}]},{"content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"inlineContent":[{"type":"text","text":"A text line position, if a line could be found at the given offset."}],"type":"paragraph"}],"kind":"content"},{"kind":"content","content":[{"level":2,"type":"heading","anchor":"discussion","text":"Discussion"},{"inlineContent":[{"text":"This method will not do any checking for document bounds, and will simply return ","type":"text"},{"type":"codeVoice","code":"nil"},{"text":" if the offset if negative","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"or outside the range of the document."}],"type":"paragraph"},{"inlineContent":[{"text":"However, if the offset is equal to the length of the text storage (one index past the end of the document) this","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"method will return the last line in the document if it exists."}],"type":"paragraph"}]}],"abstract":[{"type":"text","text":"Finds a text line for a given text offset."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForOffset(_:)","interfaceLanguage":"swift"},"metadata":{"title":"textLineForOffset(_:)","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","externalID":"s:16CodeEditTextView0C13LayoutManagerC17textLineForOffsetyAA0cH7StorageC0cH8PositionVyAA0cH0C_GSgSiF","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textLineForOffset","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","role":"symbol"},"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textLineForOffset(_:)":{"abstract":[{"text":"Finds a text line for a given text offset.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForOffset(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textLineForOffset","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"type":"topic","kind":"symbol","title":"textLineForOffset(_:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforoffset(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/textlineforposition(_:).json b/data/documentation/codeedittextview/textlayoutmanager/textlineforposition(_:).json
new file mode 100644
index 000000000..b6c0bf21f
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/textlineforposition(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/textlineforposition(_:)"]}],"abstract":[{"text":"Finds a text line for the given y position relative to the text view.","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForPosition(_:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"textLineForPosition(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"textLineForPosition"},{"text":"(","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?","kind":"text"}],"extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0C13LayoutManagerC19textLineForPositionyAA0cH7StorageC0chJ0VyAA0cH0C_GSg14CoreFoundation7CGFloatVF","roleHeading":"Instance Method","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textLineForPosition"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"posY"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier","text":"TextLineStorage","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"},{"kind":"text","text":"<"},{"text":"TextLine","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">.","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"content":[{"inlineContent":[{"text":"The y position to find a line for.","type":"text"}],"type":"paragraph"}],"name":"posY"}],"kind":"parameters"},{"kind":"content","content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"type":"paragraph","inlineContent":[{"type":"text","text":"A text line position, if a line could be found at the given y position."}]}]},{"kind":"content","content":[{"anchor":"discussion","text":"Discussion","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"text":"Y values begin at the top of the view and extend down. Eg, a ","type":"text"},{"type":"codeVoice","code":"0"},{"text":" y value would return the first line in","type":"text"},{"type":"text","text":" "},{"type":"text","text":"the text view if it exists. Though, for that operation the user should instead use"},{"type":"text","text":" "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForIndex(_:)","type":"reference","isActive":true},{"text":" for reliability.","type":"text"}]}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textLineForIndex(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textLineForIndex","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforindex(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForIndex(_:)","type":"topic","abstract":[{"text":"Finds text line and returns it if found.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"Lines are 0 indexed."}],"title":"textLineForIndex(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textLineForPosition(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textLineForPosition","kind":"identifier"},{"kind":"text","text":"("},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforposition(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textLineForPosition(_:)","type":"topic","abstract":[{"text":"Finds a text line for the given y position relative to the text view.","type":"text"}],"title":"textLineForPosition(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/textoffsetatpoint(_:).json b/data/documentation/codeedittextview/textlayoutmanager/textoffsetatpoint(_:).json
new file mode 100644
index 000000000..135267855
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/textoffsetatpoint(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textOffsetAtPoint","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"point"},{"kind":"text","text":": "},{"text":"CGPoint","preciseIdentifier":"c:@S@CGPoint","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"name":"point","content":[{"type":"paragraph","inlineContent":[{"text":"The point to translate to text position.","type":"text"}]}]}]},{"kind":"content","content":[{"text":"Return Value","type":"heading","anchor":"return-value","level":2},{"type":"paragraph","inlineContent":[{"text":"The text offset in the document where the given point is laid out.","type":"text"}]}]},{"kind":"content","content":[{"text":"Discussion","type":"heading","anchor":"discussion","level":2},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"If the requested point has not been laid out or it’s layout has since been invalidated by edits or"},{"type":"text","text":" "},{"text":"other changes, this method will return the invalid data. For best results, ensure the text around the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"point has been laid out or is visible before calling this method."}]}],"name":"Warning","type":"aside","style":"warning"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/textoffsetatpoint(_:)"]}],"kind":"symbol","metadata":{"title":"textOffsetAtPoint(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"textOffsetAtPoint"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGPoint","text":"CGPoint"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC17textOffsetAtPointySiSgSo7CGPointVF","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textOffsetAtPoint(_:)"},"abstract":[{"text":"Calculates the text position at the given point in the view.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textOffsetAtPoint(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"textOffsetAtPoint"},{"text":"(","kind":"text"},{"text":"CGPoint","preciseIdentifier":"c:@S@CGPoint","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/textoffsetatpoint(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textOffsetAtPoint(_:)","type":"topic","abstract":[{"type":"text","text":"Calculates the text position at the given point in the view."}],"title":"textOffsetAtPoint(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/textstorage(_:didprocessediting:range:changeinlength:).json b/data/documentation/codeedittextview/textlayoutmanager/textstorage(_:didprocessediting:range:changeinlength:).json
new file mode 100644
index 000000000..9bb940af4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/textstorage(_:didprocessediting:range:changeinlength:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/textstorage(_:didprocessediting:range:changeinlength:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textStorage(_:didProcessEditing:range:changeInLength:)","interfaceLanguage":"swift"},"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"text":"Receives edit notifications from the text storage and updates internal data structures to stay in sync with","type":"text"},{"text":" ","type":"text"},{"text":"text content.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"textStorage"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"textStorage"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"text":"didProcessEditing","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"editedMask"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSTextStorageEditActions","text":"NSTextStorageEditActions"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"range"},{"kind":"text","text":" "},{"text":"editedRange","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"changeInLength"},{"kind":"text","text":" "},{"text":"delta","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}]}]},{"kind":"content","content":[{"level":2,"text":"Discussion","type":"heading","anchor":"discussion"},{"inlineContent":[{"text":"If the changes are only attribute changes, this method invalidates layout for the edited range and returns.","type":"text"}],"type":"paragraph"},{"inlineContent":[{"text":"Otherwise, any lines that were removed or replaced by the edit are first removed from the text line layout","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"storage. Then, any new lines are inserted into the same storage."}],"type":"paragraph"},{"type":"paragraph","inlineContent":[{"type":"text","text":"For instance, if inserting a newline this method will:"}]},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Remove no lines (none were replaced)"}]}]},{"content":[{"inlineContent":[{"type":"text","text":"Update the current line’s range to contain the newline character."}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"Insert a new line after the current line.","type":"text"}]}]}]},{"type":"paragraph","inlineContent":[{"type":"text","text":"If a selection containing a newline is deleted and replaced with two more newlines this method will:"}]},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"type":"text","text":"Delete the original line."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"Insert two lines."}],"type":"paragraph"}]}]},{"name":"Note","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"This method "},{"inlineContent":[{"text":"does not","type":"text"}],"type":"emphasis"},{"type":"text","text":" cause a layout calculation. If a method is finding "},{"code":"NaN","type":"codeVoice"},{"type":"text","text":" values for line"},{"type":"text","text":" "},{"text":"fragments, ensure ","type":"text"},{"code":"layout","type":"codeVoice"},{"text":" or ","type":"text"},{"code":"ensureLayoutUntil","type":"codeVoice"},{"type":"text","text":" are called on the subject ranges."}]}],"type":"aside","style":"note"}]}],"metadata":{"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextLayoutManager(im)textStorage:didProcessEditing:range:changeInLength:","modules":[{"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"CodeEditTextView","title":"textStorage(_:didProcessEditing:range:changeInLength:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textStorage","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"didProcessEditing","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@E@NSTextStorageEditActions","text":"NSTextStorageEditActions","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"range","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":", "},{"text":"changeInLength","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":")","kind":"text"}],"roleHeading":"Instance Method"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/textStorage(_:didProcessEditing:range:changeInLength:)":{"title":"textStorage(_:didProcessEditing:range:changeInLength:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/textstorage(_:didprocessediting:range:changeinlength:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/textStorage(_:didProcessEditing:range:changeInLength:)","abstract":[{"type":"text","text":"Receives edit notifications from the text storage and updates internal data structures to stay in sync with"},{"type":"text","text":" "},{"type":"text","text":"text content."}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textStorage","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"didProcessEditing","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSTextStorageEditActions","preciseIdentifier":"c:@E@NSTextStorageEditActions","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"changeInLength","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":")"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/verticallayoutpadding.json b/data/documentation/codeedittextview/textlayoutmanager/verticallayoutpadding.json
new file mode 100644
index 000000000..348681bc6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/verticallayoutpadding.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"verticalLayoutPadding","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC08verticalE7Padding14CoreFoundation7CGFloatVvp","roleHeading":"Instance Property","title":"verticalLayoutPadding"},"sections":[],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"type":"text","text":"The amount of extra vertical padding used to lay out lines in before they come into view."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"verticalLayoutPadding"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}],"languages":["swift"]}]},{"kind":"content","content":[{"anchor":"discussion","type":"heading","text":"Discussion","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"This solves a small problem with layout performance, if you’re seeing layout lagging behind while scrolling,"},{"type":"text","text":" "},{"type":"text","text":"adjusting this value higher may help fix that."},{"text":" ","type":"text"},{"type":"text","text":"Defaults to "},{"type":"codeVoice","code":"350"},{"type":"text","text":"."}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/verticallayoutpadding"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/verticalLayoutPadding"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/verticalLayoutPadding":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/verticalLayoutPadding","url":"\/documentation\/codeedittextview\/textlayoutmanager\/verticallayoutpadding","title":"verticalLayoutPadding","abstract":[{"text":"The amount of extra vertical padding used to lay out lines in before they come into view.","type":"text"}],"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"verticalLayoutPadding","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/visiblelines().json b/data/documentation/codeedittextview/textlayoutmanager/visiblelines().json
new file mode 100644
index 000000000..8f1d15337
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/visiblelines().json
@@ -0,0 +1 @@
+{"metadata":{"title":"visibleLines()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"visibleLines","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"YPositionIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC12visibleLinesAC17YPositionIteratorVyF","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"type":"text","text":"Iterate over all visible lines."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"visibleLines"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV"}],"platforms":["macOS"],"languages":["swift"]}]},{"content":[{"type":"heading","text":"Return Value","anchor":"return-value","level":2},{"inlineContent":[{"type":"text","text":"An iterator to iterate through all visible lines."}],"type":"paragraph"}],"kind":"content"},{"kind":"content","content":[{"anchor":"discussion","level":2,"text":"Discussion","type":"heading"},{"type":"paragraph","inlineContent":[{"text":"Visible lines are any lines contained by the rect returned by ","type":"text"},{"type":"reference","isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/visibleRect"},{"text":" or,","type":"text"},{"type":"text","text":" "},{"text":"if there is no delegate from ","type":"text"},{"type":"codeVoice","code":"0"},{"text":" to the estimated document height.","type":"text"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/visibleLines()","interfaceLanguage":"swift"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/visiblelines()"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/visibleLines()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/visibleLines()","abstract":[{"type":"text","text":"Iterate over all visible lines."}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"visibleLines","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"YPositionIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV"}],"title":"visibleLines()","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanager\/visiblelines()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/visibleRect":{"abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/visiblerect","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"visibleRect"},{"kind":"text","text":": "},{"text":"NSRect","preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/visibleRect","kind":"symbol","title":"visibleRect","required":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/wraplines.json b/data/documentation/codeedittextview/textlayoutmanager/wraplines.json
new file mode 100644
index 000000000..0d7942970
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/wraplines.json
@@ -0,0 +1 @@
+{"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/wraplines"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"metadata":{"roleHeading":"Instance Property","externalID":"s:16CodeEditTextView0C13LayoutManagerC9wrapLinesSbvp","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"wrapLines","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrapLines"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"symbolKind":"property"},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"wrapLines","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"kind":"text","text":" "},{"text":"set","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/wrapLines":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLines","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"wrapLines"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"type":"topic","kind":"symbol","title":"wrapLines","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/wraplines"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/wraplineswidth.json b/data/documentation/codeedittextview/textlayoutmanager/wraplineswidth.json
new file mode 100644
index 000000000..f45f21d8a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/wraplineswidth.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"abstract":[{"text":"The width of the space available to draw text fragments when wrapping lines.","type":"text"}],"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"wrapLinesWidth","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/wraplineswidth"]}],"metadata":{"roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"wrapLinesWidth","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC14wrapLinesWidth14CoreFoundation7CGFloatVvp","role":"symbol","title":"wrapLinesWidth","symbolKind":"property"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLinesWidth","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/wrapLinesWidth":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/wrapLinesWidth","type":"topic","title":"wrapLinesWidth","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"wrapLinesWidth","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/wraplineswidth","abstract":[{"type":"text","text":"The width of the space available to draw text fragments when wrapping lines."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator.json
new file mode 100644
index 000000000..d262a1a93
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator.json
@@ -0,0 +1 @@
+{"sections":[],"topicSections":[{"title":"Instance Methods","anchor":"Instance-Methods","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/next()"]},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/LazySequenceProtocol-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/Sequence-Implementations"],"title":"Default Implementations","generated":true,"anchor":"Default-Implementations"}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"]]},"metadata":{"symbolKind":"struct","roleHeading":"Structure","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"TextLayoutManager.YPositionIterator"},"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/St","doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP","doc:\/\/codeedittextview.CodeEditTextView\/ST"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"YPositionIterator","kind":"identifier"}],"platforms":["macOS"]}]},{"kind":"content","content":[{"level":2,"anchor":"overview","type":"heading","text":"Overview"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Next elements are retrieved lazily. Additionally, this iterator uses a stable "},{"type":"codeVoice","code":"index"},{"type":"text","text":" rather than a y position"},{"text":" ","type":"text"},{"text":"or a range to fetch the next line. This means the line storage can be updated during iteration.","type":"text"}]}]}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"text":" positions","type":"text"},{"type":"text","text":" "},{"type":"text","text":"using "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true,"type":"reference"},{"text":".","type":"text"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/LazySequenceProtocol-Implementations":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/LazySequenceProtocol-Implementations","type":"topic","role":"collectionGroup","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lazysequenceprotocol-implementations","kind":"article","title":"LazySequenceProtocol Implementations"},"doc://codeedittextview.CodeEditTextView/St":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/St","type":"unresolvable","title":"Swift.IteratorProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/next()":{"abstract":[{"text":"Iterates over the “visible” text positions.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/next()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/next()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"kind":"text","text":">."},{"kind":"typeIdentifier","text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"title":"next()"},"doc://codeedittextview.CodeEditTextView/ST":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/ST","title":"Swift.Sequence","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/s20LazySequenceProtocolP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP","title":"Swift.LazySequenceProtocol","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/Sequence-Implementations":{"type":"topic","kind":"article","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/Sequence-Implementations","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sequence-implementations","title":"Sequence Implementations","role":"collectionGroup","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/allsatisfy(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/allsatisfy(_:).json
new file mode 100644
index 000000000..8d987c5dc
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/allsatisfy(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.allSatisfy(_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"allSatisfy","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}]}],"sections":[],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"title":"allSatisfy(_:)","roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift","externalID":"s:STsE10allSatisfyyS2b7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","role":"symbol","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"allSatisfy","kind":"identifier"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/allsatisfy(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/allSatisfy(_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/allSatisfy(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/allsatisfy(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/allSatisfy(_:)","role":"symbol","type":"topic","kind":"symbol","title":"allSatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-5wc6b.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-5wc6b.json
new file mode 100644
index 000000000..c6e585918
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-5wc6b.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.compactMap(_:)"},{"text":".","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-5wc6b"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:s20LazySequenceProtocolPsE10compactMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compactMap"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"title":"compactMap(_:)","symbolKind":"method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-5wc6b","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/compactMap(_:)-5wc6b":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-5wc6b","kind":"symbol","role":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-5wc6b","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"title":"compactMap(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-xtl4.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-xtl4.json
new file mode 100644
index 000000000..fd051f6cf
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-xtl4.json
@@ -0,0 +1 @@
+{"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-xtl4","interfaceLanguage":"swift"},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"compactMap(_:)"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compactMap"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.compactMap(_:)","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-xtl4"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/compactMap(_:)-xtl4":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-xtl4","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-xtl4","role":"symbol","type":"topic","kind":"symbol","title":"compactMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compare(_:_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compare(_:_:).json
new file mode 100644
index 000000000..bb5361079
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compare(_:_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compare(_:_:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"extendedModule":"Swift","symbolKind":"method","externalID":"s:ST10FoundationE7compareySo18NSComparisonResultV8ComparedQyd___AFtAA14SortComparatorRd__7ElementQzRsd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","platforms":[{"beta":false,"deprecated":false,"introducedAt":"15.0","name":"iOS","unavailable":false},{"introducedAt":"12.0","deprecated":false,"name":"macOS","beta":false,"unavailable":false},{"deprecated":false,"introducedAt":"15.0","name":"tvOS","unavailable":false,"beta":false},{"deprecated":false,"beta":false,"introducedAt":"8.0","name":"watchOS","unavailable":false}],"title":"compare(_:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"compare","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult"}],"roleHeading":"Instance Method"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compare(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.compare(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":", "},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","text":"SortComparator","preciseIdentifier":"s:10Foundation14SortComparatorP"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/compare(_:_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compare(_:_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compare(_:_:)","title":"compare(_:_:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compare","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@E@NSComparisonResult","kind":"typeIdentifier","text":"ComparisonResult"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/contains(where:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/contains(where:).json
new file mode 100644
index 000000000..d8b89d2a0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/contains(where:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"contains","kind":"identifier"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"externalID":"s:STsE8contains5whereS2b7ElementQzKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"contains","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/contains(where:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/contains(where:)"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.contains(where:)","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/contains(where:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/contains(where:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"contains","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/contains(where:)","role":"symbol","type":"topic","kind":"symbol","title":"contains(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/count(where:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/count(where:).json
new file mode 100644
index 000000000..f3c73e28a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/count(where:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"count","kind":"identifier"},{"kind":"text","text":"<"},{"text":"E","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"where","kind":"externalParam"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:s5ErrorP","text":"Error"}],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/count(where:)","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/count(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"count","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","title":"count(where:)","externalID":"s:STsE5count5whereSiSb7ElementQzqd__YKXE_tqd__YKs5ErrorRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","extendedModule":"Swift","symbolKind":"method","role":"symbol"},"kind":"symbol","sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.count(where:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/count(where:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/count(where:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/count(where:)","title":"count(where:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"count","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/drop(while:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/drop(while:).json
new file mode 100644
index 000000000..a68c60e31
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/drop(while:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/drop(while:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.drop(while:)"},{"text":".","type":"text"}],"sections":[],"metadata":{"title":"drop(while:)","externalID":"s:s20LazySequenceProtocolPsE4drop5whiles0a9DropWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","symbolKind":"method","role":"symbol","extendedModule":"Swift","roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"drop"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"drop","kind":"identifier"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV","text":"LazyDropWhileSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":">","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/drop(while:)"},"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/drop(while:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/drop(while:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s21LazyDropWhileSequenceV","text":"LazyDropWhileSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"kind":"symbol","title":"drop(while:)","type":"topic","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/dropfirst(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/dropfirst(_:).json
new file mode 100644
index 000000000..cd2314abc
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/dropfirst(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/dropfirst(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"k","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":" = 1) -> "},{"text":"DropFirstSequence","preciseIdentifier":"s:s17DropFirstSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"]}],"kind":"declarations"}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropFirst"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"DropFirstSequence","preciseIdentifier":"s:s17DropFirstSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE9dropFirstys04DropB8SequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"dropFirst(_:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropFirst(_:)","interfaceLanguage":"swift"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.dropFirst(_:)","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/dropFirst(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropFirst(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropFirst"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"type":"topic","title":"dropFirst(_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/dropfirst(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/droplast(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/droplast(_:).json
new file mode 100644
index 000000000..1d7ad4d56
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/droplast(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.dropLast(_:)"},{"type":"text","text":"."}],"metadata":{"externalID":"s:STsE8dropLastySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"dropLast(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"extendedModule":"Swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/droplast(_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropLast(_:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropLast"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"k","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":" = 1) -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/dropLast(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropLast(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","title":"dropLast(_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/droplast(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elements.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elements.json
new file mode 100644
index 000000000..dea83bad8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elements.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elements"},"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.elements","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"elements"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}],"kind":"declarations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elements"]}],"metadata":{"externalID":"s:s20LazySequenceProtocolPs8ElementsQzRszrlE8elementsxvp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"property","extendedModule":"Swift","title":"elements","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"elements","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}],"roleHeading":"Instance Property","role":"symbol","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Self"},{"text":" is ","type":"text"},{"code":"Self.Elements","type":"codeVoice"},{"text":".","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}]}},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/elements":{"role":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"Self.Elements"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elements","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elements","title":"elements","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"elements","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elementsequal(_:by:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elementsequal(_:by:).json
new file mode 100644
index 000000000..3113d0004
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elementsequal(_:by:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elementsEqual(_:by:)"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.elementsEqual(_:by:)"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"elementsEqual"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"other","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"areEquivalent","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:ST","text":"Sequence","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elementsequal(_:by:)"]}],"metadata":{"symbolKind":"method","extendedModule":"Swift","roleHeading":"Instance Method","externalID":"s:STsE13elementsEqual_2bySbqd___Sb7ElementQz_ACQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","role":"symbol","title":"elementsEqual(_:by:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"schemaVersion":{"patch":0,"minor":3,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/elementsEqual(_:by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elementsEqual(_:by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elementsequal(_:by:)","title":"elementsEqual(_:by:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"elementsEqual","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/enumerated().json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/enumerated().json
new file mode 100644
index 000000000..3f22d1cd4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/enumerated().json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","title":"enumerated()","extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE10enumerateds18EnumeratedSequenceVyxGyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","preciseIdentifier":"s:s18EnumeratedSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":">"}],"role":"symbol","roleHeading":"Instance Method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"text":"() -> ","kind":"text"},{"text":"EnumeratedSequence","preciseIdentifier":"s:s18EnumeratedSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.enumerated()","type":"codeVoice"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/enumerated()"]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/enumerated()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/enumerated()":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/enumerated()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"type":"topic","title":"enumerated()","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/enumerated()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/filter(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/filter(_:).json
new file mode 100644
index 000000000..2e47656b8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/filter(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/filter(_:)"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"isIncluded"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.filter(_:)"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/filter(_:)"},"metadata":{"externalID":"s:s20LazySequenceProtocolPsE6filterys0a6FilterB0Vy8ElementsQzGSb7ElementQzcF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"filter","kind":"identifier"},{"kind":"text","text":"(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":">"}],"roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","title":"filter(_:)"},"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/filter(_:)":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"filter","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"abstract":[],"title":"filter(_:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/filter(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/filter(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/first(where:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/first(where:).json
new file mode 100644
index 000000000..6543cc667
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/first(where:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/first(where:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/first(where:)"},"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"first"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"metadata":{"title":"first(where:)","role":"symbol","roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"externalID":"s:STsE5first5where7ElementQzSgSbADKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.first(where:)","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/first(where:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/first(where:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/first(where:)","title":"first(where:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-65ga0.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-65ga0.json
new file mode 100644
index 000000000..34f2c87db
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-65ga0.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"kind":"symbol","deprecationSummary":[{"inlineContent":[{"type":"text","text":"Please use compactMap(_:) for the case where closure returns an optional value"}],"type":"paragraph"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": "},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-65ga0"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.flatMap(_:)"},{"text":".","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-65ga0"},"metadata":{"roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","platforms":[{"deprecatedAt":"4.1","deprecated":false,"unavailable":false,"renamed":"compactMap(_:)","beta":false,"name":"Swift","message":"Please use compactMap(_:) for the case where closure returns an optional value"}],"title":"flatMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-65ga0":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-65ga0","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"deprecated":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-65ga0","type":"topic","abstract":[],"title":"flatMap(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8c3o2.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8c3o2.json
new file mode 100644
index 000000000..124008bc3
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8c3o2.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8c3o2"},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"SegmentOfResult"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazySequence","kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"FlattenSequence","preciseIdentifier":"s:s15FlattenSequenceV"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>> ","kind":"text"},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":" : ","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:ST"}],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8c3o2"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazySequence","kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>>","kind":"text"}],"externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aB0Vys07FlattenB0Vys0aeB0Vy8ElementsQzqd__GGGqd__7ElementQzcSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","symbolKind":"method","title":"flatMap(_:)","extendedModule":"Swift","role":"symbol"},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.flatMap(_:)","type":"codeVoice"},{"text":".","type":"text"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-8c3o2":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8c3o2","kind":"symbol","abstract":[],"role":"symbol","type":"topic","title":"flatMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazySequence","preciseIdentifier":"s:s12LazySequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":">>>"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8c3o2"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8cio9.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8cio9.json
new file mode 100644
index 000000000..b56f5574d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8cio9.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE7flatMapySay7ElementQyd__Gqd__ABQzKXEKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}],"title":"flatMap(_:)","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8cio9"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8cio9","interfaceLanguage":"swift"},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.flatMap(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-8cio9":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8cio9","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"SegmentOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","title":"flatMap(_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8cio9","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-fcq1.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-fcq1.json
new file mode 100644
index 000000000..46282e308
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-fcq1.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"deprecationSummary":[{"inlineContent":[{"type":"text","text":"Please use compactMap(_:) for the case where closure returns an optional value"}],"type":"paragraph"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-fcq1"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-fcq1"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"flatMap(_:)","extendedModule":"Swift","role":"symbol","symbolKind":"method","externalID":"s:STsE7flatMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","platforms":[{"deprecated":false,"renamed":"compactMap(_:)","message":"Please use compactMap(_:) for the case where closure returns an optional value","unavailable":false,"beta":false,"deprecatedAt":"4.1","name":"Swift"}]},"schemaVersion":{"patch":0,"minor":3,"major":0},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.flatMap(_:)","type":"codeVoice"},{"type":"text","text":"."}],"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-fcq1":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-fcq1","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-fcq1","deprecated":true,"role":"symbol","type":"topic","kind":"symbol","title":"flatMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/foreach(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/foreach(_:).json
new file mode 100644
index 000000000..a8b1cb92a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/foreach(_:).json
@@ -0,0 +1 @@
+{"metadata":{"externalID":"s:STsE7forEachyyy7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","roleHeading":"Instance Method","title":"forEach(_:)","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Void","preciseIdentifier":"s:s4Voida","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"}]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/forEach(_:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"forEach"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"body","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:s4Voida","kind":"typeIdentifier","text":"Void"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.forEach(_:)","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/foreach(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/forEach(_:)":{"abstract":[],"title":"forEach(_:)","type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/forEach(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/foreach(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/formatted(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/formatted(_:).json
new file mode 100644
index 000000000..cd6719802
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/formatted(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/formatted(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.formatted(_:)"},{"text":".","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/formatted(_:)"},"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:ST10FoundationE9formattedy12FormatOutputQyd__qd__0C5InputQyd__RszAA0C5StyleRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","symbolKind":"method","extendedModule":"Swift","platforms":[{"introducedAt":"15.0","unavailable":false,"name":"iOS","deprecated":false,"beta":false},{"beta":false,"deprecated":false,"unavailable":false,"name":"macOS","introducedAt":"12.0"},{"unavailable":false,"beta":false,"deprecated":false,"name":"tvOS","introducedAt":"15.0"},{"introducedAt":"8.0","deprecated":false,"beta":false,"name":"watchOS","unavailable":false}],"title":"formatted(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"formatted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":"."},{"text":"FormatOutput","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa"}],"roleHeading":"Instance Method","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"formatted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"style","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"S"},{"text":") -> ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput","kind":"typeIdentifier"},{"kind":"text","text":" "},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":" == "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"FormatInput","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B5InputQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","text":"FormatStyle","preciseIdentifier":"s:10Foundation11FormatStyleP"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/formatted(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/formatted(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","kind":"typeIdentifier","text":"FormatOutput"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/formatted(_:)","role":"symbol","type":"topic","kind":"symbol","title":"formatted(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazy.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazy.json
new file mode 100644
index 000000000..73da4cb77
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazy.json
@@ -0,0 +1 @@
+{"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lazy"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"LazySequenceProtocol.lazy","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lazy"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"metadata":{"title":"lazy","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"type":"codeVoice","code":"Elements"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"LazySequenceProtocol"},{"type":"text","text":"."}]},"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"}],"externalID":"s:s20LazySequenceProtocolPssAA8ElementsRpzrlE4lazyADvp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","extendedModule":"Swift","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lazy"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/lazy":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lazy","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lazy","title":"lazy","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lazy","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"LazySequenceProtocol"},{"type":"text","text":"."}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazysequenceprotocol-implementations.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazysequenceprotocol-implementations.json
new file mode 100644
index 000000000..6b4788a7e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazysequenceprotocol-implementations.json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"role":"collectionGroup","modules":[{"name":"CodeEditTextView"}],"roleHeading":"API Collection","title":"LazySequenceProtocol Implementations"},"kind":"article","variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lazysequenceprotocol-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/LazySequenceProtocol-Implementations"},"schemaVersion":{"patch":0,"major":0,"minor":3},"topicSections":[{"title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elements","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lazy"],"generated":true,"anchor":"Instance-Properties"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-5wc6b","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/drop(while:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/filter(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-65ga0","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8c3o2","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-3fj1z","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(while:)"],"anchor":"Instance-Methods","title":"Instance Methods","generated":true}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/map(_:)-3fj1z":{"kind":"symbol","type":"topic","title":"map(_:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-3fj1z","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-3fj1z","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"text":">","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-8c3o2":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8c3o2","kind":"symbol","abstract":[],"role":"symbol","type":"topic","title":"flatMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazySequence","preciseIdentifier":"s:s12LazySequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":">>>"}],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8c3o2"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/filter(_:)":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"filter","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"abstract":[],"title":"filter(_:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/filter(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/filter(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-65ga0":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-65ga0","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"deprecated":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-65ga0","type":"topic","abstract":[],"title":"flatMap(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/lazy":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lazy","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lazy","title":"lazy","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lazy","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"LazySequenceProtocol"},{"type":"text","text":"."}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/compactMap(_:)-5wc6b":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-5wc6b","kind":"symbol","role":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-5wc6b","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"title":"compactMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/prefix(while:)":{"title":"prefix(while:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(while:)","kind":"symbol","abstract":[],"type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(while:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/drop(while:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/drop(while:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s21LazyDropWhileSequenceV","text":"LazyDropWhileSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"kind":"symbol","title":"drop(while:)","type":"topic","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/elements":{"role":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"Self.Elements"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elements","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elements","title":"elements","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"elements","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lexicographicallyprecedes(_:by:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lexicographicallyprecedes(_:by:).json
new file mode 100644
index 000000000..60dad3d2b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lexicographicallyprecedes(_:by:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lexicographicallyprecedes(_:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"other"},{"text":": ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"text":"areInIncreasingOrder","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"}]}],"kind":"declarations"}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lexicographicallyPrecedes(_:by:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.lexicographicallyPrecedes(_:by:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"lexicographicallyPrecedes(_:by:)","externalID":"s:STsE25lexicographicallyPrecedes_2bySbqd___Sb7ElementQz_ADtKXEtKSTRd__ACQyd__ADRSlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"roleHeading":"Instance Method","role":"symbol"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/lexicographicallyPrecedes(_:by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lexicographicallyPrecedes(_:by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lexicographicallyprecedes(_:by:)","title":"lexicographicallyPrecedes(_:by:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/makeiterator().json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/makeiterator().json
new file mode 100644
index 000000000..9adfe5536
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/makeiterator().json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/makeIterator()"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"makeIterator"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}],"platforms":["macOS"]}]}],"metadata":{"symbolKind":"method","externalID":"s:STs8IteratorSTQzRszrlE04makeA0xyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"Swift","title":"makeIterator()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"makeIterator","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"Self"}],"conformance":{"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"type":"codeVoice","code":"Self.Iterator"},{"text":".","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"roleHeading":"Instance Method"},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/makeiterator()"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.makeIterator()","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/makeIterator()":{"role":"symbol","conformance":{"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"text":".","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/makeIterator()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/makeiterator()","title":"makeIterator()","type":"topic","kind":"symbol","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"makeIterator","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-3fj1z.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-3fj1z.json
new file mode 100644
index 000000000..d9f678202
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-3fj1z.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"symbolKind":"method","extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPsE3mapys0a3MapB0Vy8ElementsQzqd__Gqd__7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","roleHeading":"Instance Method","title":"map(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"text":"<","kind":"text"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"U"},{"text":">","kind":"text"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"U"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"U"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-3fj1z"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-3fj1z"},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.map(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/map(_:)-3fj1z":{"kind":"symbol","type":"topic","title":"map(_:)","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-3fj1z","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-3fj1z","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"text":">","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-4hd6e.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-4hd6e.json
new file mode 100644
index 000000000..ab0b67c5a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-4hd6e.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-4hd6e"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":", "},{"text":"E","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"T"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"T"},{"text":"] ","kind":"text"},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"text":"E","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Error","kind":"typeIdentifier","preciseIdentifier":"s:s5ErrorP"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"symbolKind":"method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","role":"symbol","extendedModule":"Swift","title":"map(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"text":"T","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}],"roleHeading":"Instance Method"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-4hd6e"},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.map(_:)"},{"type":"text","text":"."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/map(_:)-4hd6e":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-4hd6e","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-4hd6e","title":"map(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"kind":"text","text":", "},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/max(by:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/max(by:).json
new file mode 100644
index 000000000..1befad380
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/max(by:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"max"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"method","externalID":"s:STsE3max2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"max(by:)","extendedModule":"Swift","role":"symbol"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/max(by:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/max(by:)"]}],"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.max(by:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@warn_unqualified_access"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areInIncreasingOrder"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/max(by:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/max(by:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"?","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/max(by:)","role":"symbol","type":"topic","kind":"symbol","title":"max(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/min(by:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/min(by:).json
new file mode 100644
index 000000000..d950679e4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/min(by:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/min(by:)"]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","externalID":"s:STsE3min2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"roleHeading":"Instance Method","title":"min(by:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.min(by:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@warn_unqualified_access"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areInIncreasingOrder"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/min(by:)"},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/min(by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/min(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"type":"topic","title":"min(by:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/min(by:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/next().json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/next().json
new file mode 100644
index 000000000..a7a31d9dd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/next().json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"externalID":"s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV4nextAA0C11LineStorageC0cJ8PositionVyAA0cJ0C_GSgyF","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"next"},{"kind":"text","text":"() -> "},{"text":"TextLineStorage","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"kind":"text","text":"?"}],"roleHeading":"Instance Method","role":"symbol","title":"next()","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/next()","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"mutating"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"next"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"TextLineStorage","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","kind":"typeIdentifier","text":"TextLine"},{"kind":"text","text":">."},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"},{"text":"?","kind":"text"}],"languages":["swift"]}]},{"content":[{"text":"Discussion","type":"heading","anchor":"discussion","level":2},{"inlineContent":[{"text":"See documentation on ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true,"type":"reference"},{"text":" for details.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/next()"]}],"abstract":[{"type":"text","text":"Iterates over the “visible” text positions."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/next()":{"abstract":[{"text":"Iterates over the “visible” text positions.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/next()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/next()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"kind":"text","text":">."},{"kind":"typeIdentifier","text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"title":"next()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(_:).json
new file mode 100644
index 000000000..de3bc169a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.prefix(_:)","type":"codeVoice"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(_:)","interfaceLanguage":"swift"},"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE6prefixys14PrefixSequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"prefix(_:)","role":"symbol","symbolKind":"method","extendedModule":"Swift","roleHeading":"Instance Method"},"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"maxLength"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"PrefixSequence","preciseIdentifier":"s:s14PrefixSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/prefix(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(_:)","role":"symbol","type":"topic","kind":"symbol","title":"prefix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(while:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(while:).json
new file mode 100644
index 000000000..e1c9ba080
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(while:).json
@@ -0,0 +1 @@
+{"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(while:)"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(while:)"]}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.prefix(while:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"symbolKind":"method","externalID":"s:s20LazySequenceProtocolPsE6prefix5whiles0a11PrefixWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"Swift","title":"prefix(while:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","kind":"typeIdentifier","text":"LazyPrefixWhileSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"kind":"text","text":">"}],"roleHeading":"Instance Method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":">"}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/prefix(while:)":{"title":"prefix(while:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(while:)","kind":"symbol","abstract":[],"type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(while:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/publisher.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/publisher.json
new file mode 100644
index 000000000..0e8c7d2c4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/publisher.json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.publisher","type":"codeVoice"},{"text":".","type":"text"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/publisher"]}],"metadata":{"extendedModule":"Swift","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"publisher"},{"kind":"text","text":": "},{"preciseIdentifier":"s:7Combine10PublishersO","text":"Publishers","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"text":"Never","preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier"},{"text":">","kind":"text"}],"roleHeading":"Instance Property","externalID":"s:ST7CombineE9publisherAA10PublishersO8SequenceVy_xs5NeverOGvp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","symbolKind":"property","role":"symbol","title":"publisher","platforms":[{"deprecated":false,"beta":false,"introducedAt":"13.0","name":"iOS","unavailable":false},{"unavailable":false,"deprecated":false,"beta":false,"name":"macOS","introducedAt":"10.15"},{"unavailable":false,"beta":false,"name":"tvOS","deprecated":false,"introducedAt":"13.0"},{"introducedAt":"6.0","deprecated":false,"name":"watchOS","unavailable":false,"beta":false}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"publisher"},{"text":": ","kind":"text"},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Sequence","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"text":"Never","preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier"},{"text":"> { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/publisher","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/publisher":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/publisher","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/publisher","title":"publisher","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"publisher"},{"kind":"text","text":": "},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"text":".","kind":"text"},{"text":"Sequence","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier","text":"Never"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(_:_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(_:_:).json
new file mode 100644
index 000000000..c76c9cf38
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(_:_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(_:_:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"initialResult","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"nextPartialResult"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"}],"languages":["swift"]}]}],"metadata":{"title":"reduce(_:_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}],"externalID":"s:STsE6reduceyqd__qd___qd__qd___7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.reduce(_:_:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/reduce(_:_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(_:_:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"}],"abstract":[],"title":"reduce(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(into:_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(into:_:).json
new file mode 100644
index 000000000..1a4cede48
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(into:_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(into:_:)"]}],"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.reduce(into:_:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"into","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"initialResult"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"updateAccumulatingResult","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(into:_:)"},"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE6reduce4into_qd__qd__n_yqd__z_7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"reduce(into:_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/reduce(into:_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(into:_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"text":": ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> ()) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"type":"topic","title":"reduce(into:_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(into:_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reversed().json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reversed().json
new file mode 100644
index 000000000..59fcc0ff2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reversed().json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"reversed","kind":"identifier"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reversed()"]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.reversed()"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reversed()","interfaceLanguage":"swift"},"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"reversed()","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reversed"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"externalID":"s:STsE8reversedSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","roleHeading":"Instance Method","extendedModule":"Swift","symbolKind":"method"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/reversed()":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reversed()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reversed()","title":"reversed()","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reversed","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sequence-implementations.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sequence-implementations.json
new file mode 100644
index 000000000..911a53f4c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sequence-implementations.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sequence-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/Sequence-Implementations","interfaceLanguage":"swift"},"metadata":{"role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}],"title":"Sequence Implementations"},"kind":"article","topicSections":[{"title":"Instance Properties","generated":true,"anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/publisher","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/underestimatedCount"]},{"generated":true,"title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/allSatisfy(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-xtl4","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compare(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/contains(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/count(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropFirst(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropLast(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elementsEqual(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/enumerated()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/first(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8cio9","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-fcq1","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/forEach(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/formatted(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lexicographicallyPrecedes(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/makeIterator()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-4hd6e","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/max(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/min(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(into:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reversed()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled(using:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-44git","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-9j2ea","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/starts(with:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/suffix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/withContiguousStorageIfAvailable(_:)"],"anchor":"Instance-Methods"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/withContiguousStorageIfAvailable(_:)":{"title":"withContiguousStorageIfAvailable(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/withcontiguousstorageifavailable(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/withContiguousStorageIfAvailable(_:)","kind":"symbol","role":"symbol","type":"topic","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"UnsafeBufferPointer","preciseIdentifier":"s:SR","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":">) "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-fcq1":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-fcq1","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-fcq1","deprecated":true,"role":"symbol","type":"topic","kind":"symbol","title":"flatMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/map(_:)-4hd6e":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/map(_:)-4hd6e","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-4hd6e","title":"map(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"kind":"text","text":", "},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/compactMap(_:)-xtl4":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-xtl4","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compactMap(_:)-xtl4","role":"symbol","type":"topic","kind":"symbol","title":"compactMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/publisher":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/publisher","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/publisher","title":"publisher","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"publisher"},{"kind":"text","text":": "},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"text":".","kind":"text"},{"text":"Sequence","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier","text":"Never"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/max(by:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/max(by:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"?","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/max(by:)","role":"symbol","type":"topic","kind":"symbol","title":"max(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/first(where:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/first(where:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/first(where:)","title":"first(where:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/contains(where:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/contains(where:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"contains","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/contains(where:)","role":"symbol","type":"topic","kind":"symbol","title":"contains(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/shuffled(using:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled(using:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled(using:)","title":"shuffled(using:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/prefix(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/prefix(_:)","role":"symbol","type":"topic","kind":"symbol","title":"prefix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/lexicographicallyPrecedes(_:by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/lexicographicallyPrecedes(_:by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lexicographicallyprecedes(_:by:)","title":"lexicographicallyPrecedes(_:by:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"split"},{"text":"(","kind":"text"},{"text":"maxSplits","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":", ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"whereSeparator","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":">]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","role":"symbol","type":"topic","kind":"symbol","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/allSatisfy(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/allsatisfy(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/allSatisfy(_:)","role":"symbol","type":"topic","kind":"symbol","title":"allSatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/count(where:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/count(where:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/count(where:)","title":"count(where:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"count","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/formatted(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/formatted(_:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","kind":"typeIdentifier","text":"FormatOutput"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/formatted(_:)","role":"symbol","type":"topic","kind":"symbol","title":"formatted(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/enumerated()":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/enumerated()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"type":"topic","title":"enumerated()","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/enumerated()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/sorted(by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(by:)","title":"sorted(by:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/dropLast(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropLast(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","title":"dropLast(_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/droplast(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/compare(_:_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/compare(_:_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compare(_:_:)","title":"compare(_:_:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compare","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@E@NSComparisonResult","kind":"typeIdentifier","text":"ComparisonResult"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/flatMap(_:)-8cio9":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/flatMap(_:)-8cio9","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"SegmentOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","title":"flatMap(_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8cio9","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/sorted(using:)-44git":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-44git","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-44git","title":"sorted(using:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"text":"S","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/reduce(into:_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(into:_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"text":": ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> ()) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"type":"topic","title":"reduce(into:_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(into:_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/elementsEqual(_:by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/elementsEqual(_:by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elementsequal(_:by:)","title":"elementsEqual(_:by:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"elementsEqual","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/dropFirst(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/dropFirst(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropFirst"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"type":"topic","title":"dropFirst(_:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/dropfirst(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/reversed()":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reversed()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reversed()","title":"reversed()","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reversed","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/underestimatedCount":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/underestimatedCount","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"type":"topic","title":"underestimatedCount","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/underestimatedcount","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/makeIterator()":{"role":"symbol","conformance":{"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"text":".","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/makeIterator()","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/makeiterator()","title":"makeIterator()","type":"topic","kind":"symbol","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"makeIterator","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/min(by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/min(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"type":"topic","title":"min(by:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/min(by:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/sorted(using:)-9j2ea":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-9j2ea","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-9j2ea","title":"sorted(using:)","type":"topic","kind":"symbol","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/shuffled()":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"shuffled"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","title":"shuffled()","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/starts(with:by:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/starts(with:by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/starts(with:by:)","kind":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"abstract":[],"title":"starts(with:by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/suffix(_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/suffix(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/suffix(_:)","kind":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"suffix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[],"title":"suffix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/forEach(_:)":{"abstract":[],"title":"forEach(_:)","type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/forEach(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/foreach(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/reduce(_:_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/reduce(_:_:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"}],"abstract":[],"title":"reduce(_:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled().json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled().json
new file mode 100644
index 000000000..98e5e9fcf
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled().json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled()","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.shuffled()"},{"type":"text","text":"."}],"metadata":{"externalID":"s:STsE8shuffledSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","roleHeading":"Instance Method","symbolKind":"method","extendedModule":"Swift","role":"symbol","title":"shuffled()","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"kind":"text","text":"() -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/shuffled()":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"shuffled"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","title":"shuffled()","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled(using:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled(using:).json
new file mode 100644
index 000000000..7ce89d597
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled(using:).json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE8shuffled5usingSay7ElementQzGqd__z_tSGRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"shuffled(using:)"},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.shuffled(using:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":" "},{"text":"generator","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"T"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"] "},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" : "},{"text":"RandomNumberGenerator","preciseIdentifier":"s:SG","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled(using:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled(using:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/shuffled(using:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/shuffled(using:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled(using:)","title":"shuffled(using:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(by:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(by:).json
new file mode 100644
index 000000000..b3342a48d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(by:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"areInIncreasingOrder","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.sorted(by:)"},{"type":"text","text":"."}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"externalID":"s:STsE6sorted2bySay7ElementQzGSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","role":"symbol","title":"sorted(by:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(by:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(by:)"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/sorted(by:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(by:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(by:)","title":"sorted(by:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-44git.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-44git.json
new file mode 100644
index 000000000..018dfce84
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-44git.json
@@ -0,0 +1 @@
+{"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"S"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"]","kind":"text"}],"roleHeading":"Instance Method","externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tSTRd__AA14SortComparatorRd_0_ADQyd__Rsd_0_8ComparedQyd_0_AERSr0_lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","role":"symbol","extendedModule":"Swift","platforms":[{"name":"iOS","deprecated":false,"beta":false,"unavailable":false,"introducedAt":"15.0"},{"deprecated":false,"name":"macOS","beta":false,"unavailable":false,"introducedAt":"12.0"},{"name":"tvOS","deprecated":false,"unavailable":false,"beta":false,"introducedAt":"15.0"},{"beta":false,"deprecated":false,"introducedAt":"8.0","name":"watchOS","unavailable":false}],"symbolKind":"method","title":"sorted(using:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"comparators"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"] ","kind":"text"},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":" : ","kind":"text"},{"text":"SortComparator","preciseIdentifier":"s:10Foundation14SortComparatorP","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"text":" == ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":" == ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-44git","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-44git"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/sorted(using:)-44git":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-44git","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-44git","title":"sorted(using:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"text":"S","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-9j2ea.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-9j2ea.json
new file mode 100644
index 000000000..08e154fe4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-9j2ea.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"extendedModule":"Swift","roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"platforms":[{"name":"iOS","unavailable":false,"beta":false,"introducedAt":"15.0","deprecated":false},{"deprecated":false,"unavailable":false,"introducedAt":"12.0","name":"macOS","beta":false},{"introducedAt":"15.0","deprecated":false,"beta":false,"unavailable":false,"name":"tvOS"},{"beta":false,"introducedAt":"8.0","name":"watchOS","unavailable":false,"deprecated":false}],"externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tAA14SortComparatorRd__8ComparedQyd__AERSlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"sorted(using:)"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":" "},{"text":"comparator","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"Comparator","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","text":"SortComparator","preciseIdentifier":"s:10Foundation14SortComparatorP"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":" == "},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"}],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-9j2ea"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-9j2ea"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/sorted(using:)-9j2ea":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/sorted(using:)-9j2ea","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-9j2ea","title":"sorted(using:)","type":"topic","kind":"symbol","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
new file mode 100644
index 000000000..92bee0e57
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"split"},{"kind":"text","text":"("},{"text":"maxSplits","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":" = Int.max, ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":" = true, "},{"kind":"externalParam","text":"whereSeparator"},{"text":" ","kind":"text"},{"text":"isSeparator","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ArraySlice","preciseIdentifier":"s:s10ArraySliceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":">]"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","interfaceLanguage":"swift"},"metadata":{"symbolKind":"method","externalID":"s:STsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSays10ArraySliceVy7ElementQzGGSi_S2bAHKXEtKF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","extendedModule":"Swift","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"split","kind":"identifier"},{"kind":"text","text":"("},{"text":"maxSplits","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":", "},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":", "},{"kind":"externalParam","text":"whereSeparator"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"ArraySlice","preciseIdentifier":"s:s10ArraySliceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":">]"}],"roleHeading":"Instance Method"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"split"},{"text":"(","kind":"text"},{"text":"maxSplits","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":", ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"whereSeparator","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":">]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","role":"symbol","type":"topic","kind":"symbol","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/starts(with:by:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/starts(with:by:).json
new file mode 100644
index 000000000..ed206b197
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/starts(with:by:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/starts(with:by:)"},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"kind":"text","text":"<"},{"text":"PossiblePrefix","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":" "},{"text":"possiblePrefix","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areEquivalent"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"kind":"text","text":" : "},{"text":"Sequence","preciseIdentifier":"s:ST","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.starts(with:by:)"},{"type":"text","text":"."}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"kind":"text","text":"<"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE6starts4with2bySbqd___Sb7ElementQz_ADQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"starts(with:by:)"},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/starts(with:by:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/starts(with:by:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/starts(with:by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/starts(with:by:)","kind":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"abstract":[],"title":"starts(with:by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/suffix(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/suffix(_:).json
new file mode 100644
index 000000000..7a46affd2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/suffix(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"suffix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"maxLength","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","role":"symbol","extendedModule":"Swift","externalID":"s:STsE6suffixySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"suffix"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"title":"suffix(_:)"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/suffix(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/suffix(_:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.suffix(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/suffix(_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/suffix(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/suffix(_:)","kind":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"suffix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[],"title":"suffix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/underestimatedcount.json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/underestimatedcount.json
new file mode 100644
index 000000000..2e5104bef
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/underestimatedcount.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.underestimatedCount"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"metadata":{"externalID":"s:STsE19underestimatedCountSivp::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"underestimatedCount","symbolKind":"property","role":"symbol","extendedModule":"Swift","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"underestimatedCount"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/underestimatedcount"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/underestimatedCount"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/underestimatedCount":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/underestimatedCount","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"type":"topic","title":"underestimatedCount","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/underestimatedcount","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/withcontiguousstorageifavailable(_:).json b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/withcontiguousstorageifavailable(_:).json
new file mode 100644
index 000000000..9bb7b049d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanager/ypositioniterator/withcontiguousstorageifavailable(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/withcontiguousstorageifavailable(_:)"]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"text":"<","kind":"text"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">(("},{"preciseIdentifier":"s:SR","text":"UnsafeBufferPointer","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"R"},{"text":"?","kind":"text"}],"extendedModule":"Swift","externalID":"s:STsE32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C13LayoutManagerC17YPositionIteratorV","title":"withContiguousStorageIfAvailable(_:)","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator"]]},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.withContiguousStorageIfAvailable(_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"body"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"UnsafeBufferPointer","preciseIdentifier":"s:SR"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"text":"?","kind":"text"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/withContiguousStorageIfAvailable(_:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"YPositionIterator"}],"title":"TextLayoutManager.YPositionIterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","navigatorTitle":[{"text":"YPositionIterator","kind":"identifier"}],"abstract":[{"text":"This iterator iterates over “visible” text positions that overlap a range of vertical ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" positions"},{"type":"text","text":" "},{"type":"text","text":"using "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","isActive":true},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/YPositionIterator/withContiguousStorageIfAvailable(_:)":{"title":"withContiguousStorageIfAvailable(_:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/withcontiguousstorageifavailable(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/YPositionIterator\/withContiguousStorageIfAvailable(_:)","kind":"symbol","role":"symbol","type":"topic","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"UnsafeBufferPointer","preciseIdentifier":"s:SR","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":">) "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager/determineVisiblePosition(for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager\/determineVisiblePosition(for:)","url":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"determineVisiblePosition(for:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Determines the “visible” line position by merging any consecutive lines"},{"type":"text","text":" "},{"text":"that are spanned by text attachments. If an attachment overlaps beyond the","type":"text"},{"type":"text","text":" "},{"type":"text","text":"bounds of the original line, this method will extend the returned range to"},{"type":"text","text":" "},{"text":"cover the full span of those attachments (and recurse if further attachments","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"cross into newly included lines)."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"determineVisiblePosition","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":">."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?) -> (position","kind":"text"},{"text":": ","kind":"text"},{"text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":">.","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":", indexRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SN","kind":"typeIdentifier","text":"ClosedRange"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":">)?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerdelegate.json b/data/documentation/codeedittextview/textlayoutmanagerdelegate.json
new file mode 100644
index 000000000..4f07678a8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerdelegate.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerdelegate"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"relationshipsSections":[{"title":"Conforming Types","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"],"type":"conformingTypes","kind":"relationships"}],"metadata":{"roleHeading":"Protocol","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"externalID":"s:16CodeEditTextView0C21LayoutManagerDelegateP","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"TextLayoutManagerDelegate","fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"symbolKind":"protocol"},"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/visibleRect"],"anchor":"Instance-Properties","title":"Instance Properties"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerHeightDidUpdate(newHeight:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerMaxWidthDidChange(newWidth:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerTypingAttributes()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerYAdjustment(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/textViewportSize()"],"anchor":"Instance-Methods","generated":true,"title":"Instance Methods"}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"},{"kind":"text","text":" : AnyObject"}],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/visibleRect":{"abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/visiblerect","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"visibleRect"},{"kind":"text","text":": "},{"text":"NSRect","preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/visibleRect","kind":"symbol","title":"visibleRect","required":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerMaxWidthDidChange(newWidth:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerMaxWidthDidChange(newWidth:)","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagermaxwidthdidchange(newwidth:)","title":"layoutManagerMaxWidthDidChange(newWidth:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"layoutManagerMaxWidthDidChange"},{"kind":"text","text":"("},{"kind":"externalParam","text":"newWidth"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":")","kind":"text"}],"required":true,"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerHeightDidUpdate(newHeight:)":{"required":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerHeightDidUpdate(newHeight:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagerheightdidupdate(newheight:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerHeightDidUpdate"},{"kind":"text","text":"("},{"kind":"externalParam","text":"newHeight"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"kind":"text","text":")"}],"title":"layoutManagerHeightDidUpdate(newHeight:)","type":"topic","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerTypingAttributes()":{"title":"layoutManagerTypingAttributes()","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagertypingattributes()","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerTypingAttributes()","abstract":[],"required":true,"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerTypingAttributes"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key"},{"kind":"text","text":" : "},{"text":"Any","kind":"keyword"},{"kind":"text","text":"]"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerYAdjustment(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanageryadjustment(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"layoutManagerYAdjustment"},{"kind":"text","text":"("},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}],"type":"topic","abstract":[],"required":true,"title":"layoutManagerYAdjustment(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerYAdjustment(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/textViewportSize()":{"title":"textViewportSize()","required":true,"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textViewportSize","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"c:@S@CGSize","kind":"typeIdentifier","text":"CGSize"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/textviewportsize()","type":"topic","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/textViewportSize()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagerheightdidupdate(newheight:).json b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagerheightdidupdate(newheight:).json
new file mode 100644
index 000000000..9833e72ef
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagerheightdidupdate(newheight:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerHeightDidUpdate(newHeight:)","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate"]]},"metadata":{"required":true,"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"layoutManagerHeightDidUpdate"},{"text":"(","kind":"text"},{"text":"newHeight","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0C21LayoutManagerDelegateP06layoutF15HeightDidUpdate03newI0y14CoreFoundation7CGFloatV_tF","role":"symbol","title":"layoutManagerHeightDidUpdate(newHeight:)","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"layoutManagerHeightDidUpdate","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"newHeight"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":")"}],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagerheightdidupdate(newheight:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerHeightDidUpdate(newHeight:)":{"required":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerHeightDidUpdate(newHeight:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagerheightdidupdate(newheight:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerHeightDidUpdate"},{"kind":"text","text":"("},{"kind":"externalParam","text":"newHeight"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"kind":"text","text":")"}],"title":"layoutManagerHeightDidUpdate(newHeight:)","type":"topic","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagermaxwidthdidchange(newwidth:).json b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagermaxwidthdidchange(newwidth:).json
new file mode 100644
index 000000000..8fcc07859
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagermaxwidthdidchange(newwidth:).json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"layoutManagerMaxWidthDidChange","kind":"identifier"},{"kind":"text","text":"("},{"text":"newWidth","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":")"}],"required":true,"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C21LayoutManagerDelegateP06layoutF17MaxWidthDidChange03newJ0y14CoreFoundation7CGFloatV_tF","title":"layoutManagerMaxWidthDidChange(newWidth:)"},"sections":[],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"layoutManagerMaxWidthDidChange","kind":"identifier"},{"text":"(","kind":"text"},{"text":"newWidth","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":")"}],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagermaxwidthdidchange(newwidth:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerMaxWidthDidChange(newWidth:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerMaxWidthDidChange(newWidth:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerMaxWidthDidChange(newWidth:)","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagermaxwidthdidchange(newwidth:)","title":"layoutManagerMaxWidthDidChange(newWidth:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"layoutManagerMaxWidthDidChange"},{"kind":"text","text":"("},{"kind":"externalParam","text":"newWidth"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":")","kind":"text"}],"required":true,"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagertypingattributes().json b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagertypingattributes().json
new file mode 100644
index 000000000..9a05a2c68
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagertypingattributes().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagertypingattributes()"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"layoutManagerTypingAttributes","kind":"identifier"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"kind":"text","text":"."},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"]"}],"title":"layoutManagerTypingAttributes()","externalID":"s:16CodeEditTextView0C21LayoutManagerDelegateP06layoutF16TypingAttributesSDySo21NSAttributedStringKeyaypGyF","required":true,"symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"layoutManagerTypingAttributes","kind":"identifier"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"]"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerTypingAttributes()","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerTypingAttributes()":{"type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"layoutManagerTypingAttributes"},{"kind":"text","text":"() -> ["},{"text":"NSAttributedString","preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAttributedStringKey"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"]","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanagertypingattributes()","abstract":[],"title":"layoutManagerTypingAttributes()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerTypingAttributes()","kind":"symbol","required":true,"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanageryadjustment(_:).json b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanageryadjustment(_:).json
new file mode 100644
index 000000000..3f85362c2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanageryadjustment(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanageryadjustment(_:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate"]]},"sections":[],"kind":"symbol","metadata":{"externalID":"s:16CodeEditTextView0C21LayoutManagerDelegateP06layoutF11YAdjustmentyy14CoreFoundation7CGFloatVF","title":"layoutManagerYAdjustment(_:)","required":true,"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","role":"symbol","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerYAdjustment"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerYAdjustment"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"yAdjustment"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerYAdjustment(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/layoutManagerYAdjustment(_:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/layoutmanageryadjustment(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"layoutManagerYAdjustment"},{"kind":"text","text":"("},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}],"type":"topic","abstract":[],"required":true,"title":"layoutManagerYAdjustment(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/layoutManagerYAdjustment(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerdelegate/textviewportsize().json b/data/documentation/codeedittextview/textlayoutmanagerdelegate/textviewportsize().json
new file mode 100644
index 000000000..ab8703e8d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerdelegate/textviewportsize().json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textViewportSize","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"CGSize","preciseIdentifier":"c:@S@CGSize","kind":"typeIdentifier"}],"platforms":["macOS"]}]}],"kind":"symbol","sections":[],"metadata":{"required":true,"symbolKind":"method","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textViewportSize","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"CGSize","kind":"typeIdentifier","preciseIdentifier":"c:@S@CGSize"}],"modules":[{"name":"CodeEditTextView"}],"title":"textViewportSize()","externalID":"s:16CodeEditTextView0C21LayoutManagerDelegateP16textViewportSizeSo6CGSizeVyF"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate"]]},"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/textviewportsize()"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/textViewportSize()","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/textViewportSize()":{"title":"textViewportSize()","required":true,"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textViewportSize","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"c:@S@CGSize","kind":"typeIdentifier","text":"CGSize"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/textviewportsize()","type":"topic","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/textViewportSize()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerdelegate/visiblerect.json b/data/documentation/codeedittextview/textlayoutmanagerdelegate/visiblerect.json
new file mode 100644
index 000000000..60f723860
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerdelegate/visiblerect.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"required":true,"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C21LayoutManagerDelegateP11visibleRectSo6CGRectVvp","role":"symbol","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"visibleRect"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","text":"NSRect","kind":"typeIdentifier"}],"title":"visibleRect","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"visibleRect","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRect","preciseIdentifier":"c:@T@NSRect"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/visiblerect"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/visibleRect","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate/visibleRect":{"abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate\/visiblerect","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"visibleRect"},{"kind":"text","text":": "},{"text":"NSRect","preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate\/visibleRect","kind":"symbol","title":"visibleRect","required":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate.json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate.json
new file mode 100644
index 000000000..f4e0d69fd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate.json
@@ -0,0 +1 @@
+{"sections":[],"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)"],"title":"Instance Methods","anchor":"Instance-Methods"}],"abstract":[{"text":"Provide an instance of this class to the ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"},{"kind":"text","text":" : AnyObject"}]}]},{"kind":"content","content":[{"level":2,"anchor":"overview","text":"Overview","type":"heading"},{"type":"paragraph","inlineContent":[{"text":"All methods on this protocol are optional, and default to the default behavior.","type":"text"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP","role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"roleHeading":"Protocol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"symbolKind":"protocol","title":"TextLayoutManagerRenderDelegate"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/lineFragmentView(for:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)","abstract":[],"required":true,"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"lineFragmentView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":") -> ","kind":"text"},{"text":"LineFragmentView","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView"}],"type":"topic","title":"lineFragmentView(for:)","defaultImplementations":1,"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/linefragmentview(for:)","role":"symbol","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prepareForDisplay","kind":"identifier"},{"kind":"text","text":"("},{"text":"textLine","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"displayData"},{"text":": ","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"stringRef"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","text":"MarkedRanges"},{"text":"?, ","kind":"text"},{"text":"attachments","kind":"externalParam"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":"])"}],"defaultImplementations":1,"kind":"symbol","type":"topic","required":true,"title":"prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/estimatedLineHeight()":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[],"defaultImplementations":1,"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/estimatedlineheight()","title":"estimatedLineHeight()","kind":"symbol","type":"topic","required":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/characterXPosition(in:for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)","type":"topic","defaultImplementations":1,"abstract":[],"kind":"symbol","title":"characterXPosition(in:for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterXPosition"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"kind":"text","text":": "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/characterxposition(in:for:)","required":true}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)-c7ta.json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)-c7ta.json
new file mode 100644
index 000000000..dba46b4f4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)-c7ta.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"characterXPosition(in:for:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"characterXPosition","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegatePAAE18characterXPosition2in3for14CoreFoundation7CGFloatVAA12LineFragmentC_SitF","roleHeading":"Instance Method","symbolKind":"method"},"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)-c7ta"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterXPosition"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":" ","kind":"text"},{"text":"lineFragment","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"for"},{"kind":"text","text":" "},{"kind":"internalParam","text":"offset"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/characterxposition(in:for:)-c7ta"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/characterXPosition(in:for:)-c7ta":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)-c7ta","type":"topic","abstract":[],"kind":"symbol","title":"characterXPosition(in:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterXPosition"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"kind":"text","text":": "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/characterxposition(in:for:)-c7ta"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:).json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:).json
new file mode 100644
index 000000000..d89610d2b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/characterxposition(in:for:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"defaultImplementationsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)-c7ta"],"title":"TextLayoutManagerRenderDelegate Implementations","anchor":"TextLayoutManagerRenderDelegate-Implementations"}],"metadata":{"roleHeading":"Instance Method","role":"symbol","required":true,"modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterXPosition"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":", "},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"symbolKind":"method","title":"characterXPosition(in:for:)","externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP18characterXPosition2in3for14CoreFoundation7CGFloatVAA12LineFragmentC_SitF"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterXPosition"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"kind":"text","text":" "},{"text":"lineFragment","kind":"internalParam"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier","text":"LineFragment"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":" "},{"text":"offset","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"platforms":["macOS"]}]}],"kind":"symbol","sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/characterXPosition(in:for:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)","type":"topic","defaultImplementations":1,"abstract":[],"kind":"symbol","title":"characterXPosition(in:for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterXPosition"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"kind":"text","text":": "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/characterxposition(in:for:)","required":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/characterXPosition(in:for:)-c7ta":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/characterXPosition(in:for:)-c7ta","type":"topic","abstract":[],"kind":"symbol","title":"characterXPosition(in:for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"characterXPosition"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"kind":"text","text":": "},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/characterxposition(in:for:)-c7ta"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()-1xchi.json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()-1xchi.json
new file mode 100644
index 000000000..c739d356c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()-1xchi.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/estimatedlineheight()-1xchi"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()-1xchi","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"estimatedLineHeight()","externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegatePAAE19estimatedLineHeight14CoreFoundation7CGFloatVSgyF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"extendedModule":"CodeEditTextView"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"estimatedLineHeight"},{"kind":"text","text":"() -> "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":"?"}]}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/estimatedLineHeight()-1xchi":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()-1xchi","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/estimatedlineheight()-1xchi","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":"?","kind":"text"}],"title":"estimatedLineHeight()","type":"topic","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight().json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight().json
new file mode 100644
index 000000000..0ae62066c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight().json
@@ -0,0 +1 @@
+{"sections":[],"defaultImplementationsSections":[{"title":"TextLayoutManagerRenderDelegate Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()-1xchi"],"anchor":"TextLayoutManagerRenderDelegate-Implementations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/estimatedlineheight()"]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":"?","kind":"text"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()","interfaceLanguage":"swift"},"metadata":{"required":true,"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP19estimatedLineHeight14CoreFoundation7CGFloatVSgyF","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":"?"}],"title":"estimatedLineHeight()","symbolKind":"method"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/estimatedLineHeight()-1xchi":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()-1xchi","kind":"symbol","url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/estimatedlineheight()-1xchi","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":"?","kind":"text"}],"title":"estimatedLineHeight()","type":"topic","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/estimatedLineHeight()":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[],"defaultImplementations":1,"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/estimatedlineheight()","title":"estimatedLineHeight()","kind":"symbol","type":"topic","required":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/estimatedLineHeight()","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)-4crw7.json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)-4crw7.json
new file mode 100644
index 000000000..fa8e557f3
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)-4crw7.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegatePAAE012lineFragmentD03forAA04LinejD0CAA0lJ0C_tF","symbolKind":"method","extendedModule":"CodeEditTextView","title":"lineFragmentView(for:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"lineFragmentView","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":") -> ","kind":"text"},{"text":"LineFragmentView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView","kind":"typeIdentifier"}],"roleHeading":"Instance Method","role":"symbol"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)-4crw7"},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"lineFragmentView","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"lineFragment"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView","text":"LineFragmentView","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/linefragmentview(for:)-4crw7"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/lineFragmentView(for:)-4crw7":{"abstract":[],"role":"symbol","title":"lineFragmentView(for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)-4crw7","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/linefragmentview(for:)-4crw7","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineFragmentView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView","text":"LineFragmentView"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:).json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:).json
new file mode 100644
index 000000000..d88e79854
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"defaultImplementationsSections":[{"title":"TextLayoutManagerRenderDelegate Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)-4crw7"],"anchor":"TextLayoutManagerRenderDelegate-Implementations"}],"metadata":{"symbolKind":"method","required":true,"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineFragmentView"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView","text":"LineFragmentView","kind":"typeIdentifier"}],"title":"lineFragmentView(for:)","role":"symbol","externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP012lineFragmentD03forAA04LinejD0CAA0lJ0C_tF"},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"lineFragmentView"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"lineFragment","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":") -> ","kind":"text"},{"text":"LineFragmentView","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView"}],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/linefragmentview(for:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragmentView":{"title":"LineFragmentView","url":"\/documentation\/codeedittextview\/linefragmentview","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragmentView","navigatorTitle":[{"text":"LineFragmentView","kind":"identifier"}],"abstract":[{"type":"text","text":"Displays a line fragment."}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineFragmentView"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/lineFragmentView(for:)-4crw7":{"abstract":[],"role":"symbol","title":"lineFragmentView(for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)-4crw7","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/linefragmentview(for:)-4crw7","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineFragmentView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView","text":"LineFragmentView"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/lineFragmentView(for:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/lineFragmentView(for:)","abstract":[],"required":true,"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"lineFragmentView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":") -> ","kind":"text"},{"text":"LineFragmentView","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)LineFragmentView"}],"type":"topic","title":"lineFragmentView(for:)","defaultImplementations":1,"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/linefragmentview(for:)","role":"symbol","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi.json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi.json
new file mode 100644
index 000000000..c91453287
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)-ycsi","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"prepareForDisplay","kind":"identifier"},{"kind":"text","text":"("},{"text":"textLine","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLine","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"displayData","kind":"externalParam"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"},{"kind":"text","text":", "},{"text":"range","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":", "},{"text":"stringRef","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"kind":"text","text":", "},{"text":"markedRanges","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","text":"MarkedRanges","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"text":"attachments","kind":"externalParam"},{"kind":"text","text":": ["},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier"},{"text":"])","kind":"text"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegatePAAE17prepareForDisplay8textLine11displayData5range9stringRef12markedRanges11attachmentsyAA0cM0C_AL0kO0VSo8_NSRangeVSo13NSTextStorageCAA06MarkedT0VSgSayAA03AnyC10AttachmentVGtF","symbolKind":"method","extendedModule":"CodeEditTextView","title":"prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareForDisplay"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"textLine"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"displayData","kind":"externalParam"},{"kind":"text","text":": "},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"kind":"text","text":", "},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"stringRef"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","text":"MarkedRanges","kind":"typeIdentifier"},{"kind":"text","text":"?, "},{"text":"attachments","kind":"externalParam"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"kind":"text","text":"])"}],"roleHeading":"Instance Method","role":"symbol"},"sections":[],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MarkedRanges":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"MarkedRanges"}],"url":"\/documentation\/codeedittextview\/markedranges","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"MarkedRanges","kind":"identifier"}],"abstract":[{"type":"text","text":"Struct for passing attribute and range information easily down into line fragments, typesetters without"},{"type":"text","text":" "},{"type":"text","text":"requiring a reference to the marked text manager."}],"title":"MarkedRanges"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)-ycsi":{"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)-ycsi","abstract":[],"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prepareForDisplay","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"textLine"},{"text":": ","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":", "},{"text":"displayData","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":".","kind":"text"},{"text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"range"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"stringRef"},{"text":": ","kind":"text"},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"markedRanges"},{"text":": ","kind":"text"},{"text":"MarkedRanges","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"attachments"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":"])","kind":"text"}],"title":"prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)","role":"symbol","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:).json b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:).json
new file mode 100644
index 000000000..40296f8fa
--- /dev/null
+++ b/data/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:).json
@@ -0,0 +1 @@
+{"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)","interfaceLanguage":"swift"},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareForDisplay"},{"kind":"text","text":"("},{"kind":"externalParam","text":"textLine"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":", ","kind":"text"},{"text":"displayData","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"text":", ","kind":"text"},{"text":"range","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":", "},{"text":"stringRef","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"markedRanges"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","text":"MarkedRanges","kind":"typeIdentifier"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"attachments"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"text":"])","kind":"text"}],"roleHeading":"Instance Method","required":true,"symbolKind":"method","title":"prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)","role":"symbol","externalID":"s:16CodeEditTextView0C27LayoutManagerRenderDelegateP17prepareForDisplay8textLine11displayData5range9stringRef12markedRanges11attachmentsyAA0cM0C_AL0kO0VSo8_NSRangeVSo13NSTextStorageCAA06MarkedT0VSgSayAA03AnyC10AttachmentVGtF","modules":[{"name":"CodeEditTextView"}]},"defaultImplementationsSections":[{"anchor":"TextLayoutManagerRenderDelegate-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)-ycsi"],"title":"TextLayoutManagerRenderDelegate Implementations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareForDisplay"},{"kind":"text","text":"("},{"kind":"externalParam","text":"textLine"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier","text":"TextLine","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"},{"kind":"text","text":", "},{"text":"displayData","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","text":"TextLine"},{"text":".","kind":"text"},{"text":"DisplayData","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"text":"stringRef","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"markedRanges"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","text":"MarkedRanges"},{"text":"?, ","kind":"text"},{"text":"attachments","kind":"externalParam"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","text":"AnyTextAttachment"},{"text":"])","kind":"text"}]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MarkedRanges":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"MarkedRanges"}],"url":"\/documentation\/codeedittextview\/markedranges","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"MarkedRanges","kind":"identifier"}],"abstract":[{"type":"text","text":"Struct for passing attribute and range information easily down into line fragments, typesetters without"},{"type":"text","text":" "},{"type":"text","text":"requiring a reference to the marked text manager."}],"title":"MarkedRanges"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate":{"role":"symbol","navigatorTitle":[{"text":"TextLayoutManagerRenderDelegate","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate","kind":"symbol","type":"topic","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLayoutManagerRenderDelegate"}],"abstract":[{"type":"text","text":"Provide an instance of this class to the "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","isActive":true,"type":"reference"},{"type":"text","text":" to override how the layout manager performs layout"},{"type":"text","text":" "},{"type":"text","text":"and display for text lines and fragments."}],"title":"TextLayoutManagerRenderDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)-ycsi":{"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)-ycsi","abstract":[],"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prepareForDisplay","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"textLine"},{"text":": ","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":", "},{"text":"displayData","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"text":".","kind":"text"},{"text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"range"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"stringRef"},{"text":": ","kind":"text"},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"markedRanges"},{"text":": ","kind":"text"},{"text":"MarkedRanges","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"attachments"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"text":"])","kind":"text"}],"title":"prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)","role":"symbol","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerRenderDelegate/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)":{"url":"\/documentation\/codeedittextview\/textlayoutmanagerrenderdelegate\/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prepareForDisplay","kind":"identifier"},{"kind":"text","text":"("},{"text":"textLine","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"displayData"},{"text":": ","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"range"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"stringRef"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","text":"MarkedRanges"},{"text":"?, ","kind":"text"},{"text":"attachments","kind":"externalParam"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":"])"}],"defaultImplementations":1,"kind":"symbol","type":"topic","required":true,"title":"prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerRenderDelegate\/prepareForDisplay(textLine:displayData:range:stringRef:markedRanges:attachments:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline.json b/data/documentation/codeedittextview/textline.json
new file mode 100644
index 000000000..879103041
--- /dev/null
+++ b/data/documentation/codeedittextview/textline.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"roleHeading":"Class","symbolKind":"class","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"text":"TextLine","kind":"identifier"}],"externalID":"s:16CodeEditTextView0C4LineC","role":"symbol","title":"TextLine","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"final","kind":"keyword"},{"text":" ","kind":"text"},{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}]}]}],"relationshipsSections":[{"type":"conformsTo","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/s12IdentifiableP"],"kind":"relationships","title":"Conforms To"}],"seeAlsoSections":[{"anchor":"Text-Layout","title":"Text Layout","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment"],"generated":true}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline"]}],"topicSections":[{"title":"Structures","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"],"anchor":"Structures"},{"title":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/==(_:_:)"],"anchor":"Operators","generated":true},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/id","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/lineFragments"],"generated":true,"anchor":"Instance-Properties","title":"Instance Properties"},{"anchor":"Instance-Methods","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/setNeedsLayout()"],"title":"Instance Methods"},{"generated":true,"title":"Default Implementations","anchor":"Default-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/Equatable-Implementations"]}],"abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/s12IdentifiableP":{"type":"unresolvable","title":"Swift.Identifiable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s12IdentifiableP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/lineFragments":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/lineFragments","kind":"symbol","abstract":[{"type":"text","text":"The line fragments contained by this text line."}],"title":"lineFragments","role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"lineFragments","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"text":"<","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textline\/linefragments"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textline\/preparefordisplay(displaydata:range:stringref:markedranges:attachments:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareForDisplay"},{"kind":"text","text":"("},{"text":"displayData","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"kind":"text","text":", "},{"text":"range","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"text":"stringRef","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"MarkedRanges","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"attachments"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"text":"])","kind":"text"}],"abstract":[{"text":"Prepares the line for display, generating all potential line breaks and calculating the real height of the line.","type":"text"}],"title":"prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)"},"doc://codeedittextview.CodeEditTextView/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/==(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/==(_:_:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textline\/==(_:_:)","title":"==(_:_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/id":{"kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/id","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"id","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textline\/id","title":"id"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/setNeedsLayout()":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textline\/setneedslayout()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setNeedsLayout","kind":"identifier"},{"text":"()","kind":"text"}],"title":"setNeedsLayout()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/setNeedsLayout()","abstract":[{"text":"Marks this line as needing layout and clears all typesetting data.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/Equatable-Implementations":{"url":"\/documentation\/codeedittextview\/textline\/equatable-implementations","kind":"article","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/Equatable-Implementations","type":"topic","title":"Equatable Implementations","abstract":[],"role":"collectionGroup"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/!=(_:_:).json b/data/documentation/codeedittextview/textline/!=(_:_:).json
new file mode 100644
index 000000000..7c0aefaad
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/!=(_:_:).json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textline\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"metadata":{"symbolKind":"op","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView0C4LineC","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"Swift","title":"!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"roleHeading":"Operator"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/!=(_:_:)","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/!=(_:_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textline\/!=(_:_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/!=(_:_:)","type":"topic","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"title":"!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/==(_:_:).json b/data/documentation/codeedittextview/textline/==(_:_:).json
new file mode 100644
index 000000000..aadec549f
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/==(_:_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Equatable.==(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"metadata":{"title":"==(_:_:)","roleHeading":"Operator","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"==","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C4LineC2eeoiySbAC_ACtFZ","role":"symbol","symbolKind":"op"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C4LineC","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","kind":"typeIdentifier","text":"TextLine"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textline\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/==(_:_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/==(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/==(_:_:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textline\/==(_:_:)","title":"==(_:_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/displaydata.json b/data/documentation/codeedittextview/textline/displaydata.json
new file mode 100644
index 000000000..1c9a4feed
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/displaydata.json
@@ -0,0 +1 @@
+{"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)"],"generated":true,"anchor":"Initializers"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/breakStrategy","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/estimatedLineHeight","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/lineHeightMultiplier","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/maxWidth"],"title":"Instance Properties","anchor":"Instance-Properties","generated":true}],"metadata":{"title":"TextLine.DisplayData","roleHeading":"Structure","modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"externalID":"s:16CodeEditTextView0C4LineC11DisplayDataV","role":"symbol","symbolKind":"struct","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"DisplayData","kind":"identifier"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"platforms":["macOS"]}]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/displaydata"]}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)":{"title":"init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)","type":"topic","url":"\/documentation\/codeedittextview\/textline\/displaydata\/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)","kind":"symbol","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"maxWidth"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"lineHeightMultiplier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"estimatedLineHeight"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"kind":"text","text":", "},{"text":"breakStrategy","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineBreakStrategy","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"},{"kind":"text","text":")"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/breakStrategy":{"title":"breakStrategy","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/breakStrategy","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textline\/displaydata\/breakstrategy","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"breakStrategy"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"LineBreakStrategy","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/maxWidth":{"title":"maxWidth","type":"topic","url":"\/documentation\/codeedittextview\/textline\/displaydata\/maxwidth","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/maxWidth","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"maxWidth"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/estimatedLineHeight":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/estimatedLineHeight","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"estimatedLineHeight"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"title":"estimatedLineHeight","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textline\/displaydata\/estimatedlineheight"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/lineHeightMultiplier":{"url":"\/documentation\/codeedittextview\/textline\/displaydata\/lineheightmultiplier","abstract":[],"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineHeightMultiplier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"kind":"symbol","type":"topic","title":"lineHeightMultiplier","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/lineHeightMultiplier"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/displaydata/breakstrategy.json b/data/documentation/codeedittextview/textline/displaydata/breakstrategy.json
new file mode 100644
index 000000000..cdb7e27cc
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/displaydata/breakstrategy.json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"breakStrategy","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO","text":"LineBreakStrategy","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C4LineC11DisplayDataV13breakStrategyAA0e5BreakI0Ovp","title":"breakStrategy"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/displaydata\/breakstrategy"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/breakStrategy"},"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"]]},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"breakStrategy","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","text":"LineBreakStrategy","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/breakStrategy":{"title":"breakStrategy","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/breakStrategy","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textline\/displaydata\/breakstrategy","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"breakStrategy"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"LineBreakStrategy","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/displaydata/estimatedlineheight.json b/data/documentation/codeedittextview/textline/displaydata/estimatedlineheight.json
new file mode 100644
index 000000000..8a6fb3fc8
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/displaydata/estimatedlineheight.json
@@ -0,0 +1 @@
+{"kind":"symbol","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"estimatedLineHeight","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/displaydata\/estimatedlineheight"]}],"metadata":{"externalID":"s:16CodeEditTextView0C4LineC11DisplayDataV09estimatedE6Height14CoreFoundation7CGFloatVvp","symbolKind":"property","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"title":"estimatedLineHeight","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"estimatedLineHeight"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"role":"symbol"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/estimatedLineHeight","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/estimatedLineHeight":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/estimatedLineHeight","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"estimatedLineHeight"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"title":"estimatedLineHeight","kind":"symbol","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textline\/displaydata\/estimatedlineheight"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/displaydata/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:).json b/data/documentation/codeedittextview/textline/displaydata/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:).json
new file mode 100644
index 000000000..5d281b816
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/displaydata/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"init"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"maxWidth"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":", "},{"text":"lineHeightMultiplier","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"estimatedLineHeight","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"text":", ","kind":"text"},{"text":"breakStrategy","kind":"externalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","text":"LineBreakStrategy","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO","kind":"typeIdentifier"},{"kind":"text","text":" = .character)"}]}],"kind":"declarations"}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C4LineC11DisplayDataV8maxWidth20lineHeightMultiplier09estimatedeK013breakStrategyAE14CoreFoundation7CGFloatV_A2lA0e5BreakO0Otcfc","title":"init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"text":"maxWidth","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"lineHeightMultiplier"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":", "},{"text":"estimatedLineHeight","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":", "},{"text":"breakStrategy","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"LineBreakStrategy","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"},{"text":")","kind":"text"}],"symbolKind":"init","roleHeading":"Initializer"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/displaydata\/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)":{"title":"init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)","type":"topic","url":"\/documentation\/codeedittextview\/textline\/displaydata\/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/init(maxWidth:lineHeightMultiplier:estimatedLineHeight:breakStrategy:)","kind":"symbol","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"maxWidth"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"lineHeightMultiplier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"estimatedLineHeight"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"kind":"text","text":", "},{"text":"breakStrategy","kind":"externalParam"},{"kind":"text","text":": "},{"text":"LineBreakStrategy","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"},{"kind":"text","text":")"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/displaydata/lineheightmultiplier.json b/data/documentation/codeedittextview/textline/displaydata/lineheightmultiplier.json
new file mode 100644
index 000000000..89f74d743
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/displaydata/lineheightmultiplier.json
@@ -0,0 +1 @@
+{"kind":"symbol","metadata":{"externalID":"s:16CodeEditTextView0C4LineC11DisplayDataV20lineHeightMultiplier14CoreFoundation7CGFloatVvp","title":"lineHeightMultiplier","symbolKind":"property","role":"symbol","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineHeightMultiplier","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lineHeightMultiplier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/displaydata\/lineheightmultiplier"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/lineHeightMultiplier"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/lineHeightMultiplier":{"url":"\/documentation\/codeedittextview\/textline\/displaydata\/lineheightmultiplier","abstract":[],"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineHeightMultiplier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"kind":"symbol","type":"topic","title":"lineHeightMultiplier","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/lineHeightMultiplier"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/displaydata/maxwidth.json b/data/documentation/codeedittextview/textline/displaydata/maxwidth.json
new file mode 100644
index 000000000..33bacc151
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/displaydata/maxwidth.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"maxWidth"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/displaydata\/maxwidth"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/maxWidth","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C4LineC11DisplayDataV8maxWidth14CoreFoundation7CGFloatVvp","symbolKind":"property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"maxWidth","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"title":"maxWidth","roleHeading":"Instance Property","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData"]]},"sections":[],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData/maxWidth":{"title":"maxWidth","type":"topic","url":"\/documentation\/codeedittextview\/textline\/displaydata\/maxwidth","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData\/maxWidth","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"maxWidth"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/equatable-implementations.json b/data/documentation/codeedittextview/textline/equatable-implementations.json
new file mode 100644
index 000000000..d8eb53387
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/equatable-implementations.json
@@ -0,0 +1 @@
+{"topicSections":[{"generated":true,"anchor":"Operators","title":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/!=(_:_:)"]}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/equatable-implementations"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"metadata":{"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/Equatable-Implementations"},"kind":"article","schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/!=(_:_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textline\/!=(_:_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/!=(_:_:)","type":"topic","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"title":"!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/id.json b/data/documentation/codeedittextview/textline/id.json
new file mode 100644
index 000000000..d0854526a
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/id.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Identifiable.id","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"id","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation4UUIDV","text":"UUID","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/id"]}],"metadata":{"roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C4LineC2id10Foundation4UUIDVvp","role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"id","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation4UUIDV","text":"UUID","kind":"typeIdentifier"}],"symbolKind":"property"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/id":{"kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/id","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"id","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textline\/id","title":"id"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/linefragments.json b/data/documentation/codeedittextview/textline/linefragments.json
new file mode 100644
index 000000000..95ff36ee5
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/linefragments.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lineFragments"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","text":"TextLineStorage"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment"},{"text":"> { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/lineFragments","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/linefragments"]}],"abstract":[{"text":"The line fragments contained by this text line.","type":"text"}],"metadata":{"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C4LineC13lineFragmentsAA0cE7StorageCyAA0E8FragmentCGvp","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineFragments","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","kind":"typeIdentifier","text":"TextLineStorage"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment"},{"text":">","kind":"text"}],"title":"lineFragments","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/lineFragments":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/lineFragments","kind":"symbol","abstract":[{"type":"text","text":"The line fragments contained by this text line."}],"title":"lineFragments","role":"symbol","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"lineFragments","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage"},{"text":"<","kind":"text"},{"text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textline\/linefragments"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/preparefordisplay(displaydata:range:stringref:markedranges:attachments:).json b/data/documentation/codeedittextview/textline/preparefordisplay(displaydata:range:stringref:markedranges:attachments:).json
new file mode 100644
index 000000000..be04657f9
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/preparefordisplay(displaydata:range:stringref:markedranges:attachments:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textline\/preparefordisplay(displaydata:range:stringref:markedranges:attachments:)"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prepareForDisplay","kind":"identifier"},{"text":"(","kind":"text"},{"text":"displayData","kind":"externalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"text":", ","kind":"text"},{"text":"range","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"stringRef"},{"text":": ","kind":"text"},{"text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"markedRanges"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","kind":"typeIdentifier","text":"MarkedRanges","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV"},{"kind":"text","text":"?, "},{"text":"attachments","kind":"externalParam"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment"},{"kind":"text","text":"])"}]}]},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"type":"text","text":"Information required to display a text line."}],"type":"paragraph"}],"name":"displayData"},{"content":[{"type":"paragraph","inlineContent":[{"text":"The range this text range represents in the entire document.","type":"text"}]}],"name":"range"},{"content":[{"type":"paragraph","inlineContent":[{"text":"A reference to the string storage for the document.","type":"text"}]}],"name":"stringRef"},{"name":"markedRanges","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Any marked ranges in the line."}]}]},{"name":"attachments","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Any attachments overlapping the line range."}]}]}]}],"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","title":"prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prepareForDisplay","kind":"identifier"},{"kind":"text","text":"("},{"text":"displayData","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"range"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"stringRef","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","text":"MarkedRanges","kind":"typeIdentifier"},{"kind":"text","text":"?, "},{"text":"attachments","kind":"externalParam"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"kind":"text","text":"])"}],"roleHeading":"Instance Method","externalID":"s:16CodeEditTextView0C4LineC17prepareForDisplay11displayData5range9stringRef12markedRanges11attachmentsyAC0hJ0V_So8_NSRangeVSo13NSTextStorageCAA06MarkedO0VSgSayAA03AnyC10AttachmentVGtF"},"kind":"symbol","sections":[],"abstract":[{"text":"Prepares the line for display, generating all potential line breaks and calculating the real height of the line.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textline\/preparefordisplay(displaydata:range:stringref:markedranges:attachments:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareForDisplay"},{"kind":"text","text":"("},{"text":"displayData","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"DisplayData","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"kind":"text","text":", "},{"text":"range","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"text":"stringRef","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"MarkedRanges","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV"},{"text":"?, ","kind":"text"},{"kind":"externalParam","text":"attachments"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"text":"])","kind":"text"}],"abstract":[{"text":"Prepares the line for display, generating all potential line breaks and calculating the real height of the line.","type":"text"}],"title":"prepareForDisplay(displayData:range:stringRef:markedRanges:attachments:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MarkedRanges":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"MarkedRanges"}],"url":"\/documentation\/codeedittextview\/markedranges","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"MarkedRanges","kind":"identifier"}],"abstract":[{"type":"text","text":"Struct for passing attribute and range information easily down into line fragments, typesetters without"},{"type":"text","text":" "},{"type":"text","text":"requiring a reference to the marked text manager."}],"title":"MarkedRanges"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textline/setneedslayout().json b/data/documentation/codeedittextview/textline/setneedslayout().json
new file mode 100644
index 000000000..5308ab34d
--- /dev/null
+++ b/data/documentation/codeedittextview/textline/setneedslayout().json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"symbolKind":"method","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C4LineC14setNeedsLayoutyyF","role":"symbol","title":"setNeedsLayout()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setNeedsLayout","kind":"identifier"},{"text":"()","kind":"text"}],"roleHeading":"Instance Method"},"schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textline\/setneedslayout()"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setNeedsLayout","kind":"identifier"},{"text":"()","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/setNeedsLayout()"},"kind":"symbol","abstract":[{"text":"Marks this line as needing layout and clears all typesetting data.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/setNeedsLayout()":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textline\/setneedslayout()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setNeedsLayout","kind":"identifier"},{"text":"()","kind":"text"}],"title":"setNeedsLayout()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/setNeedsLayout()","abstract":[{"text":"Marks this line as needing layout and clears all typesetting data.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage.json b/data/documentation/codeedittextview/textlinestorage.json
new file mode 100644
index 000000000..d24875a24
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage.json
@@ -0,0 +1 @@
+{"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"],"anchor":"Structures","title":"Structures"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/init()"],"anchor":"Initializers","generated":true,"title":"Initializers"},{"anchor":"Instance-Properties","title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/height","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/isEmpty","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/last","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/length"],"generated":true},{"title":"Instance Methods","anchor":"Instance-Methods","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/build(from:estimatedLineHeight:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/delete(lineAt:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atIndex:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atOffset:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atPosition:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/insert(line:atOffset:length:height:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesInRange(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesStartingAt(_:until:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/removeAll()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/update(atOffset:delta:deltaHeight:)"]},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/LazySequenceProtocol-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/Sequence-Implementations"],"anchor":"Default-Implementations","generated":true,"title":"Default Implementations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"final","kind":"keyword"},{"text":" ","kind":"text"},{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLineStorage"},{"kind":"text","text":"<"},{"text":"Data","kind":"genericParameter"},{"text":"> ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Data"},{"text":" : ","kind":"text"},{"text":"Identifiable","kind":"typeIdentifier","preciseIdentifier":"s:s12IdentifiableP"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"roleHeading":"Class","navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"externalID":"s:16CodeEditTextView0C11LineStorageC","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"TextLineStorage","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"text":"TextLineStorage","kind":"identifier"}],"symbolKind":"class"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","interfaceLanguage":"swift"},"kind":"symbol","seeAlsoSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy"],"anchor":"Supporting-Types","generated":true,"title":"Supporting Types"}],"abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/s8CopyableP","doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP","doc:\/\/codeedittextview.CodeEditTextView\/ST"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/linesStartingAt(_:until:)":{"conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}]},"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesStartingAt(_:until:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"linesStartingAt"},{"kind":"text","text":"("},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"until","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":") -> ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV"}],"title":"linesStartingAt(_:until:)","role":"symbol","abstract":[{"text":"Iterate over all lines overlapping a range of ","type":"text"},{"type":"codeVoice","code":"y"},{"text":" positions. Positions in the middle of line contents will","type":"text"},{"type":"text","text":" "},{"text":"return that line.","type":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/linesstartingat(_:until:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/init()":{"abstract":[],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/init()","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/init()","title":"init()","fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/build(from:estimatedLineHeight:)":{"abstract":[{"type":"text","text":"Efficiently builds the tree from the given array of lines."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/build(from:estimatedLineHeight:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/build(from:estimatedlineheight:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"build","kind":"identifier"},{"text":"(","kind":"text"},{"text":"from","kind":"externalParam"},{"kind":"text","text":": "},{"text":"borrowing","kind":"keyword"},{"text":" [","kind":"text"},{"text":"BuildItem","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC9BuildItemV","kind":"typeIdentifier"},{"kind":"text","text":"], "},{"kind":"externalParam","text":"estimatedLineHeight"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"build(from:estimatedLineHeight:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/getLine(atIndex:)":{"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/getline(atindex:)","title":"getLine(atIndex:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atIndex"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[{"text":"Fetches a line for the given index.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atIndex:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/insert(line:atOffset:length:height:)":{"title":"insert(line:atOffset:length:height:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"insert","kind":"identifier"},{"kind":"text","text":"("},{"text":"line","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Data","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"atOffset"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"length"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"height","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":")"}],"type":"topic","kind":"symbol","abstract":[{"type":"text","text":"Inserts a new line for the given range."}],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/insert(line:atoffset:length:height:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/insert(line:atOffset:length:height:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem":{"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BuildItem","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"BuildItem"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"url":"\/documentation\/codeedittextview\/textlinestorage\/builditem","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","title":"TextLineStorage.BuildItem"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/count":{"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"abstract":[{"text":"The number of lines in the storage object","type":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count","url":"\/documentation\/codeedittextview\/textlinestorage\/count","title":"count"},"doc://codeedittextview.CodeEditTextView/ST":{"title":"Swift.Sequence","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/ST"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/s20LazySequenceProtocolP":{"title":"Swift.LazySequenceProtocol","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/linesInRange(_:)":{"title":"linesInRange(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/linesinrange(_:)","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesInRange(_:)","type":"topic","kind":"symbol","abstract":[{"text":"Iterate over all lines overlapping a range in the document.","type":"text"}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"linesInRange"},{"kind":"text","text":"("},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","text":"TextLineStorageRangeIterator"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/isEmpty":{"url":"\/documentation\/codeedittextview\/textlinestorage\/isempty","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isEmpty"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol","type":"topic","title":"isEmpty","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/isEmpty","kind":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/length":{"title":"length","url":"\/documentation\/codeedittextview\/textlinestorage\/length","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/length","abstract":[{"text":"The number of characters in the storage object.","type":"text"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"length"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/Sequence-Implementations":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/Sequence-Implementations","kind":"article","role":"collectionGroup","url":"\/documentation\/codeedittextview\/textlinestorage\/sequence-implementations","title":"Sequence Implementations","type":"topic","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/last":{"title":"last","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/last","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/last","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"last","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"kind":"text","text":"?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineEnding":{"title":"LineEnding","url":"\/documentation\/codeedittextview\/lineending","kind":"symbol","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineEnding","type":"topic","navigatorTitle":[{"kind":"identifier","text":"LineEnding"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"LineEnding","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/delete(lineAt:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/delete(lineAt:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/delete(lineat:)","title":"delete(lineAt:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"delete","kind":"identifier"},{"kind":"text","text":"("},{"text":"lineAt","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":")","kind":"text"}],"abstract":[{"type":"text","text":"Deletes the line containing the given index."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/s8CopyableP":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s8CopyableP","title":"Swift.Copyable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/getLine(atOffset:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atOffset:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/getline(atoffset:)","title":"getLine(atOffset:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"abstract":[{"type":"text","text":"Fetches a line for the given offset."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/first":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/first","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"text":": ","kind":"text"},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first","title":"first","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/update(atOffset:delta:deltaHeight:)":{"abstract":[{"type":"text","text":"Applies a length change at the given index."}],"type":"topic","title":"update(atOffset:delta:deltaHeight:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"update","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"delta","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"deltaHeight"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/update(atoffset:delta:deltaheight:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/update(atOffset:delta:deltaHeight:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageIterator":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLineStorageIterator"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator","kind":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"type":"topic","abstract":[],"title":"TextLineStorage.TextLineStorageIterator","role":"symbol","navigatorTitle":[{"text":"TextLineStorageIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/getLine(atPosition:)":{"title":"getLine(atPosition:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atPosition:)","kind":"symbol","type":"topic","abstract":[{"text":"Fetches a line for the given ","type":"text"},{"type":"codeVoice","code":"y"},{"type":"text","text":" value."}],"url":"\/documentation\/codeedittextview\/textlinestorage\/getline(atposition:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"getLine"},{"text":"(","kind":"text"},{"text":"atPosition","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/removeAll()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/removeAll()","url":"\/documentation\/codeedittextview\/textlinestorage\/removeall()","title":"removeAll()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeAll"},{"kind":"text","text":"()"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/LazySequenceProtocol-Implementations":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/lazysequenceprotocol-implementations","title":"LazySequenceProtocol Implementations","kind":"article","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/LazySequenceProtocol-Implementations","role":"collectionGroup"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/height":{"title":"height","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/height","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/height","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/allsatisfy(_:).json b/data/documentation/codeedittextview/textlinestorage/allsatisfy(_:).json
new file mode 100644
index 000000000..cd0afd909
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/allsatisfy(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/allSatisfy(_:)"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/allsatisfy(_:)"]}],"metadata":{"externalID":"s:STsE10allSatisfyyS2b7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"allSatisfy(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"extendedModule":"Swift","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.allSatisfy(_:)","type":"codeVoice"},{"type":"text","text":"."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/allSatisfy(_:)":{"title":"allSatisfy(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/allSatisfy(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"allSatisfy","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/allsatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/build(from:estimatedlineheight:).json b/data/documentation/codeedittextview/textlinestorage/build(from:estimatedlineheight:).json
new file mode 100644
index 000000000..68ea35cb8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/build(from:estimatedlineheight:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/build(from:estimatedLineHeight:)","interfaceLanguage":"swift"},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"build","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"from"},{"kind":"text","text":": "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" ["},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC9BuildItemV","text":"BuildItem"},{"text":"], ","kind":"text"},{"text":"estimatedLineHeight","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":")"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C11LineStorageC5build4from09estimatedE6HeightySayAC9BuildItemVyx_GG_14CoreFoundation7CGFloatVtF","title":"build(from:estimatedLineHeight:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/build(from:estimatedlineheight:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"build","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"from"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"lines"},{"kind":"text","text":": "},{"text":"borrowing","kind":"keyword"},{"text":" [","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","kind":"typeIdentifier","text":"BuildItem","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC9BuildItemV"},{"text":"], ","kind":"text"},{"kind":"externalParam","text":"estimatedLineHeight"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":")"}]}]},{"parameters":[{"name":"lines","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The lines to use to build the tree."}]}]}],"kind":"parameters"},{"kind":"content","content":[{"type":"heading","level":2,"anchor":"discussion","text":"Discussion"},{"name":"Note","content":[{"inlineContent":[{"text":"Calls ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/removeAll()","isActive":true,"type":"reference"},{"text":" before building.","type":"text"}],"type":"paragraph"}],"type":"aside","style":"note"}]}],"abstract":[{"text":"Efficiently builds the tree from the given array of lines.","type":"text"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/build(from:estimatedLineHeight:)":{"abstract":[{"type":"text","text":"Efficiently builds the tree from the given array of lines."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/build(from:estimatedLineHeight:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/build(from:estimatedlineheight:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"build","kind":"identifier"},{"text":"(","kind":"text"},{"text":"from","kind":"externalParam"},{"kind":"text","text":": "},{"text":"borrowing","kind":"keyword"},{"text":" [","kind":"text"},{"text":"BuildItem","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC9BuildItemV","kind":"typeIdentifier"},{"kind":"text","text":"], "},{"kind":"externalParam","text":"estimatedLineHeight"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"build(from:estimatedLineHeight:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem":{"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BuildItem","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"BuildItem"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"url":"\/documentation\/codeedittextview\/textlinestorage\/builditem","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","title":"TextLineStorage.BuildItem"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/removeAll()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/removeAll()","url":"\/documentation\/codeedittextview\/textlinestorage\/removeall()","title":"removeAll()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeAll"},{"kind":"text","text":"()"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/builditem.json b/data/documentation/codeedittextview/textlinestorage/builditem.json
new file mode 100644
index 000000000..4df1dcc62
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/builditem.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BuildItem","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"metadata":{"conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"title":"TextLineStorage.BuildItem","externalID":"s:16CodeEditTextView0C11LineStorageC9BuildItemV","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"struct","roleHeading":"Structure","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"BuildItem"}],"navigatorTitle":[{"text":"BuildItem","kind":"identifier"}],"extendedModule":"CodeEditTextView"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/builditem"]}],"topicSections":[{"generated":true,"title":"Instance Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/data","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/height","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/length"],"anchor":"Instance-Properties"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem/height":{"title":"height","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"height","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":"?","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/height","url":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/height","role":"symbol","type":"topic","kind":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem/length":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/length","url":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/length","title":"length","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"length","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem/data":{"kind":"symbol","type":"topic","title":"data","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/data","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/data","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"data","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Data","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem":{"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BuildItem","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"BuildItem"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"url":"\/documentation\/codeedittextview\/textlinestorage\/builditem","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","title":"TextLineStorage.BuildItem"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/builditem/data.json b/data/documentation/codeedittextview/textlinestorage/builditem/data.json
new file mode 100644
index 000000000..e470cd596
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/builditem/data.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/data","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"data","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","text":"Data"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/builditem\/data"]}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"data","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","text":"Data","kind":"typeIdentifier"}],"externalID":"s:16CodeEditTextView0C11LineStorageC9BuildItemV4dataxvp","roleHeading":"Instance Property","title":"data"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem"]]},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem/data":{"kind":"symbol","type":"topic","title":"data","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/data","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/data","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"data","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Data","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem":{"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BuildItem","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"BuildItem"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"url":"\/documentation\/codeedittextview\/textlinestorage\/builditem","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","title":"TextLineStorage.BuildItem"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/builditem/height.json b/data/documentation/codeedittextview/textlinestorage/builditem/height.json
new file mode 100644
index 000000000..6e229a7cc
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/builditem/height.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem"]]},"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/height","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"externalID":"s:16CodeEditTextView0C11LineStorageC9BuildItemV6height14CoreFoundation7CGFloatVSgvp","symbolKind":"property","title":"height","role":"symbol"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/builditem\/height"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem":{"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BuildItem","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"BuildItem"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"url":"\/documentation\/codeedittextview\/textlinestorage\/builditem","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","title":"TextLineStorage.BuildItem"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem/height":{"title":"height","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"height","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":"?","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/height","url":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/height","role":"symbol","type":"topic","kind":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/builditem/length.json b/data/documentation/codeedittextview/textlinestorage/builditem/length.json
new file mode 100644
index 000000000..2270aa12a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/builditem/length.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/builditem\/length"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"length","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"length","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"externalID":"s:16CodeEditTextView0C11LineStorageC9BuildItemV6lengthSivp","roleHeading":"Instance Property","symbolKind":"property"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/length"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"length","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"platforms":["macOS"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem":{"role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"BuildItem","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"BuildItem"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"url":"\/documentation\/codeedittextview\/textlinestorage\/builditem","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem","title":"TextLineStorage.BuildItem"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/BuildItem/length":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/BuildItem\/length","url":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/length","title":"length","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"length","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/compactmap(_:)-1khzu.json b/data/documentation/codeedittextview/textlinestorage/compactmap(_:)-1khzu.json
new file mode 100644
index 000000000..bd135d118
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/compactmap(_:)-1khzu.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"sections":[],"metadata":{"extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"compactMap(_:)","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/compactmap(_:)-1khzu"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-1khzu"},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.compactMap(_:)"},{"text":".","type":"text"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/compactMap(_:)-1khzu":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}],"kind":"symbol","role":"symbol","type":"topic","title":"compactMap(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/compactmap(_:)-1khzu","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-1khzu"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/compactmap(_:)-88mrr.json b/data/documentation/codeedittextview/textlinestorage/compactmap(_:)-88mrr.json
new file mode 100644
index 000000000..d3b255bcb
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/compactmap(_:)-88mrr.json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"title":"compactMap(_:)","externalID":"s:s20LazySequenceProtocolPsE10compactMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) -> "},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"extendedModule":"Swift"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-88mrr"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/compactmap(_:)-88mrr"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"compactMap"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"LazySequenceProtocol.compactMap(_:)","type":"codeVoice"},{"type":"text","text":"."}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/compactMap(_:)-88mrr":{"url":"\/documentation\/codeedittextview\/textlinestorage\/compactmap(_:)-88mrr","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?>>, "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"type":"topic","abstract":[],"title":"compactMap(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-88mrr","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/compare(_:_:).json b/data/documentation/codeedittextview/textlinestorage/compare(_:_:).json
new file mode 100644
index 000000000..670585789
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/compare(_:_:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.compare(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/compare(_:_:)"]}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compare(_:_:)"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"text":", ","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult","kind":"typeIdentifier"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP","text":"SortComparator"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"text":" == ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"metadata":{"role":"symbol","extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"platforms":[{"beta":false,"name":"iOS","unavailable":false,"introducedAt":"15.0","deprecated":false},{"unavailable":false,"name":"macOS","deprecated":false,"introducedAt":"12.0","beta":false},{"name":"tvOS","unavailable":false,"introducedAt":"15.0","beta":false,"deprecated":false},{"introducedAt":"8.0","name":"watchOS","deprecated":false,"beta":false,"unavailable":false}],"symbolKind":"method","externalID":"s:ST10FoundationE7compareySo18NSComparisonResultV8ComparedQyd___AFtAA14SortComparatorRd__7ElementQzRsd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"ComparisonResult","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult"}],"title":"compare(_:_:)","roleHeading":"Instance Method"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/compare(_:_:)":{"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compare(_:_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/compare(_:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"compare"},{"kind":"text","text":"<"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult","kind":"typeIdentifier"}],"title":"compare(_:_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/contains(where:).json b/data/documentation/codeedittextview/textlinestorage/contains(where:).json
new file mode 100644
index 000000000..c37ecd722
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/contains(where:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"contains","kind":"identifier"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"languages":["swift"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.contains(where:)","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/contains(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"contains","kind":"identifier"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"externalID":"s:STsE8contains5whereS2b7ElementQzKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/contains(where:)","interfaceLanguage":"swift"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/contains(where:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"contains"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"type":"topic","abstract":[],"title":"contains(where:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/contains(where:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/count(where:).json b/data/documentation/codeedittextview/textlinestorage/count(where:).json
new file mode 100644
index 000000000..524770283
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/count(where:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","symbolKind":"method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","title":"count(where:)","extendedModule":"Swift","externalID":"s:STsE5count5whereSiSb7ElementQzqd__YKXE_tqd__YKs5ErrorRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"E"},{"kind":"text","text":">("},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}]},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/count(where:)"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"}],"languages":["swift"]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.count(where:)","type":"codeVoice"},{"type":"text","text":"."}],"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count(where:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/count(where:)":{"role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/count(where:)","abstract":[],"title":"count(where:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count(where:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/count.json b/data/documentation/codeedittextview/textlinestorage/count.json
new file mode 100644
index 000000000..279dece23
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/count.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/count"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","abstract":[{"text":"The number of lines in the storage object","type":"text"}],"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"count","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":" { get }","kind":"text"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","externalID":"s:16CodeEditTextView0C11LineStorageC5countSivp","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"count","symbolKind":"property"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/count":{"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"abstract":[{"text":"The number of lines in the storage object","type":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count","url":"\/documentation\/codeedittextview\/textlinestorage\/count","title":"count"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/delete(lineat:).json b/data/documentation/codeedittextview/textlinestorage/delete(lineat:).json
new file mode 100644
index 000000000..d27388b54
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/delete(lineat:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delete"},{"text":"(","kind":"text"},{"text":"lineAt","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C11LineStorageC6delete6lineAtySi_tF","title":"delete(lineAt:)","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delete"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"lineAt"},{"kind":"text","text":" "},{"kind":"internalParam","text":"index"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":")","kind":"text"}]}]},{"kind":"parameters","parameters":[{"name":"index","content":[{"type":"paragraph","inlineContent":[{"text":"The index to delete a line at.","type":"text"}]}]}]},{"content":[{"anchor":"discussion","text":"Discussion","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"text":"Will exit silently if a line could not be found for the given index, and throw an assertion error if the index","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"is out of bounds."}]}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/delete(lineat:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/delete(lineAt:)","interfaceLanguage":"swift"},"sections":[],"abstract":[{"type":"text","text":"Deletes the line containing the given index."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/delete(lineAt:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/delete(lineAt:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/delete(lineat:)","title":"delete(lineAt:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"delete","kind":"identifier"},{"kind":"text","text":"("},{"text":"lineAt","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":")","kind":"text"}],"abstract":[{"type":"text","text":"Deletes the line containing the given index."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/drop(while:).json b/data/documentation/codeedittextview/textlinestorage/drop(while:).json
new file mode 100644
index 000000000..df434f5d0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/drop(while:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/drop(while:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.drop(while:)"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/drop(while:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"title":"drop(while:)","externalID":"s:s20LazySequenceProtocolPsE4drop5whiles0a9DropWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"drop","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":">","kind":"text"}],"extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"drop"},{"text":"(","kind":"text"},{"text":"while","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":">"}]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/drop(while:)":{"title":"drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/drop(while:)","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/drop(while:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s21LazyDropWhileSequenceV","kind":"typeIdentifier","text":"LazyDropWhileSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/dropfirst(_:).json b/data/documentation/codeedittextview/textlinestorage/dropfirst(_:).json
new file mode 100644
index 000000000..9a971d3bb
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/dropfirst(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.dropFirst(_:)"},{"text":".","type":"text"}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropFirst(_:)","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/dropfirst(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropFirst","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"k"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":" = 1) -> ","kind":"text"},{"kind":"typeIdentifier","text":"DropFirstSequence","preciseIdentifier":"s:s17DropFirstSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"roleHeading":"Instance Method","title":"dropFirst(_:)","role":"symbol","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s17DropFirstSequenceV","text":"DropFirstSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"externalID":"s:STsE9dropFirstys04DropB8SequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/dropFirst(_:)":{"title":"dropFirst(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropFirst(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropFirst"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":">"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/dropfirst(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/droplast(_:).json b/data/documentation/codeedittextview/textlinestorage/droplast(_:).json
new file mode 100644
index 000000000..bd089adcb
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/droplast(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/droplast(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.dropLast(_:)","type":"codeVoice"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropLast(_:)","interfaceLanguage":"swift"},"metadata":{"symbolKind":"method","externalID":"s:STsE8dropLastySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"Swift","title":"dropLast(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropLast"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"roleHeading":"Instance Method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"k"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":" = 1) -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/dropLast(_:)":{"title":"dropLast(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropLast(_:)","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/droplast(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropLast"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/elements.json b/data/documentation/codeedittextview/textlinestorage/elements.json
new file mode 100644
index 000000000..b919b9ff0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/elements.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"elements","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}]}],"sections":[],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.elements"},{"text":".","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elements","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/elements"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"elements","symbolKind":"property","externalID":"s:s20LazySequenceProtocolPs8ElementsQzRszrlE8elementsxvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"code":"Self","type":"codeVoice"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"Self.Elements"},{"type":"text","text":"."}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elements"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}],"roleHeading":"Instance Property","role":"symbol","extendedModule":"Swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/elements":{"title":"elements","conformance":{"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"type":"codeVoice","code":"Self.Elements"},{"type":"text","text":"."}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elements","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/elements","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elements"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/elementsequal(_:by:).json b/data/documentation/codeedittextview/textlinestorage/elementsequal(_:by:).json
new file mode 100644
index 000000000..024a2c426
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/elementsequal(_:by:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/elementsequal(_:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.elementsEqual(_:by:)"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elementsEqual(_:by:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"other","kind":"internalParam"},{"kind":"text","text":": "},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":" "},{"kind":"internalParam","text":"areEquivalent"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Sequence","preciseIdentifier":"s:ST","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE13elementsEqual_2bySbqd___Sb7ElementQz_ACQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","title":"elementsEqual(_:by:)","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"elementsEqual","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]},"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/elementsEqual(_:by:)":{"title":"elementsEqual(_:by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elementsEqual(_:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/elementsequal(_:by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/enumerated().json b/data/documentation/codeedittextview/textlinestorage/enumerated().json
new file mode 100644
index 000000000..06b94cd0b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/enumerated().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/enumerated()","interfaceLanguage":"swift"},"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","preciseIdentifier":"s:s18EnumeratedSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"extendedModule":"Swift","externalID":"s:STsE10enumerateds18EnumeratedSequenceVyxGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"enumerated()","symbolKind":"method"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","preciseIdentifier":"s:s18EnumeratedSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/enumerated()"]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.enumerated()"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/enumerated()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/enumerated()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/enumerated()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:s18EnumeratedSequenceV","kind":"typeIdentifier","text":"EnumeratedSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"title":"enumerated()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/filter(_:).json b/data/documentation/codeedittextview/textlinestorage/filter(_:).json
new file mode 100644
index 000000000..17854fc4c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/filter(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.filter(_:)","type":"codeVoice"},{"type":"text","text":"."}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/filter(_:)"},"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"filter","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"isIncluded","kind":"internalParam"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/filter(_:)"]}],"sections":[],"metadata":{"externalID":"s:s20LazySequenceProtocolPsE6filterys0a6FilterB0Vy8ElementsQzGSb7ElementQzcF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","role":"symbol","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"title":"filter(_:)","symbolKind":"method","extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/filter(_:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/filter(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"type":"topic","abstract":[],"title":"filter(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/filter(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/first(where:).json b/data/documentation/codeedittextview/textlinestorage/first(where:).json
new file mode 100644
index 000000000..64b79c8a4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/first(where:).json
@@ -0,0 +1 @@
+{"metadata":{"externalID":"s:STsE5first5where7ElementQzSgSbADKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","symbolKind":"method","extendedModule":"Swift","title":"first(where:)","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"?","kind":"text"}],"roleHeading":"Instance Method"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.first(where:)"},{"type":"text","text":"."}],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/first(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first(where:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/first(where:)":{"kind":"symbol","title":"first(where:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/first(where:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first(where:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/first.json b/data/documentation/codeedittextview/textlinestorage/first.json
new file mode 100644
index 000000000..e396a8f4a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/first.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/first"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first","interfaceLanguage":"swift"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"first"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"externalID":"s:16CodeEditTextView0C11LineStorageC5firstAC0cE8PositionVyx_GSgvp","roleHeading":"Instance Property","title":"first"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/first":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/first","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"text":": ","kind":"text"},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first","title":"first","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-2z47t.json b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-2z47t.json
new file mode 100644
index 000000000..eda11b995
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-2z47t.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-2z47t"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aB0Vys07FlattenB0Vys0aeB0Vy8ElementsQzqd__GGGqd__7ElementQzcSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"flatMap(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") -> "},{"text":"LazySequence","kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV"},{"text":"<","kind":"text"},{"text":"FlattenSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>>","kind":"text"}],"symbolKind":"method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>> ","kind":"text"},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:ST","text":"Sequence","kind":"typeIdentifier"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-2z47t","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.flatMap(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-2z47t":{"url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-2z47t","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15FlattenSequenceV","kind":"typeIdentifier","text":"FlattenSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>>","kind":"text"}],"type":"topic","abstract":[],"title":"flatMap(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-2z47t","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-4p606.json b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-4p606.json
new file mode 100644
index 000000000..6a2a4482e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-4p606.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.flatMap(_:)"},{"type":"text","text":"."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-4p606"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-4p606","interfaceLanguage":"swift"},"metadata":{"externalID":"s:STsE7flatMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"flatMap(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"platforms":[{"renamed":"compactMap(_:)","deprecated":false,"deprecatedAt":"4.1","name":"Swift","message":"Please use compactMap(_:) for the case where closure returns an optional value","unavailable":false,"beta":false}],"role":"symbol","roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"extendedModule":"Swift"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"deprecationSummary":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Please use compactMap(_:) for the case where closure returns an optional value"}]}],"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-4p606":{"deprecated":true,"kind":"symbol","title":"flatMap(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-4p606","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-4p606","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-56br0.json b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-56br0.json
new file mode 100644
index 000000000..92e74c523
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-56br0.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-56br0","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","extendedModule":"Swift","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","title":"flatMap(_:)","externalID":"s:STsE7flatMapySay7ElementQyd__Gqd__ABQzKXEKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.flatMap(_:)"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-56br0"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"] ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Sequence","preciseIdentifier":"s:ST","kind":"typeIdentifier"}]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-56br0":{"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-56br0","abstract":[],"title":"flatMap(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-56br0","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-6b63g.json b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-6b63g.json
new file mode 100644
index 000000000..e24593b90
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/flatmap(_:)-6b63g.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"metadata":{"role":"symbol","title":"flatMap(_:)","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","platforms":[{"deprecated":false,"beta":false,"deprecatedAt":"4.1","renamed":"compactMap(_:)","message":"Please use compactMap(_:) for the case where closure returns an optional value","name":"Swift","unavailable":false}],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"sections":[],"deprecationSummary":[{"inlineContent":[{"text":"Please use compactMap(_:) for the case where closure returns an optional value","type":"text"}],"type":"paragraph"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-6b63g","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-6b63g"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.flatMap(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-6b63g":{"kind":"symbol","role":"symbol","type":"topic","abstract":[],"title":"flatMap(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-6b63g","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-6b63g","deprecated":true,"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/foreach(_:).json b/data/documentation/codeedittextview/textlinestorage/foreach(_:).json
new file mode 100644
index 000000000..24c209817
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/foreach(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/foreach(_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"forEach"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"body"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.forEach(_:)","type":"codeVoice"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/forEach(_:)"},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s4Voida","text":"Void"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"}],"roleHeading":"Instance Method","symbolKind":"method","extendedModule":"Swift","title":"forEach(_:)","role":"symbol","externalID":"s:STsE7forEachyyy7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/forEach(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/forEach(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/foreach(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"forEach"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"}],"title":"forEach(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/formatted(_:).json b/data/documentation/codeedittextview/textlinestorage/formatted(_:).json
new file mode 100644
index 000000000..a3b290200
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/formatted(_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/formatted(_:)","interfaceLanguage":"swift"},"sections":[],"metadata":{"roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:ST10FoundationE9formattedy12FormatOutputQyd__qd__0C5InputQyd__RszAA0C5StyleRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","platforms":[{"unavailable":false,"beta":false,"name":"iOS","introducedAt":"15.0","deprecated":false},{"introducedAt":"12.0","beta":false,"deprecated":false,"name":"macOS","unavailable":false},{"introducedAt":"15.0","deprecated":false,"name":"tvOS","unavailable":false,"beta":false},{"beta":false,"name":"watchOS","unavailable":false,"introducedAt":"8.0","deprecated":false}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"formatted","kind":"identifier"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","kind":"typeIdentifier","text":"FormatOutput"}],"title":"formatted(_:)","symbolKind":"method","extendedModule":"Swift"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"style","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":") -> "},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"FormatOutput","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","kind":"typeIdentifier"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":" == "},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"FormatInput","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B5InputQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"S"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP","text":"FormatStyle","kind":"typeIdentifier"}],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/formatted(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.formatted(_:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/formatted(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"kind":"symbol","title":"formatted(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/formatted(_:)","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/formatted(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/getline(atindex:).json b/data/documentation/codeedittextview/textlinestorage/getline(atindex:).json
new file mode 100644
index 000000000..f56c048a1
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/getline(atindex:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atIndex"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"index"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"name":"index","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The index to fetch for."}]}]}]},{"kind":"content","content":[{"text":"Return Value","anchor":"return-value","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"text":"A ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"reference","isActive":true},{"type":"text","text":" struct with relevant position and line information."}]}]},{"content":[{"text":"Discussion","anchor":"discussion","type":"heading","level":2},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":""},{"type":"codeVoice","code":"O(log n)"}]}],"name":"Complexity","style":"note","type":"aside"}],"kind":"content"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"type":"text","text":"Fetches a line for the given index."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atIndex:)","interfaceLanguage":"swift"},"metadata":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atIndex"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"externalID":"s:16CodeEditTextView0C11LineStorageC03getE07atIndexAC0cE8PositionVyx_GSgSi_tF","title":"getLine(atIndex:)","roleHeading":"Instance Method","symbolKind":"method","modules":[{"name":"CodeEditTextView"}]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/getline(atindex:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/getLine(atIndex:)":{"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/getline(atindex:)","title":"getLine(atIndex:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atIndex"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[{"text":"Fetches a line for the given index.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atIndex:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/getline(atoffset:).json b/data/documentation/codeedittextview/textlinestorage/getline(atoffset:).json
new file mode 100644
index 000000000..678248004
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/getline(atoffset:).json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"text":"Fetches a line for the given offset.","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/getline(atoffset:)"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"getLine"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"kind":"text","text":" "},{"text":"offset","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}]}]},{"parameters":[{"name":"offset","content":[{"inlineContent":[{"type":"text","text":"The offset to fetch for."}],"type":"paragraph"}]}],"kind":"parameters"},{"content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"inlineContent":[{"type":"text","text":"A "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","isActive":true,"type":"reference"},{"text":" struct with relevant position and line information.","type":"text"}],"type":"paragraph"}],"kind":"content"},{"kind":"content","content":[{"type":"heading","text":"Discussion","anchor":"discussion","level":2},{"content":[{"inlineContent":[{"type":"text","text":""},{"code":"O(log n)","type":"codeVoice"}],"type":"paragraph"}],"style":"note","name":"Complexity","type":"aside"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atOffset:)"},"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getLine","kind":"identifier"},{"kind":"text","text":"("},{"text":"atOffset","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"text":"?","kind":"text"}],"externalID":"s:16CodeEditTextView0C11LineStorageC03getE08atOffsetAC0cE8PositionVyx_GSgSi_tF","roleHeading":"Instance Method","title":"getLine(atOffset:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/getLine(atOffset:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atOffset:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/getline(atoffset:)","title":"getLine(atOffset:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"getLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"abstract":[{"type":"text","text":"Fetches a line for the given offset."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/getline(atposition:).json b/data/documentation/codeedittextview/textlinestorage/getline(atposition:).json
new file mode 100644
index 000000000..cdfa73ec0
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/getline(atposition:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"getLine"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atPosition"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"posY"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier","text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"kind":"text","text":"?"}],"platforms":["macOS"]}],"kind":"declarations"},{"kind":"content","content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"type":"paragraph","inlineContent":[{"text":"A ","type":"text"},{"type":"reference","isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"},{"type":"text","text":" struct with relevant position and line information."}]}]},{"content":[{"type":"heading","level":2,"text":"Discussion","anchor":"discussion"},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":""},{"code":"O(log n)","type":"codeVoice"}]}],"style":"note","type":"aside","name":"Complexity"}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/getline(atposition:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atPosition:)"},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"getLine","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"atPosition"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C11LineStorageC03getE010atPositionAC0ceI0Vyx_GSg14CoreFoundation7CGFloatV_tF","title":"getLine(atPosition:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"sections":[],"kind":"symbol","abstract":[{"type":"text","text":"Fetches a line for the given "},{"type":"codeVoice","code":"y"},{"type":"text","text":" value."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/getLine(atPosition:)":{"abstract":[{"text":"Fetches a line for the given ","type":"text"},{"code":"y","type":"codeVoice"},{"type":"text","text":" value."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/getLine(atPosition:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/getline(atposition:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"getLine","kind":"identifier"},{"kind":"text","text":"("},{"text":"atPosition","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier","text":"TextLinePosition"},{"kind":"text","text":"?"}],"title":"getLine(atPosition:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/height.json b/data/documentation/codeedittextview/textlinestorage/height.json
new file mode 100644
index 000000000..9a7dfe085
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/height.json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"title":"height","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"height"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"externalID":"s:16CodeEditTextView0C11LineStorageC6height14CoreFoundation7CGFloatVvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"height","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"languages":["swift"]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/height"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/height"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/height":{"title":"height","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/height","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/height","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"height"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/init().json b/data/documentation/codeedittextview/textlinestorage/init().json
new file mode 100644
index 000000000..b7ac8d8dc
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/init().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/init()","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"roleHeading":"Initializer","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}],"externalID":"s:16CodeEditTextView0C11LineStorageCACyxGycfc","role":"symbol","title":"init()","symbolKind":"init"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"init","kind":"keyword"},{"text":"()","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/init()"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/init()":{"abstract":[],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/init()","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/init()","title":"init()","fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/insert(line:atoffset:length:height:).json b/data/documentation/codeedittextview/textlinestorage/insert(line:atoffset:length:height:).json
new file mode 100644
index 000000000..6a962d3a3
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/insert(line:atoffset:length:height:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"insert(line:atOffset:length:height:)","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"insert","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"line"},{"kind":"text","text":": "},{"text":"Data","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp"},{"text":", ","kind":"text"},{"text":"atOffset","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":", "},{"kind":"externalParam","text":"length"},{"text":": ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"height","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"text":")","kind":"text"}],"role":"symbol","externalID":"s:16CodeEditTextView0C11LineStorageC6insert4line8atOffset6length6heightyx_S2i14CoreFoundation7CGFloatVtF","symbolKind":"method","roleHeading":"Instance Method"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/insert(line:atOffset:length:height:)"},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insert"},{"text":"(","kind":"text"},{"text":"line","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","text":"Data","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"atOffset"},{"kind":"text","text":" "},{"kind":"internalParam","text":"index"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":", "},{"text":"length","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"height"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"kind":"text","text":")"}]}]},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"type":"text","text":"The text line to insert"}],"type":"paragraph"}],"name":"line"},{"name":"index","content":[{"type":"paragraph","inlineContent":[{"text":"The offset to insert the line at.","type":"text"}]}]},{"name":"length","content":[{"inlineContent":[{"text":"The length of the new line.","type":"text"}],"type":"paragraph"}]},{"name":"height","content":[{"inlineContent":[{"type":"text","text":"The height of the new line."}],"type":"paragraph"}]}]},{"kind":"content","content":[{"text":"Discussion","type":"heading","anchor":"discussion","level":2},{"name":"Complexity","content":[{"inlineContent":[{"text":"","type":"text"},{"type":"codeVoice","code":"O(log n)"},{"text":" where ","type":"text"},{"type":"codeVoice","code":"n"},{"type":"text","text":" is the number of lines in the storage object."}],"type":"paragraph"}],"type":"aside","style":"note"}]}],"abstract":[{"text":"Inserts a new line for the given range.","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/insert(line:atoffset:length:height:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/insert(line:atOffset:length:height:)":{"title":"insert(line:atOffset:length:height:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"insert","kind":"identifier"},{"kind":"text","text":"("},{"text":"line","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Data","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"atOffset"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"length"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"height","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":")"}],"type":"topic","kind":"symbol","abstract":[{"type":"text","text":"Inserts a new line for the given range."}],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/insert(line:atoffset:length:height:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/insert(line:atOffset:length:height:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/isempty.json b/data/documentation/codeedittextview/textlinestorage/isempty.json
new file mode 100644
index 000000000..fd0e48814
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/isempty.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isEmpty","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/isEmpty","interfaceLanguage":"swift"},"sections":[],"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isEmpty"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol","modules":[{"name":"CodeEditTextView"}],"title":"isEmpty","externalID":"s:16CodeEditTextView0C11LineStorageC7isEmptySbvp","symbolKind":"property","roleHeading":"Instance Property"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/isempty"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/isEmpty":{"url":"\/documentation\/codeedittextview\/textlinestorage\/isempty","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isEmpty"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol","type":"topic","title":"isEmpty","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/isEmpty","kind":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/last.json b/data/documentation/codeedittextview/textlinestorage/last.json
new file mode 100644
index 000000000..49e269d46
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/last.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"role":"symbol","title":"last","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"last","kind":"identifier"},{"text":": ","kind":"text"},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"externalID":"s:16CodeEditTextView0C11LineStorageC4lastAC0cE8PositionVyx_GSgvp","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"last","kind":"identifier"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/last"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/last","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/last":{"title":"last","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/last","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/last","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"last","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition"},{"kind":"text","text":"?"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/lazy.json b/data/documentation/codeedittextview/textlinestorage/lazy.json
new file mode 100644
index 000000000..717d100f8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/lazy.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/lazy"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"roleHeading":"Instance Property","externalID":"s:s20LazySequenceProtocolPssAA8ElementsRpzrlE4lazyADvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","title":"lazy","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"property","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Elements"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol"},{"text":".","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"lazy","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"}],"role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.lazy","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lazy","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lazy"},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/lazy":{"title":"lazy","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"LazySequenceProtocol","type":"codeVoice"},{"type":"text","text":"."}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lazy","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/lazy","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/lazysequenceprotocol-implementations.json b/data/documentation/codeedittextview/textlinestorage/lazysequenceprotocol-implementations.json
new file mode 100644
index 000000000..3bcdf67a2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/lazysequenceprotocol-implementations.json
@@ -0,0 +1 @@
+{"topicSections":[{"generated":true,"title":"Instance Properties","anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elements","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lazy"]},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-88mrr","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/drop(while:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/filter(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-2z47t","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-6b63g","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-zff","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(while:)"],"generated":true,"anchor":"Instance-Methods","title":"Instance Methods"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/lazysequenceprotocol-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/LazySequenceProtocol-Implementations","interfaceLanguage":"swift"},"kind":"article","sections":[],"metadata":{"title":"LazySequenceProtocol Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/compactMap(_:)-88mrr":{"url":"\/documentation\/codeedittextview\/textlinestorage\/compactmap(_:)-88mrr","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?>>, "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"type":"topic","abstract":[],"title":"compactMap(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-88mrr","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/prefix(while:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(while:)","type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/prefix(while:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"title":"prefix(while:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/lazy":{"title":"lazy","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"LazySequenceProtocol","type":"codeVoice"},{"type":"text","text":"."}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lazy","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/lazy","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/map(_:)-zff":{"kind":"symbol","title":"map(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/map(_:)-zff","abstract":[],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-zff","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-2z47t":{"url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-2z47t","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15FlattenSequenceV","kind":"typeIdentifier","text":"FlattenSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>>","kind":"text"}],"type":"topic","abstract":[],"title":"flatMap(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-2z47t","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/elements":{"title":"elements","conformance":{"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"type":"codeVoice","code":"Self.Elements"},{"type":"text","text":"."}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elements","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/elements","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"elements"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/filter(_:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/filter(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"type":"topic","abstract":[],"title":"filter(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/filter(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/drop(while:)":{"title":"drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/drop(while:)","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/drop(while:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s21LazyDropWhileSequenceV","kind":"typeIdentifier","text":"LazyDropWhileSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-6b63g":{"kind":"symbol","role":"symbol","type":"topic","abstract":[],"title":"flatMap(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-6b63g","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-6b63g","deprecated":true,"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/length.json b/data/documentation/codeedittextview/textlinestorage/length.json
new file mode 100644
index 000000000..96d4e6c45
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/length.json
@@ -0,0 +1 @@
+{"metadata":{"title":"length","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"length"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"externalID":"s:16CodeEditTextView0C11LineStorageC6lengthSivp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","abstract":[{"text":"The number of characters in the storage object.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"length"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":" { get }","kind":"text"}],"platforms":["macOS"]}]}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/length"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/length"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/length":{"title":"length","url":"\/documentation\/codeedittextview\/textlinestorage\/length","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/length","abstract":[{"text":"The number of characters in the storage object.","type":"text"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"length"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/lexicographicallyprecedes(_:by:).json b/data/documentation/codeedittextview/textlinestorage/lexicographicallyprecedes(_:by:).json
new file mode 100644
index 000000000..6bc287b6b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/lexicographicallyprecedes(_:by:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/lexicographicallyprecedes(_:by:)"]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"lexicographicallyPrecedes(_:by:)","externalID":"s:STsE25lexicographicallyPrecedes_2bySbqd___Sb7ElementQz_ADtKXEtKSTRd__ACQyd__ADRSlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.lexicographicallyPrecedes(_:by:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lexicographicallyPrecedes"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"other"},{"text":": ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"kind":"text","text":" "},{"text":"areInIncreasingOrder","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":" "},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"text":"Sequence","preciseIdentifier":"s:ST","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":" == "},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"}]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lexicographicallyPrecedes(_:by:)"},"kind":"symbol","sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/lexicographicallyPrecedes(_:by:)":{"title":"lexicographicallyPrecedes(_:by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lexicographicallyPrecedes(_:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lexicographicallyPrecedes"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/lexicographicallyprecedes(_:by:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/linesinrange(_:).json b/data/documentation/codeedittextview/textlinestorage/linesinrange(_:).json
new file mode 100644
index 000000000..cf08859ff
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/linesinrange(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/linesinrange(_:)"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0C11LineStorageC12linesInRangeyAC0cefI8IteratorVyx_GSo8_NSRangeVF","symbolKind":"method","role":"symbol","title":"linesInRange(_:)","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"linesInRange","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV"}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"abstract":[{"type":"text","text":"Iterate over all lines overlapping a range in the document."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesInRange(_:)"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"linesInRange","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"TextLineStorageRangeIterator","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"}],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"name":"range","content":[{"inlineContent":[{"type":"text","text":"The range to query."}],"type":"paragraph"}]}]},{"content":[{"text":"Return Value","level":2,"type":"heading","anchor":"return-value"},{"inlineContent":[{"type":"text","text":"A lazy iterator for retrieving lines."}],"type":"paragraph"}],"kind":"content"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/linesInRange(_:)":{"title":"linesInRange(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/linesinrange(_:)","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesInRange(_:)","type":"topic","kind":"symbol","abstract":[{"text":"Iterate over all lines overlapping a range in the document.","type":"text"}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"linesInRange"},{"kind":"text","text":"("},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","text":"TextLineStorageRangeIterator"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/linesstartingat(_:until:).json b/data/documentation/codeedittextview/textlinestorage/linesstartingat(_:until:).json
new file mode 100644
index 000000000..32f03be67
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/linesstartingat(_:until:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/linesstartingat(_:until:)"]}],"abstract":[{"text":"Iterate over all lines overlapping a range of ","type":"text"},{"code":"y","type":"codeVoice"},{"text":" positions. Positions in the middle of line contents will","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"return that line."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesStartingAt(_:until:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"minor":3,"major":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C11LineStorageC15linesStartingAt_5untilAC0ceF9YIteratorVyx_G14CoreFoundation7CGFloatV_AKtF","symbolKind":"method","extendedModule":"CodeEditTextView","title":"linesStartingAt(_:until:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"linesStartingAt"},{"kind":"text","text":"("},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"text":"until","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"},{"text":") -> ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV"}],"roleHeading":"Instance Method","role":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"linesStartingAt"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"minY"},{"kind":"text","text":": "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":", "},{"kind":"externalParam","text":"until"},{"kind":"text","text":" "},{"text":"maxY","kind":"internalParam"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","text":"TextLineStorageYIterator"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The minimum y position to start at.","type":"text"}]}],"name":"minY"},{"name":"maxY","content":[{"type":"paragraph","inlineContent":[{"text":"The maximum y position to stop at.","type":"text"}]}]}],"kind":"parameters"},{"content":[{"level":2,"type":"heading","anchor":"return-value","text":"Return Value"},{"type":"paragraph","inlineContent":[{"text":"A lazy iterator for retrieving lines.","type":"text"}]}],"kind":"content"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/linesStartingAt(_:until:)":{"conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}]},"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/linesStartingAt(_:until:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"linesStartingAt"},{"kind":"text","text":"("},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"until","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":") -> ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV"}],"title":"linesStartingAt(_:until:)","role":"symbol","abstract":[{"text":"Iterate over all lines overlapping a range of ","type":"text"},{"type":"codeVoice","code":"y"},{"text":" positions. Positions in the middle of line contents will","type":"text"},{"type":"text","text":" "},{"text":"return that line.","type":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/linesstartingat(_:until:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/makeiterator().json b/data/documentation/codeedittextview/textlinestorage/makeiterator().json
new file mode 100644
index 000000000..3cb43dcdd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/makeiterator().json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"symbolKind":"method","title":"makeIterator()","role":"symbol","modules":[{"name":"CodeEditTextView"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"makeIterator","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextLineStorageIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF8IteratorV"}],"extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0C11LineStorageC12makeIteratorAC0cefH0Vyx_GyF","roleHeading":"Instance Method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"makeIterator"},{"kind":"text","text":"() -> "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF8IteratorV","text":"TextLineStorageIterator"}]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/makeiterator()"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.makeIterator()"},{"type":"text","text":"."}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/makeIterator()"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageIterator":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLineStorageIterator"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator","kind":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"type":"topic","abstract":[],"title":"TextLineStorage.TextLineStorageIterator","role":"symbol","navigatorTitle":[{"text":"TextLineStorageIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/makeIterator()":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/makeIterator()","type":"topic","title":"makeIterator()","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/makeiterator()","role":"symbol","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"makeIterator"},{"text":"() -> ","kind":"text"},{"text":"TextLineStorageIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF8IteratorV"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/map(_:)-2e7y1.json b/data/documentation/codeedittextview/textlinestorage/map(_:)-2e7y1.json
new file mode 100644
index 000000000..38a632bd1
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/map(_:)-2e7y1.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"T"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}],"externalID":"s:STsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","title":"map(_:)","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.map(_:)"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/map(_:)-2e7y1"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"kind":"text","text":", "},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"transform","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":"] "},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"E","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Error","preciseIdentifier":"s:s5ErrorP","kind":"typeIdentifier"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-2e7y1","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/map(_:)-2e7y1":{"title":"map(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-2e7y1","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"text":", ","kind":"text"},{"kind":"genericParameter","text":"E"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"T"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> ["},{"text":"T","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/map(_:)-2e7y1"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/map(_:)-zff.json b/data/documentation/codeedittextview/textlinestorage/map(_:)-zff.json
new file mode 100644
index 000000000..128c8296c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/map(_:)-zff.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.map(_:)","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/map(_:)-zff"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-zff"},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"text":"<","kind":"text"},{"text":"U","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": "},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") -> "},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"U"},{"kind":"text","text":">"}],"languages":["swift"],"platforms":["macOS"]}]}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"U"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"U"},{"kind":"text","text":") -> "},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"text":">","kind":"text"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:s20LazySequenceProtocolPsE3mapys0a3MapB0Vy8ElementsQzqd__Gqd__7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"map(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/map(_:)-zff":{"kind":"symbol","title":"map(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/map(_:)-zff","abstract":[],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-zff","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/max(by:).json b/data/documentation/codeedittextview/textlinestorage/max(by:).json
new file mode 100644
index 000000000..6654f105b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/max(by:).json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"max"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"externalID":"s:STsE3max2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","symbolKind":"method","title":"max(by:)","extendedModule":"Swift","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/max(by:)"},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"max"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areInIncreasingOrder"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.max(by:)","type":"codeVoice"},{"text":".","type":"text"}],"sections":[],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/max(by:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/max(by:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/max(by:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/max(by:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"max"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"title":"max(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/min(by:).json b/data/documentation/codeedittextview/textlinestorage/min(by:).json
new file mode 100644
index 000000000..8c6ed933f
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/min(by:).json
@@ -0,0 +1 @@
+{"kind":"symbol","metadata":{"extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE3min2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"?","kind":"text"}],"title":"min(by:)","symbolKind":"method"},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"kind":"text","text":" "},{"text":"areInIncreasingOrder","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/min(by:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/min(by:)"},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.min(by:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/min(by:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/min(by:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/min(by:)","title":"min(by:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"?"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/prefix(_:).json b/data/documentation/codeedittextview/textlinestorage/prefix(_:).json
new file mode 100644
index 000000000..9bf80979b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/prefix(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/prefix(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.prefix(_:)"},{"text":".","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(_:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"externalID":"s:STsE6prefixys14PrefixSequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"prefix(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"maxLength","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":">"}],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/prefix(_:)":{"title":"prefix(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"PrefixSequence","kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/prefix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/prefix(while:).json b/data/documentation/codeedittextview/textlinestorage/prefix(while:).json
new file mode 100644
index 000000000..66ec05efa
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/prefix(while:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.prefix(while:)"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/prefix(while:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(while:)"},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") -> "},{"text":"LazyPrefixWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":">"}],"languages":["swift"]}]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift","role":"symbol","title":"prefix(while:)","roleHeading":"Instance Method","symbolKind":"method","externalID":"s:s20LazySequenceProtocolPsE6prefix5whiles0a11PrefixWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","text":"LazyPrefixWhileSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/prefix(while:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(while:)","type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/prefix(while:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"title":"prefix(while:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/publisher.json b/data/documentation/codeedittextview/textlinestorage/publisher.json
new file mode 100644
index 000000000..a9bf919be
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/publisher.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"publisher","extendedModule":"Swift","symbolKind":"property","platforms":[{"name":"iOS","introducedAt":"13.0","unavailable":false,"beta":false,"deprecated":false},{"name":"macOS","beta":false,"deprecated":false,"unavailable":false,"introducedAt":"10.15"},{"introducedAt":"13.0","unavailable":false,"name":"tvOS","deprecated":false,"beta":false},{"deprecated":false,"unavailable":false,"introducedAt":"6.0","beta":false,"name":"watchOS"}],"fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"publisher","kind":"identifier"},{"kind":"text","text":": "},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"kind":"text","text":"."},{"text":"Sequence","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s5NeverO","text":"Never"},{"text":">","kind":"text"}],"roleHeading":"Instance Property","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:ST7CombineE9publisherAA10PublishersO8SequenceVy_xs5NeverOGvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.publisher"},{"text":".","type":"text"}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/publisher"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"publisher","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO","text":"Publishers"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","text":"Sequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Never","kind":"typeIdentifier","preciseIdentifier":"s:s5NeverO"},{"kind":"text","text":"> { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/publisher"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/publisher":{"title":"publisher","url":"\/documentation\/codeedittextview\/textlinestorage\/publisher","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"publisher","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO","text":"Publishers"},{"kind":"text","text":"."},{"preciseIdentifier":"s:7Combine10PublishersO8SequenceV","text":"Sequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"text":"Never","kind":"typeIdentifier","preciseIdentifier":"s:s5NeverO"},{"kind":"text","text":">"}],"type":"topic","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/publisher","abstract":[],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/reduce(_:_:).json b/data/documentation/codeedittextview/textlinestorage/reduce(_:_:).json
new file mode 100644
index 000000000..7110b87d8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/reduce(_:_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/reduce(_:_:)"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(_:_:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.reduce(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"initialResult"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"nextPartialResult","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}]}]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}],"externalID":"s:STsE6reduceyqd__qd___qd__qd___7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","symbolKind":"method","title":"reduce(_:_:)","extendedModule":"Swift","role":"symbol"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/reduce(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(_:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/reduce(_:_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}],"title":"reduce(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/reduce(into:_:).json b/data/documentation/codeedittextview/textlinestorage/reduce(into:_:).json
new file mode 100644
index 000000000..229ca221b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/reduce(into:_:).json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.reduce(into:_:)"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"text":" ","kind":"text"},{"text":"initialResult","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"updateAccumulatingResult","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ()) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/reduce(into:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(into:_:)","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"externalID":"s:STsE6reduce4into_qd__qd__n_yqd__z_7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","role":"symbol","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Result"},{"text":", (","kind":"text"},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"title":"reduce(into:_:)","symbolKind":"method","extendedModule":"Swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/reduce(into:_:)":{"title":"reduce(into:_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/reduce(into:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(into:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/removeall().json b/data/documentation/codeedittextview/textlinestorage/removeall().json
new file mode 100644
index 000000000..bdbb2d191
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/removeall().json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"title":"removeAll()","symbolKind":"method","role":"symbol","externalID":"s:16CodeEditTextView0C11LineStorageC9removeAllyyF","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeAll"},{"kind":"text","text":"()"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/removeAll()","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/removeall()"]}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeAll"},{"text":"()","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/removeAll()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/removeAll()","url":"\/documentation\/codeedittextview\/textlinestorage\/removeall()","title":"removeAll()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeAll"},{"kind":"text","text":"()"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/reversed().json b/data/documentation/codeedittextview/textlinestorage/reversed().json
new file mode 100644
index 000000000..30e246964
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/reversed().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reversed()","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"reversed","kind":"identifier"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"externalID":"s:STsE8reversedSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","title":"reversed()","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/reversed()"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.reversed()","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/reversed()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reversed()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/reversed()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"title":"reversed()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/sequence-implementations.json b/data/documentation/codeedittextview/textlinestorage/sequence-implementations.json
new file mode 100644
index 000000000..3764fc623
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/sequence-implementations.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"API Collection","role":"collectionGroup","title":"Sequence Implementations","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"topicSections":[{"anchor":"Instance-Properties","title":"Instance Properties","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/publisher","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/underestimatedCount"]},{"title":"Instance Methods","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/allSatisfy(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-1khzu","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compare(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/contains(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropFirst(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropLast(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elementsEqual(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/enumerated()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-4p606","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-56br0","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/forEach(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/formatted(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lexicographicallyPrecedes(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/makeIterator()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-2e7y1","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/max(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/min(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(into:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reversed()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled(using:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-4776o","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-70px","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/starts(with:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/suffix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/withContiguousStorageIfAvailable(_:)"],"anchor":"Instance-Methods"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/sequence-implementations"]}],"kind":"article","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/Sequence-Implementations"},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/split(maxsplits:omittingemptysubsequences:whereseparator:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"split"},{"kind":"text","text":"("},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"kind":"externalParam","text":"whereSeparator"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":">]","kind":"text"}],"title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"topic","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/compactMap(_:)-1khzu":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}],"kind":"symbol","role":"symbol","type":"topic","title":"compactMap(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/compactmap(_:)-1khzu","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compactMap(_:)-1khzu"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/sorted(using:)-70px":{"title":"sorted(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-70px","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/sorted(using:)-70px","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-4p606":{"deprecated":true,"kind":"symbol","title":"flatMap(_:)","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-4p606","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-4p606","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/starts(with:by:)":{"title":"starts(with:by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/starts(with:by:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/starts(with:by:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"starts"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/reversed()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reversed()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/reversed()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"title":"reversed()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/shuffled()":{"abstract":[],"type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/shuffled()","title":"shuffled()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/sorted(using:)-4776o":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-4776o","url":"\/documentation\/codeedittextview\/textlinestorage\/sorted(using:)-4776o","title":"sorted(using:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/contains(where:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"contains"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"type":"topic","abstract":[],"title":"contains(where:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/contains(where:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/prefix(_:)":{"title":"prefix(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/prefix(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"PrefixSequence","kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/prefix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/reduce(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(_:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/reduce(_:_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}],"title":"reduce(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/first(where:)":{"kind":"symbol","title":"first(where:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/first(where:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/first(where:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/suffix(_:)":{"abstract":[],"title":"suffix(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/suffix(_:)","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/suffix(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/formatted(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"formatted"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"kind":"symbol","title":"formatted(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/formatted(_:)","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/formatted(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/dropFirst(_:)":{"title":"dropFirst(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropFirst(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropFirst"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":">"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/dropfirst(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/underestimatedCount":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/underestimatedcount","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/underestimatedCount","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"abstract":[],"title":"underestimatedCount"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/flatMap(_:)-56br0":{"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/flatmap(_:)-56br0","abstract":[],"title":"flatMap(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/flatMap(_:)-56br0","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/min(by:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/min(by:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/min(by:)","title":"min(by:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"?"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/count(where:)":{"role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/count(where:)","abstract":[],"title":"count(where:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/count(where:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"E"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/compare(_:_:)":{"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/compare(_:_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/compare(_:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"compare"},{"kind":"text","text":"<"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult","kind":"typeIdentifier"}],"title":"compare(_:_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/reduce(into:_:)":{"title":"reduce(into:_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/reduce(into:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/reduce(into:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/max(by:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/max(by:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/max(by:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"max"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"title":"max(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/sorted(by:)":{"title":"sorted(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/sorted(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/enumerated()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/enumerated()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/enumerated()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:s18EnumeratedSequenceV","kind":"typeIdentifier","text":"EnumeratedSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"title":"enumerated()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/allSatisfy(_:)":{"title":"allSatisfy(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/allSatisfy(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"allSatisfy","kind":"identifier"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/allsatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/shuffled(using:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled(using:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/shuffled(using:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"title":"shuffled(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/publisher":{"title":"publisher","url":"\/documentation\/codeedittextview\/textlinestorage\/publisher","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"publisher","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO","text":"Publishers"},{"kind":"text","text":"."},{"preciseIdentifier":"s:7Combine10PublishersO8SequenceV","text":"Sequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"text":"Never","kind":"typeIdentifier","preciseIdentifier":"s:s5NeverO"},{"kind":"text","text":">"}],"type":"topic","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/publisher","abstract":[],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/map(_:)-2e7y1":{"title":"map(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/map(_:)-2e7y1","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"text":", ","kind":"text"},{"kind":"genericParameter","text":"E"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"T"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> ["},{"text":"T","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/map(_:)-2e7y1"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/withContiguousStorageIfAvailable(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/withContiguousStorageIfAvailable(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/withcontiguousstorageifavailable(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"UnsafeBufferPointer","kind":"typeIdentifier","preciseIdentifier":"s:SR"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"title":"withContiguousStorageIfAvailable(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/dropLast(_:)":{"title":"dropLast(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/dropLast(_:)","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/droplast(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropLast"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/lexicographicallyPrecedes(_:by:)":{"title":"lexicographicallyPrecedes(_:by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/lexicographicallyPrecedes(_:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lexicographicallyPrecedes"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/lexicographicallyprecedes(_:by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/makeIterator()":{"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/makeIterator()","type":"topic","title":"makeIterator()","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/makeiterator()","role":"symbol","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"makeIterator"},{"text":"() -> ","kind":"text"},{"text":"TextLineStorageIterator","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0ceF8IteratorV"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/forEach(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/forEach(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/foreach(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"forEach"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"}],"title":"forEach(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/elementsEqual(_:by:)":{"title":"elementsEqual(_:by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/elementsEqual(_:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/elementsequal(_:by:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/shuffled().json b/data/documentation/codeedittextview/textlinestorage/shuffled().json
new file mode 100644
index 000000000..f12db5a9f
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/shuffled().json
@@ -0,0 +1 @@
+{"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","externalID":"s:STsE8shuffledSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","title":"shuffled()","symbolKind":"method","roleHeading":"Instance Method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.shuffled()","type":"codeVoice"},{"text":".","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled()","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/shuffled()"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/shuffled()":{"abstract":[],"type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/shuffled()","title":"shuffled()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/shuffled(using:).json b/data/documentation/codeedittextview/textlinestorage/shuffled(using:).json
new file mode 100644
index 000000000..15715b0fa
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/shuffled(using:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"externalID":"s:STsE8shuffled5usingSay7ElementQzGqd__z_tSGRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","title":"shuffled(using:)","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"generator","kind":"internalParam"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"] ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:SG","text":"RandomNumberGenerator"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/shuffled(using:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled(using:)","interfaceLanguage":"swift"},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.shuffled(using:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/shuffled(using:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/shuffled(using:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/shuffled(using:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"title":"shuffled(using:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/sorted(by:).json b/data/documentation/codeedittextview/textlinestorage/sorted(by:).json
new file mode 100644
index 000000000..f8ec0eac2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/sorted(by:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(by:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE6sorted2bySay7ElementQzGSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"sorted(by:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(by:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":" "},{"text":"areInIncreasingOrder","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/sorted(by:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/sorted(by:)":{"title":"sorted(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/sorted(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/sorted(using:)-4776o.json b/data/documentation/codeedittextview/textlinestorage/sorted(using:)-4776o.json
new file mode 100644
index 000000000..a7eac52ca
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/sorted(using:)-4776o.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/sorted(using:)-4776o"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"text":".","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-4776o","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"title":"sorted(using:)","externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tAA14SortComparatorRd__8ComparedQyd__AERSlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"platforms":[{"introducedAt":"15.0","name":"iOS","beta":false,"unavailable":false,"deprecated":false},{"deprecated":false,"introducedAt":"12.0","unavailable":false,"name":"macOS","beta":false},{"deprecated":false,"name":"tvOS","introducedAt":"15.0","unavailable":false,"beta":false},{"unavailable":false,"deprecated":false,"introducedAt":"8.0","beta":false,"name":"watchOS"}],"role":"symbol","roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"<"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"comparator"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Comparator"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP","text":"SortComparator"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":" == "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"}]}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/sorted(using:)-4776o":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-4776o","url":"\/documentation\/codeedittextview\/textlinestorage\/sorted(using:)-4776o","title":"sorted(using:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/sorted(using:)-70px.json b/data/documentation/codeedittextview/textlinestorage/sorted(using:)-70px.json
new file mode 100644
index 000000000..c0e8f1392
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/sorted(using:)-70px.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/sorted(using:)-70px"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"S"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"comparators"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":" : "},{"text":"Sequence","preciseIdentifier":"s:ST","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","text":"SortComparator","preciseIdentifier":"s:10Foundation14SortComparatorP"},{"kind":"text","text":", "},{"text":"Comparator","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"}]}]}],"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-70px","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"roleHeading":"Instance Method","extendedModule":"Swift","role":"symbol","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"platforms":[{"beta":false,"name":"iOS","unavailable":false,"introducedAt":"15.0","deprecated":false},{"unavailable":false,"introducedAt":"12.0","beta":false,"name":"macOS","deprecated":false},{"introducedAt":"15.0","deprecated":false,"name":"tvOS","unavailable":false,"beta":false},{"name":"watchOS","introducedAt":"8.0","beta":false,"unavailable":false,"deprecated":false}],"title":"sorted(using:)","externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tSTRd__AA14SortComparatorRd_0_ADQyd__Rsd_0_8ComparedQyd_0_AERSr0_lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/sorted(using:)-70px":{"title":"sorted(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/sorted(using:)-70px","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/sorted(using:)-70px","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/split(maxsplits:omittingemptysubsequences:whereseparator:).json b/data/documentation/codeedittextview/textlinestorage/split(maxsplits:omittingemptysubsequences:whereseparator:).json
new file mode 100644
index 000000000..0fb00e883
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/split(maxsplits:omittingemptysubsequences:whereseparator:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"split","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"whereSeparator","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":">]"}],"externalID":"s:STsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSays10ArraySliceVy7ElementQzGGSi_S2bAHKXEtKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","extendedModule":"Swift","role":"symbol","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"split","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"maxSplits"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":" = Int.max, "},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":" = true, "},{"text":"whereSeparator","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"isSeparator"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":">]"}],"languages":["swift"]}]}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/split(maxsplits:omittingemptysubsequences:whereseparator:)"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/split(maxsplits:omittingemptysubsequences:whereseparator:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"split"},{"kind":"text","text":"("},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"kind":"externalParam","text":"whereSeparator"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":">]","kind":"text"}],"title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"topic","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/starts(with:by:).json b/data/documentation/codeedittextview/textlinestorage/starts(with:by:).json
new file mode 100644
index 000000000..c0e65a9f4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/starts(with:by:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/starts(with:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/starts(with:by:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.starts(with:by:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"starts"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE6starts4with2bySbqd___Sb7ElementQz_ADQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","title":"starts(with:by:)","symbolKind":"method","role":"symbol"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"with"},{"kind":"text","text":" "},{"text":"possiblePrefix","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"areEquivalent","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":" "},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Sequence","preciseIdentifier":"s:ST","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/starts(with:by:)":{"title":"starts(with:by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/starts(with:by:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/starts(with:by:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"starts"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/suffix(_:).json b/data/documentation/codeedittextview/textlinestorage/suffix(_:).json
new file mode 100644
index 000000000..98f564869
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/suffix(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"maxLength","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/suffix(_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/suffix(_:)","interfaceLanguage":"swift"},"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"suffix(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"suffix","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"extendedModule":"Swift","roleHeading":"Instance Method","externalID":"s:STsE6suffixySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","symbolKind":"method"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.suffix(_:)"},{"type":"text","text":"."}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/suffix(_:)":{"abstract":[],"title":"suffix(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/suffix(_:)","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/suffix(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlineposition.json b/data/documentation/codeedittextview/textlinestorage/textlineposition.json
new file mode 100644
index 000000000..43fc27903
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlineposition.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","interfaceLanguage":"swift"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLinePosition","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"metadata":{"externalID":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","roleHeading":"Structure","role":"symbol","modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLinePosition","kind":"identifier"}],"title":"TextLineStorage.TextLinePosition","symbolKind":"struct","extendedModule":"CodeEditTextView"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlineposition"],"traits":[{"interfaceLanguage":"swift"}]}],"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/data","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/height","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/index","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/range","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/yPos"],"anchor":"Instance-Properties","title":"Instance Properties"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/range":{"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/range","kind":"symbol","abstract":[{"text":"The range represented by the data","type":"text"}],"title":"range","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/range","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/index":{"abstract":[{"type":"text","text":"The index of the position."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/index","kind":"symbol","role":"symbol","title":"index","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/index","type":"topic","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"index","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/height":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/height","kind":"symbol","abstract":[{"type":"text","text":"The height of the stored data"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/height","title":"height","type":"topic","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"height","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/data":{"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"data","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","text":"Data","kind":"typeIdentifier"}],"abstract":[{"text":"The data stored at the position","type":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/data","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/data","title":"data"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/yPos":{"type":"topic","abstract":[{"type":"text","text":"The y position of the data, on a top down y axis"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/yPos","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/ypos","kind":"symbol","title":"yPos","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"yPos"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlineposition/data.json b/data/documentation/codeedittextview/textlinestorage/textlineposition/data.json
new file mode 100644
index 000000000..f1ab0a6c7
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlineposition/data.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"data"},{"text":": ","kind":"text"},{"text":"Data","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp"}],"externalID":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV4dataxvp","roleHeading":"Instance Property","title":"data"},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/data","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"data"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","text":"Data","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"text":"The data stored at the position","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/data"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/data":{"role":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"data","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC4Dataxmfp","text":"Data","kind":"typeIdentifier"}],"abstract":[{"text":"The data stored at the position","type":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/data","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/data","title":"data"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlineposition/height.json b/data/documentation/codeedittextview/textlinestorage/textlineposition/height.json
new file mode 100644
index 000000000..171093aea
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlineposition/height.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/height"]}],"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"height","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/height"},"kind":"symbol","metadata":{"role":"symbol","externalID":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV6height14CoreFoundation7CGFloatVvp","roleHeading":"Instance Property","title":"height","symbolKind":"property","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"height","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}]},"abstract":[{"type":"text","text":"The height of the stored data"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/height":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/height","kind":"symbol","abstract":[{"type":"text","text":"The height of the stored data"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/height","title":"height","type":"topic","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"height","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlineposition/index.json b/data/documentation/codeedittextview/textlinestorage/textlineposition/index.json
new file mode 100644
index 000000000..79ba6b3cd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlineposition/index.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"]]},"metadata":{"roleHeading":"Instance Property","externalID":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV5indexSivp","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"index","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"index","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"}],"symbolKind":"property"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/index","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"index","kind":"identifier"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/index"]}],"abstract":[{"type":"text","text":"The index of the position."}],"sections":[],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/index":{"abstract":[{"type":"text","text":"The index of the position."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/index","kind":"symbol","role":"symbol","title":"index","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/index","type":"topic","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"index","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlineposition/range.json b/data/documentation/codeedittextview/textlinestorage/textlineposition/range.json
new file mode 100644
index 000000000..d25be4d68
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlineposition/range.json
@@ -0,0 +1 @@
+{"metadata":{"title":"range","symbolKind":"property","role":"symbol","externalID":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV5rangeSo8_NSRangeVvp","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property"},"kind":"symbol","abstract":[{"text":"The range represented by the data","type":"text"}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"range"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}]}],"kind":"declarations"}],"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/range","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/range"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/range":{"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/range","kind":"symbol","abstract":[{"text":"The range represented by the data","type":"text"}],"title":"range","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/range","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlineposition/ypos.json b/data/documentation/codeedittextview/textlinestorage/textlineposition/ypos.json
new file mode 100644
index 000000000..daf79f4aa
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlineposition/ypos.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/yPos","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"yPos","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"The y position of the data, on a top down y axis"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"yPos","role":"symbol","symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"yPos"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"externalID":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV4yPos14CoreFoundation7CGFloatVvp","roleHeading":"Instance Property"},"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/ypos"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition/yPos":{"type":"topic","abstract":[{"type":"text","text":"The y position of the data, on a top down y axis"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition\/yPos","url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/ypos","kind":"symbol","title":"yPos","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"yPos"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageiterator.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageiterator.json
new file mode 100644
index 000000000..1fd41b52d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageiterator.json
@@ -0,0 +1 @@
+{"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator\/next()"],"generated":true,"title":"Instance Methods","anchor":"Instance-Methods"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"text":"TextLineStorageIterator","kind":"identifier"}],"title":"TextLineStorage.TextLineStorageIterator","role":"symbol","conformance":{"conformancePrefix":[{"type":"text","text":"Conforms when"}],"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}]},"extendedModule":"CodeEditTextView","roleHeading":"Structure","externalID":"s:16CodeEditTextView0C11LineStorageC0ceF8IteratorV","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLineStorageIterator"}],"symbolKind":"struct"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLineStorageIterator"}],"languages":["swift"]}]}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"relationshipsSections":[{"kind":"relationships","type":"conformsTo","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/St"],"title":"Conforms To"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/St":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/St","title":"Swift.IteratorProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageIterator/next()":{"title":"next()","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator\/next()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator\/next()","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"next","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier","text":"TextLinePosition"},{"kind":"text","text":"?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageIterator":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLineStorageIterator"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator","kind":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"type":"topic","abstract":[],"title":"TextLineStorage.TextLineStorageIterator","role":"symbol","navigatorTitle":[{"text":"TextLineStorageIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageiterator/next().json b/data/documentation/codeedittextview/textlinestorage/textlinestorageiterator/next().json
new file mode 100644
index 000000000..8d340a3f5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageiterator/next().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator\/next()","interfaceLanguage":"swift"},"metadata":{"title":"next()","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"next"},{"kind":"text","text":"() -> "},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C11LineStorageC0ceF8IteratorV4nextAC0cE8PositionVyx_GSgyF","symbolKind":"method"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"IteratorProtocol.next()"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"mutating"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"next"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator\/next()"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageIterator/next()":{"title":"next()","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator\/next()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator\/next()","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"next","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier","text":"TextLinePosition"},{"kind":"text","text":"?"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageIterator":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLineStorageIterator"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageIterator","kind":"symbol","conformance":{"constraints":[{"type":"codeVoice","code":"Data"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"type":"topic","abstract":[],"title":"TextLineStorage.TextLineStorageIterator","role":"symbol","navigatorTitle":[{"text":"TextLineStorageIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator.json
new file mode 100644
index 000000000..1cd561f98
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLineStorageRangeIterator"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","interfaceLanguage":"swift"},"metadata":{"externalID":"s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","modules":[{"name":"CodeEditTextView"}],"title":"TextLineStorage.TextLineStorageRangeIterator","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"role":"symbol","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"Identifiable"},{"text":".","type":"text"}]},"symbolKind":"struct","roleHeading":"Structure","navigatorTitle":[{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"extendedModule":"CodeEditTextView"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"topicSections":[{"anchor":"Instance-Methods","title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/next()"],"generated":true},{"title":"Default Implementations","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/LazySequenceProtocol-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/Sequence-Implementations"],"anchor":"Default-Implementations"}],"relationshipsSections":[{"kind":"relationships","type":"conformsTo","title":"Conforms To","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/St","doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP","doc:\/\/codeedittextview.CodeEditTextView\/ST"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/LazySequenceProtocol-Implementations":{"title":"LazySequenceProtocol Implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/LazySequenceProtocol-Implementations","abstract":[],"type":"topic","kind":"article","role":"collectionGroup","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lazysequenceprotocol-implementations"},"doc://codeedittextview.CodeEditTextView/St":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/St","title":"Swift.IteratorProtocol","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/ST":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/ST","title":"Swift.Sequence","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/Sequence-Implementations":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/Sequence-Implementations","title":"Sequence Implementations","role":"collectionGroup","type":"topic","kind":"article","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sequence-implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/next()":{"title":"next()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/next()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/next()"},"doc://codeedittextview.CodeEditTextView/s20LazySequenceProtocolP":{"title":"Swift.LazySequenceProtocol","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/allsatisfy(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/allsatisfy(_:).json
new file mode 100644
index 000000000..564cb80c6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/allsatisfy(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"allSatisfy","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/allsatisfy(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","metadata":{"extendedModule":"Swift","roleHeading":"Instance Method","title":"allSatisfy(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"role":"symbol","externalID":"s:STsE10allSatisfyyS2b7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","symbolKind":"method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.allSatisfy(_:)","type":"codeVoice"},{"type":"text","text":"."}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/allSatisfy(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/allSatisfy(_:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/allsatisfy(_:)","abstract":[],"kind":"symbol","title":"allSatisfy(_:)","role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"allSatisfy","kind":"identifier"},{"kind":"text","text":"(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/allSatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-75bna.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-75bna.json
new file mode 100644
index 000000000..2e71c758a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-75bna.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.compactMap(_:)"},{"text":".","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-75bna"},"sections":[],"kind":"symbol","metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","title":"compactMap(_:)","extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPsE10compactMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compactMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?>>, ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"roleHeading":"Instance Method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-75bna"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/compactMap(_:)-75bna":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-75bna","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-75bna","role":"symbol","title":"compactMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"compactMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"abstract":[],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-jq70.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-jq70.json
new file mode 100644
index 000000000..7eac2e1ad
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-jq70.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-jq70"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.compactMap(_:)"},{"type":"text","text":"."}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"platforms":["macOS"]}]}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"externalID":"s:STsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","role":"symbol","title":"compactMap(_:)"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-jq70"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/compactMap(_:)-jq70":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-jq70","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"type":"topic","abstract":[],"title":"compactMap(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-jq70","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compare(_:_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compare(_:_:).json
new file mode 100644
index 000000000..d6155c60d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compare(_:_:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"compare(_:_:)","role":"symbol","roleHeading":"Instance Method","platforms":[{"name":"iOS","unavailable":false,"beta":false,"deprecated":false,"introducedAt":"15.0"},{"unavailable":false,"beta":false,"deprecated":false,"introducedAt":"12.0","name":"macOS"},{"introducedAt":"15.0","deprecated":false,"unavailable":false,"name":"tvOS","beta":false},{"beta":false,"introducedAt":"8.0","unavailable":false,"name":"watchOS","deprecated":false}],"extendedModule":"Swift","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compare","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"ComparisonResult","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult"}],"externalID":"s:ST10FoundationE7compareySo18NSComparisonResultV8ComparedQyd___AFtAA14SortComparatorRd__7ElementQzRsd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compare(_:_:)","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.compare(_:_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compare","kind":"identifier"},{"kind":"text","text":"<"},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult"},{"kind":"text","text":" "},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP","text":"SortComparator"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":" == "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compare(_:_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/compare(_:_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult","kind":"typeIdentifier"}],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compare(_:_:)","abstract":[],"kind":"symbol","title":"compare(_:_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compare(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/contains(where:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/contains(where:).json
new file mode 100644
index 000000000..541aad035
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/contains(where:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/contains(where:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/contains(where:)"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.contains(where:)"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"contains"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]}],"kind":"declarations"}],"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"contains","kind":"identifier"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"externalID":"s:STsE8contains5whereS2b7ElementQzKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","title":"contains(where:)","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/contains(where:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/contains(where:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"contains"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"contains(where:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/count(where:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/count(where:).json
new file mode 100644
index 000000000..1a8b59a57
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/count(where:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"count","kind":"identifier"},{"text":"<","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"E","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s5ErrorP","text":"Error"}]}]}],"metadata":{"externalID":"s:STsE5count5whereSiSb7ElementQzqd__YKXE_tqd__YKs5ErrorRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","title":"count(where:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"kind":"text","text":"<"},{"text":"E","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"symbolKind":"method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift","roleHeading":"Instance Method","role":"symbol"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/count(where:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/count(where:)"]}],"sections":[],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.count(where:)"},{"type":"text","text":"."}],"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/count(where:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/count(where:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/count(where:)","kind":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"count","kind":"identifier"},{"kind":"text","text":"<"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"abstract":[],"title":"count(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/drop(while:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/drop(while:).json
new file mode 100644
index 000000000..b36e3cf6f
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/drop(while:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/drop(while:)"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/drop(while:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.drop(while:)"},{"type":"text","text":"."}],"metadata":{"title":"drop(while:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"drop"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"externalID":"s:s20LazySequenceProtocolPsE4drop5whiles0a9DropWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyDropWhileSequence","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/drop(while:)":{"title":"drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/drop(while:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/drop(while:)","role":"symbol","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","preciseIdentifier":"s:s21LazyDropWhileSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/dropfirst(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/dropfirst(_:).json
new file mode 100644
index 000000000..3c9453ed8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/dropfirst(_:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"dropFirst(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"externalID":"s:STsE9dropFirstys04DropB8SequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropFirst(_:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"k","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":" = 1) -> "},{"preciseIdentifier":"s:s17DropFirstSequenceV","text":"DropFirstSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.dropFirst(_:)"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/dropfirst(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/dropFirst(_:)":{"abstract":[],"title":"dropFirst(_:)","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/dropfirst(_:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropFirst(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s17DropFirstSequenceV","kind":"typeIdentifier","text":"DropFirstSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/droplast(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/droplast(_:).json
new file mode 100644
index 000000000..90c26e2c8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/droplast(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/droplast(_:)"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.dropLast(_:)"},{"type":"text","text":"."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropLast(_:)","interfaceLanguage":"swift"},"metadata":{"title":"dropLast(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"externalID":"s:STsE8dropLastySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"dropLast"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"k","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":" = 1) -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/dropLast(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropLast(_:)","abstract":[],"type":"topic","title":"dropLast(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/droplast(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elements.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elements.json
new file mode 100644
index 000000000..645301584
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elements.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elements"]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Property","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"code":"Self.Elements","type":"codeVoice"},{"text":".","type":"text"}]},"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"elements","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}],"extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPs8ElementsQzRszrlE8elementsxvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","title":"elements","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.elements","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"elements","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elements"},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/elements":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elements","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Self"},{"text":" is ","type":"text"},{"code":"Self.Elements","type":"codeVoice"},{"text":".","type":"text"}]},"title":"elements","abstract":[],"type":"topic","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elements","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"elements","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elementsequal(_:by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elementsequal(_:by:).json
new file mode 100644
index 000000000..bf252be0a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elementsequal(_:by:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elementsEqual(_:by:)"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elementsequal(_:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"elementsEqual"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"extendedModule":"Swift","externalID":"s:STsE13elementsEqual_2bySbqd___Sb7ElementQz_ACQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","title":"elementsEqual(_:by:)","symbolKind":"method"},"schemaVersion":{"patch":0,"minor":3,"major":0},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.elementsEqual(_:by:)"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"other","kind":"internalParam"},{"kind":"text","text":": "},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":" "},{"text":"areEquivalent","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","text":"Sequence","preciseIdentifier":"s:ST"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/elementsEqual(_:by:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"elementsEqual","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elementsEqual(_:by:)","abstract":[],"type":"topic","title":"elementsEqual(_:by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elementsequal(_:by:)","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/enumerated().json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/enumerated().json
new file mode 100644
index 000000000..b5643dae2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/enumerated().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/enumerated()"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.enumerated()","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"role":"symbol","title":"enumerated()","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE10enumerateds18EnumeratedSequenceVyxGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"enumerated"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"roleHeading":"Instance Method"},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/enumerated()","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"enumerated"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/enumerated()":{"title":"enumerated()","kind":"symbol","abstract":[],"type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/enumerated()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/enumerated()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/filter(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/filter(_:).json
new file mode 100644
index 000000000..7a132cbf5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/filter(_:).json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:s20LazySequenceProtocolPsE6filterys0a6FilterB0Vy8ElementsQzGSb7ElementQzcF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","role":"symbol","title":"filter(_:)","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"filter","kind":"identifier"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") -> "},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":">"}],"roleHeading":"Instance Method"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"filter"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"isIncluded","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":">","kind":"text"}]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.filter(_:)","type":"codeVoice"},{"text":".","type":"text"}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/filter(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/filter(_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/filter(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/filter(_:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/filter(_:)","title":"filter(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/first(where:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/first(where:).json
new file mode 100644
index 000000000..9fa45dd7e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/first(where:).json
@@ -0,0 +1 @@
+{"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"predicate"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}]}]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"first(where:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"extendedModule":"Swift","externalID":"s:STsE5first5where7ElementQzSgSbADKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","roleHeading":"Instance Method","symbolKind":"method"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/first(where:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/first(where:)"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.first(where:)"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/first(where:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"first"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/first(where:)","abstract":[],"type":"topic","title":"first(where:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/first(where:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-22h6s.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-22h6s.json
new file mode 100644
index 000000000..e03df5646
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-22h6s.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","symbolKind":"method","title":"flatMap(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE7flatMapySay7ElementQyd__Gqd__ABQzKXEKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-22h6s"},"kind":"symbol","sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.flatMap(_:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"] "},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"text":"Sequence","preciseIdentifier":"s:ST","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-22h6s"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-22h6s":{"title":"flatMap(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-22h6s","abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-22h6s"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-3w8yl.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-3w8yl.json
new file mode 100644
index 000000000..3c10b22ed
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-3w8yl.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"metadata":{"role":"symbol","roleHeading":"Instance Method","extendedModule":"Swift","symbolKind":"method","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","platforms":[{"deprecatedAt":"4.1","name":"Swift","renamed":"compactMap(_:)","unavailable":false,"deprecated":false,"beta":false,"message":"Please use compactMap(_:) for the case where closure returns an optional value"}],"title":"flatMap(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-3w8yl"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.flatMap(_:)"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-3w8yl","interfaceLanguage":"swift"},"deprecationSummary":[{"inlineContent":[{"text":"Please use compactMap(_:) for the case where closure returns an optional value","type":"text"}],"type":"paragraph"}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":">"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-3w8yl":{"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-3w8yl","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-3w8yl","kind":"symbol","title":"flatMap(_:)","deprecated":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-77eog.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-77eog.json
new file mode 100644
index 000000000..e2ae180d2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-77eog.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"metadata":{"platforms":[{"name":"Swift","renamed":"compactMap(_:)","deprecatedAt":"4.1","unavailable":false,"message":"Please use compactMap(_:) for the case where closure returns an optional value","beta":false,"deprecated":false}],"externalID":"s:STsE7flatMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","roleHeading":"Instance Method","title":"flatMap(_:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}]},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.flatMap(_:)","type":"codeVoice"},{"text":".","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-77eog"},"deprecationSummary":[{"inlineContent":[{"type":"text","text":"Please use compactMap(_:) for the case where closure returns an optional value"}],"type":"paragraph"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-77eog"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-77eog":{"abstract":[],"title":"flatMap(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-77eog","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-77eog","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}],"deprecated":true,"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-8j0nw.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-8j0nw.json
new file mode 100644
index 000000000..25328c3b9
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-8j0nw.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-8j0nw"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"extendedModule":"Swift","roleHeading":"Instance Method","title":"flatMap(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>>","kind":"text"}],"role":"symbol","symbolKind":"method","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aB0Vys07FlattenB0Vys0aeB0Vy8ElementsQzqd__GGGqd__7ElementQzcSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.flatMap(_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"text":" (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazySequence","kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV"},{"kind":"text","text":"<"},{"text":"FlattenSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>> ","kind":"text"},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:ST","kind":"typeIdentifier","text":"Sequence"}],"platforms":["macOS"]}]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-8j0nw","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-8j0nw":{"title":"flatMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazySequence","preciseIdentifier":"s:s12LazySequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15FlattenSequenceV","kind":"typeIdentifier","text":"FlattenSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>>","kind":"text"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-8j0nw","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-8j0nw"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/foreach(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/foreach(_:).json
new file mode 100644
index 000000000..dd59e3b9c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/foreach(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/foreach(_:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/forEach(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"forEach"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"body","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.forEach(_:)"},{"text":".","type":"text"}],"metadata":{"externalID":"s:STsE7forEachyyy7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","title":"forEach(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"forEach"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}],"roleHeading":"Instance Method","symbolKind":"method","role":"symbol","extendedModule":"Swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/forEach(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/forEach(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/foreach(_:)","title":"forEach(_:)","kind":"symbol","abstract":[],"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/formatted(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/formatted(_:).json
new file mode 100644
index 000000000..07dfcee8a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/formatted(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/formatted(_:)"},"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"platforms":[{"deprecated":false,"name":"iOS","introducedAt":"15.0","beta":false,"unavailable":false},{"deprecated":false,"name":"macOS","unavailable":false,"introducedAt":"12.0","beta":false},{"introducedAt":"15.0","unavailable":false,"name":"tvOS","deprecated":false,"beta":false},{"name":"watchOS","deprecated":false,"unavailable":false,"beta":false,"introducedAt":"8.0"}],"roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"method","title":"formatted(_:)","externalID":"s:ST10FoundationE9formattedy12FormatOutputQyd__qd__0C5InputQyd__RszAA0C5StyleRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"formatted"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"S"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput","kind":"typeIdentifier"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.formatted(_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"formatted"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"style","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput","kind":"typeIdentifier"},{"kind":"text","text":" "},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":" == "},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation11FormatStyleP0B5InputQa","text":"FormatInput","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:10Foundation11FormatStyleP","kind":"typeIdentifier","text":"FormatStyle"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/formatted(_:)"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/formatted(_:)":{"title":"formatted(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"formatted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":">("},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/formatted(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/formatted(_:)","type":"topic","kind":"symbol","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazy.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazy.json
new file mode 100644
index 000000000..c17116495
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazy.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","extendedModule":"Swift","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"}],"externalID":"s:s20LazySequenceProtocolPssAA8ElementsRpzrlE4lazyADvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","symbolKind":"property","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"LazySequenceProtocol"},{"type":"text","text":"."}]},"roleHeading":"Instance Property","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"lazy"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lazy"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lazy"]}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.lazy"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/lazy":{"abstract":[],"title":"lazy","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lazy","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"type":"codeVoice","code":"Elements"},{"text":" conforms to ","type":"text"},{"code":"LazySequenceProtocol","type":"codeVoice"},{"type":"text","text":"."}]},"role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lazy","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazysequenceprotocol-implementations.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazysequenceprotocol-implementations.json
new file mode 100644
index 000000000..608967f19
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazysequenceprotocol-implementations.json
@@ -0,0 +1 @@
+{"topicSections":[{"title":"Instance Properties","anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elements","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lazy"],"generated":true},{"anchor":"Instance-Methods","title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-75bna","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/drop(while:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/filter(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-3w8yl","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-8j0nw","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-5h1kj","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(while:)"],"generated":true}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"article","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/LazySequenceProtocol-Implementations"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lazysequenceprotocol-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"metadata":{"role":"collectionGroup","modules":[{"name":"CodeEditTextView"}],"roleHeading":"API Collection","title":"LazySequenceProtocol Implementations"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-3w8yl":{"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?>>, ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-3w8yl","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-3w8yl","kind":"symbol","title":"flatMap(_:)","deprecated":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/filter(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":">","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/filter(_:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/filter(_:)","title":"filter(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/compactMap(_:)-75bna":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-75bna","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-75bna","role":"symbol","title":"compactMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"compactMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"abstract":[],"type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/lazy":{"abstract":[],"title":"lazy","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lazy","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"type":"codeVoice","code":"Elements"},{"text":" conforms to ","type":"text"},{"code":"LazySequenceProtocol","type":"codeVoice"},{"type":"text","text":"."}]},"role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lazy","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lazy"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/elements":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elements","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Self"},{"text":" is ","type":"text"},{"code":"Self.Elements","type":"codeVoice"},{"text":".","type":"text"}]},"title":"elements","abstract":[],"type":"topic","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elements","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"elements","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/drop(while:)":{"title":"drop(while:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/drop(while:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/drop(while:)","role":"symbol","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","preciseIdentifier":"s:s21LazyDropWhileSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/map(_:)-5h1kj":{"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-5h1kj","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-5h1kj","kind":"symbol","title":"map(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-8j0nw":{"title":"flatMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazySequence","preciseIdentifier":"s:s12LazySequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15FlattenSequenceV","kind":"typeIdentifier","text":"FlattenSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>>","kind":"text"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-8j0nw","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-8j0nw"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/prefix(while:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(while:)","type":"topic","abstract":[],"title":"prefix(while:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(while:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":") -> "},{"text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lexicographicallyprecedes(_:by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lexicographicallyprecedes(_:by:).json
new file mode 100644
index 000000000..5dfb08d70
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lexicographicallyprecedes(_:by:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.lexicographicallyPrecedes(_:by:)","type":"codeVoice"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lexicographicallyPrecedes(_:by:)","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lexicographicallyPrecedes"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"externalID":"s:STsE25lexicographicallyPrecedes_2bySbqd___Sb7ElementQz_ADtKXEtKSTRd__ACQyd__ADRSlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","role":"symbol","title":"lexicographicallyPrecedes(_:by:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"other"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areInIncreasingOrder"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":" == ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"}]}],"kind":"declarations"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lexicographicallyprecedes(_:by:)"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/lexicographicallyPrecedes(_:by:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lexicographicallyPrecedes(_:by:)","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lexicographicallyprecedes(_:by:)","title":"lexicographicallyPrecedes(_:by:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/makeiterator().json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/makeiterator().json
new file mode 100644
index 000000000..b72080896
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/makeiterator().json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/makeIterator()"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.makeIterator()"},{"type":"text","text":"."}],"kind":"symbol","primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"makeIterator"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"}],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/makeiterator()"]}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"type":"text","text":"."}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"makeIterator","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"Self"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STs8IteratorSTQzRszrlE04makeA0xyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","title":"makeIterator()"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/makeIterator()":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/makeiterator()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"makeIterator","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"Self"}],"type":"topic","abstract":[],"title":"makeIterator()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/makeIterator()","role":"symbol","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"text":".","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]}}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-2b7rq.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-2b7rq.json
new file mode 100644
index 000000000..7c2f4748a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-2b7rq.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-2b7rq"]}],"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.map(_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":", "},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"T","kind":"typeIdentifier"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"text":"Error","kind":"typeIdentifier","preciseIdentifier":"s:s5ErrorP"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-2b7rq","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"kind":"genericParameter","text":"E"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"T","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":"]"}],"symbolKind":"method","externalID":"s:STsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","role":"symbol","title":"map(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/map(_:)-2b7rq":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-2b7rq","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-2b7rq","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"kind":"genericParameter","text":"E"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}],"title":"map(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-5h1kj.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-5h1kj.json
new file mode 100644
index 000000000..2875b9cb4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-5h1kj.json
@@ -0,0 +1 @@
+{"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"text":"<","kind":"text"},{"text":"U","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"text":">","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-5h1kj","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.map(_:)"},{"type":"text","text":"."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"metadata":{"title":"map(_:)","externalID":"s:s20LazySequenceProtocolPsE3mapys0a3MapB0Vy8ElementsQzqd__Gqd__7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"U"},{"text":">","kind":"text"}],"extendedModule":"Swift","roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol"},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-5h1kj"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/map(_:)-5h1kj":{"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-5h1kj","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"text":"U","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-5h1kj","kind":"symbol","title":"map(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/max(by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/max(by:).json
new file mode 100644
index 000000000..e72ecc214
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/max(by:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"title":"max(by:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"max","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"externalID":"s:STsE3max2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/max(by:)"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.max(by:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"areInIncreasingOrder"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"?","kind":"text"}],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/max(by:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/max(by:)":{"abstract":[],"title":"max(by:)","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/max(by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/max(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/min(by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/min(by:).json
new file mode 100644
index 000000000..6de15811c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/min(by:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.min(by:)"},{"type":"text","text":"."}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"min(by:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"?"}],"extendedModule":"Swift","externalID":"s:STsE3min2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","roleHeading":"Instance Method","symbolKind":"method"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/min(by:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/min(by:)"},"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"min","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areInIncreasingOrder"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"platforms":["macOS"],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/min(by:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/min(by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/min(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"title":"min(by:)","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/next().json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/next().json
new file mode 100644
index 000000000..c8e97819d
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/next().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/next()","interfaceLanguage":"swift"},"metadata":{"role":"symbol","externalID":"s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV4nextAC0cE8PositionVyx_GSgyF","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"next"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","text":"TextLinePosition","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"symbolKind":"method","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","title":"next()"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/next()"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"mutating","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","kind":"typeIdentifier","text":"TextLinePosition"},{"text":"?","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"IteratorProtocol.next()","type":"codeVoice"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/next()":{"title":"next()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/next()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/next()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(_:).json
new file mode 100644
index 000000000..3ab62b7ad
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(_:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(_:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(_:)"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.prefix(_:)"},{"text":".","type":"text"}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"metadata":{"extendedModule":"Swift","externalID":"s:STsE6prefixys14PrefixSequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"text":"PrefixSequence","kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"title":"prefix(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","symbolKind":"method"},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"maxLength"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/prefix(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"text":"PrefixSequence","kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(_:)","abstract":[],"type":"topic","title":"prefix(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(while:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(while:).json
new file mode 100644
index 000000000..6b8eb08d6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(while:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(while:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(while:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","externalID":"s:s20LazySequenceProtocolPsE6prefix5whiles0a11PrefixWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"text":"LazyPrefixWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"title":"prefix(while:)","symbolKind":"method","extendedModule":"Swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.prefix(while:)"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"text":"(","kind":"text"},{"text":"while","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"LazyPrefixWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/prefix(while:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(while:)","type":"topic","abstract":[],"title":"prefix(while:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(while:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":") -> "},{"text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/publisher.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/publisher.json
new file mode 100644
index 000000000..305d14ebb
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/publisher.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/publisher"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/publisher"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"kind":"symbol","metadata":{"role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"publisher","kind":"identifier"},{"kind":"text","text":": "},{"text":"Publishers","preciseIdentifier":"s:7Combine10PublishersO","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","text":"Sequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier","text":"Never"},{"text":">","kind":"text"}],"platforms":[{"beta":false,"deprecated":false,"name":"iOS","introducedAt":"13.0","unavailable":false},{"beta":false,"deprecated":false,"introducedAt":"10.15","unavailable":false,"name":"macOS"},{"introducedAt":"13.0","deprecated":false,"name":"tvOS","unavailable":false,"beta":false},{"beta":false,"name":"watchOS","introducedAt":"6.0","unavailable":false,"deprecated":false}],"roleHeading":"Instance Property","externalID":"s:ST7CombineE9publisherAA10PublishersO8SequenceVy_xs5NeverOGvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"publisher","symbolKind":"property","extendedModule":"Swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.publisher"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"publisher"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:7Combine10PublishersO","kind":"typeIdentifier","text":"Publishers"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV","text":"Sequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"preciseIdentifier":"s:s5NeverO","text":"Never","kind":"typeIdentifier"},{"text":"> { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/publisher":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/publisher","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/publisher","abstract":[],"title":"publisher","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"publisher","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"text":".","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"Never","kind":"typeIdentifier","preciseIdentifier":"s:s5NeverO"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(_:_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(_:_:).json
new file mode 100644
index 000000000..5aeb6a3c6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(_:_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"extendedModule":"Swift","externalID":"s:STsE6reduceyqd__qd___qd__qd___7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","title":"reduce(_:_:)","symbolKind":"method"},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(_:_:)"},"schemaVersion":{"patch":0,"minor":3,"major":0},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.reduce(_:_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"initialResult"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"nextPartialResult"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/reduce(_:_:)":{"kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(_:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"title":"reduce(_:_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(into:_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(into:_:).json
new file mode 100644
index 000000000..15cc40fa1
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(into:_:).json
@@ -0,0 +1 @@
+{"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"kind":"text","text":" "},{"kind":"internalParam","text":"initialResult"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", "},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"updateAccumulatingResult","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> ()) "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}]}],"kind":"declarations"}],"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"into"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Result"},{"text":", (","kind":"text"},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> ()) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"externalID":"s:STsE6reduce4into_qd__qd__n_yqd__z_7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","title":"reduce(into:_:)","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(into:_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(into:_:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.reduce(into:_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/reduce(into:_:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(into:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", ("},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ()) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"type":"topic","abstract":[],"title":"reduce(into:_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(into:_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reversed().json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reversed().json
new file mode 100644
index 000000000..0ea2c0600
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reversed().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reversed()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.reversed()"},{"text":".","type":"text"}],"metadata":{"title":"reversed()","role":"symbol","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"externalID":"s:STsE8reversedSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reversed()"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}]}]}],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/reversed()":{"title":"reversed()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reversed()","type":"topic","role":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reversed()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reversed"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sequence-implementations.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sequence-implementations.json
new file mode 100644
index 000000000..0a2ee7ba4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sequence-implementations.json
@@ -0,0 +1 @@
+{"metadata":{"role":"collectionGroup","roleHeading":"API Collection","title":"Sequence Implementations","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"kind":"article","sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sequence-implementations"]}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/publisher","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/underestimatedCount"],"generated":true,"title":"Instance Properties","anchor":"Instance-Properties"},{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/allSatisfy(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-jq70","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compare(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/contains(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/count(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropFirst(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropLast(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elementsEqual(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/enumerated()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/first(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-22h6s","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-77eog","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/forEach(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/formatted(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lexicographicallyPrecedes(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/makeIterator()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-2b7rq","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/max(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/min(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(into:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reversed()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled(using:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-5pb9","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-73724","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/starts(with:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/suffix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/withContiguousStorageIfAvailable(_:)"],"anchor":"Instance-Methods","title":"Instance Methods"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/Sequence-Implementations","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/prefix(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"text":"PrefixSequence","kind":"typeIdentifier","preciseIdentifier":"s:s14PrefixSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/prefix(_:)","abstract":[],"type":"topic","title":"prefix(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/compare(_:_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult","kind":"typeIdentifier"}],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compare(_:_:)","abstract":[],"kind":"symbol","title":"compare(_:_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compare(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/sorted(using:)-5pb9":{"abstract":[],"title":"sorted(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-5pb9","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-5pb9","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/first(where:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"first"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/first(where:)","abstract":[],"type":"topic","title":"first(where:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/first(where:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/shuffled()":{"abstract":[],"title":"shuffled()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled()","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled()","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/dropLast(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropLast(_:)","abstract":[],"type":"topic","title":"dropLast(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/droplast(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-22h6s":{"title":"flatMap(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-22h6s","abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-22h6s"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/flatMap(_:)-77eog":{"abstract":[],"title":"flatMap(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/flatMap(_:)-77eog","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-77eog","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"]"}],"deprecated":true,"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/elementsEqual(_:by:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"elementsEqual","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/elementsEqual(_:by:)","abstract":[],"type":"topic","title":"elementsEqual(_:by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elementsequal(_:by:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/dropFirst(_:)":{"abstract":[],"title":"dropFirst(_:)","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/dropfirst(_:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/dropFirst(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s17DropFirstSequenceV","kind":"typeIdentifier","text":"DropFirstSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/compactMap(_:)-jq70":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-jq70","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"type":"topic","abstract":[],"title":"compactMap(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/compactMap(_:)-jq70","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/shuffled(using:)":{"title":"shuffled(using:)","kind":"symbol","abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/max(by:)":{"abstract":[],"title":"max(by:)","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/max(by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/max(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/makeIterator()":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/makeiterator()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"makeIterator","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"Self"}],"type":"topic","abstract":[],"title":"makeIterator()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/makeIterator()","role":"symbol","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"text":".","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/forEach(_:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/forEach(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/foreach(_:)","title":"forEach(_:)","kind":"symbol","abstract":[],"type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"forEach","kind":"identifier"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/reduce(into:_:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(into:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", ("},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ()) ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"type":"topic","abstract":[],"title":"reduce(into:_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(into:_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/reduce(_:_:)":{"kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(_:_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reduce(_:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"Result"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Result","kind":"typeIdentifier"}],"title":"reduce(_:_:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/allSatisfy(_:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/allsatisfy(_:)","abstract":[],"kind":"symbol","title":"allSatisfy(_:)","role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"allSatisfy","kind":"identifier"},{"kind":"text","text":"(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/allSatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/starts(with:by:)":{"type":"topic","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/starts(with:by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/starts(with:by:)","kind":"symbol","title":"starts(with:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/contains(where:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/contains(where:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/contains(where:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"contains"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"contains(where:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/enumerated()":{"title":"enumerated()","kind":"symbol","abstract":[],"type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18EnumeratedSequenceV","text":"EnumeratedSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/enumerated()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/enumerated()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"split"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":", "},{"text":"whereSeparator","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"preciseIdentifier":"s:s10ArraySliceV","kind":"typeIdentifier","text":"ArraySlice"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":">]","kind":"text"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/reversed()":{"title":"reversed()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/reversed()","type":"topic","role":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reversed()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reversed"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/count(where:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/count(where:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/count(where:)","kind":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"count","kind":"identifier"},{"kind":"text","text":"<"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"abstract":[],"title":"count(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/map(_:)-2b7rq":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-2b7rq","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/map(_:)-2b7rq","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"kind":"genericParameter","text":"E"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}],"title":"map(_:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/underestimatedCount":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/underestimatedcount","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/underestimatedCount","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"underestimatedCount","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/sorted(using:)-73724":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-73724","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-73724","title":"sorted(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/min(by:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/min(by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/min(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"title":"min(by:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/suffix(_:)":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/suffix(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/suffix(_:)","title":"suffix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/formatted(_:)":{"title":"formatted(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"formatted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":">("},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/formatted(_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/formatted(_:)","type":"topic","kind":"symbol","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/withContiguousStorageIfAvailable(_:)":{"kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/withcontiguousstorageifavailable(_:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/withContiguousStorageIfAvailable(_:)","title":"withContiguousStorageIfAvailable(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"R"},{"text":">((","kind":"text"},{"text":"UnsafeBufferPointer","kind":"typeIdentifier","preciseIdentifier":"s:SR"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":">) ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/publisher":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/publisher","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/publisher","abstract":[],"title":"publisher","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"publisher","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"text":".","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"text":"Never","kind":"typeIdentifier","preciseIdentifier":"s:s5NeverO"},{"kind":"text","text":">"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/sorted(by:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(by:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol","type":"topic","title":"sorted(by:)","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/lexicographicallyPrecedes(_:by:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/lexicographicallyPrecedes(_:by:)","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"kind":"text","text":"<"},{"text":"OtherSequence","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lexicographicallyprecedes(_:by:)","title":"lexicographicallyPrecedes(_:by:)","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled().json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled().json
new file mode 100644
index 000000000..e61fc8aef
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled().json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","extendedModule":"Swift","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"kind":"text","text":"() -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"externalID":"s:STsE8shuffledSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","roleHeading":"Instance Method","title":"shuffled()"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled()","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled()"]}],"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.shuffled()","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"kind":"text","text":"() -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/shuffled()":{"abstract":[],"title":"shuffled()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled()","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled()","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled(using:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled(using:).json
new file mode 100644
index 000000000..66faf2e61
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled(using:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"generator"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"] "},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"RandomNumberGenerator","kind":"typeIdentifier","preciseIdentifier":"s:SG"}]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.shuffled(using:)"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled(using:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"shuffled(using:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"shuffled"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"inout","kind":"keyword"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"roleHeading":"Instance Method","extendedModule":"Swift","externalID":"s:STsE8shuffled5usingSay7ElementQzGqd__z_tSGRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","symbolKind":"method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled(using:)","interfaceLanguage":"swift"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/shuffled(using:)":{"title":"shuffled(using:)","kind":"symbol","abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/shuffled(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(by:).json
new file mode 100644
index 000000000..cf68cb4b6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(by:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.sorted(by:)"},{"text":".","type":"text"}],"metadata":{"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"extendedModule":"Swift","externalID":"s:STsE6sorted2bySay7ElementQzGSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","role":"symbol","title":"sorted(by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"symbolKind":"method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":" "},{"kind":"internalParam","text":"areInIncreasingOrder"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(by:)"]}],"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(by:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/sorted(by:)":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(by:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(by:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol","type":"topic","title":"sorted(by:)","role":"symbol","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-5pb9.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-5pb9.json
new file mode 100644
index 000000000..f4646dac6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-5pb9.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tAA14SortComparatorRd__8ComparedQyd__AERSlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","title":"sorted(using:)","extendedModule":"Swift","platforms":[{"name":"iOS","introducedAt":"15.0","deprecated":false,"beta":false,"unavailable":false},{"name":"macOS","introducedAt":"12.0","deprecated":false,"unavailable":false,"beta":false},{"name":"tvOS","unavailable":false,"introducedAt":"15.0","beta":false,"deprecated":false},{"introducedAt":"8.0","name":"watchOS","deprecated":false,"beta":false,"unavailable":false}],"role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":" "},{"text":"comparator","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"text":"SortComparator","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-5pb9"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-5pb9","interfaceLanguage":"swift"},"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.sorted(using:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/sorted(using:)-5pb9":{"abstract":[],"title":"sorted(using:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-5pb9","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-5pb9","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-73724.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-73724.json
new file mode 100644
index 000000000..d174442ed
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-73724.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":" ","kind":"text"},{"text":"comparators","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"] ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:10Foundation14SortComparatorP","text":"SortComparator","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":" == "},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"}],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-73724"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-73724"]}],"metadata":{"role":"symbol","title":"sorted(using:)","extendedModule":"Swift","roleHeading":"Instance Method","platforms":[{"deprecated":false,"name":"iOS","unavailable":false,"introducedAt":"15.0","beta":false},{"introducedAt":"12.0","deprecated":false,"name":"macOS","unavailable":false,"beta":false},{"deprecated":false,"beta":false,"name":"tvOS","introducedAt":"15.0","unavailable":false},{"deprecated":false,"introducedAt":"8.0","name":"watchOS","beta":false,"unavailable":false}],"symbolKind":"method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"kind":"externalParam","text":"using"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"]","kind":"text"}],"externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tSTRd__AA14SortComparatorRd_0_ADQyd__Rsd_0_8ComparedQyd_0_AERSr0_lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV"},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/sorted(using:)-73724":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-73724","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/sorted(using:)-73724","title":"sorted(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
new file mode 100644
index 000000000..538e61f15
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
@@ -0,0 +1 @@
+{"metadata":{"externalID":"s:STsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSays10ArraySliceVy7ElementQzGGSi_S2bAHKXEtKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"split","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":", "},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"whereSeparator"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":">]"}],"role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"split","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":" = Int.max, ","kind":"text"},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":" = true, ","kind":"text"},{"kind":"externalParam","text":"whereSeparator"},{"kind":"text","text":" "},{"text":"isSeparator","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":">]"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},"kind":"symbol","sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},{"text":".","type":"text"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"split"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":", "},{"text":"whereSeparator","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"preciseIdentifier":"s:s10ArraySliceV","kind":"typeIdentifier","text":"ArraySlice"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":">]","kind":"text"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/starts(with:by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/starts(with:by:).json
new file mode 100644
index 000000000..a552435fe
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/starts(with:by:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/starts(with:by:)","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"externalID":"s:STsE6starts4with2bySbqd___Sb7ElementQz_ADQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","extendedModule":"Swift","role":"symbol","title":"starts(with:by:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"with"},{"text":" ","kind":"text"},{"text":"possiblePrefix","kind":"internalParam"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"kind":"text","text":" "},{"kind":"internalParam","text":"areEquivalent"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","text":"Sequence","preciseIdentifier":"s:ST"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/starts(with:by:)"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.starts(with:by:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/starts(with:by:)":{"type":"topic","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/starts(with:by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/starts(with:by:)","kind":"symbol","title":"starts(with:by:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/suffix(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/suffix(_:).json
new file mode 100644
index 000000000..3c8a3e901
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/suffix(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/suffix(_:)"]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.suffix(_:)"},{"type":"text","text":"."}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/suffix(_:)"},"schemaVersion":{"patch":0,"minor":3,"major":0},"metadata":{"title":"suffix(_:)","externalID":"s:STsE6suffixySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"suffix"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"extendedModule":"Swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"maxLength"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/suffix(_:)":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/suffix(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/suffix(_:)","title":"suffix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/underestimatedcount.json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/underestimatedcount.json
new file mode 100644
index 000000000..0e09ae73e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/underestimatedcount.json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.underestimatedCount","type":"codeVoice"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"metadata":{"extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE19underestimatedCountSivp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","role":"symbol","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"title":"underestimatedCount","symbolKind":"property"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"underestimatedCount"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/underestimatedCount","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/underestimatedcount"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/underestimatedCount":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/underestimatedcount","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/underestimatedCount","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"underestimatedCount","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/withcontiguousstorageifavailable(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/withcontiguousstorageifavailable(_:).json
new file mode 100644
index 000000000..b3edc132c
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/withcontiguousstorageifavailable(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/withcontiguousstorageifavailable(_:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"text":"<","kind":"text"},{"text":"R","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"body","kind":"internalParam"},{"text":": (","kind":"text"},{"text":"UnsafeBufferPointer","preciseIdentifier":"s:SR","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":">) ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.withContiguousStorageIfAvailable(_:)"},{"type":"text","text":"."}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/withContiguousStorageIfAvailable(_:)","interfaceLanguage":"swift"},"sections":[],"metadata":{"symbolKind":"method","title":"withContiguousStorageIfAvailable(_:)","extendedModule":"Swift","externalID":"s:STsE32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF13RangeIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"R"},{"kind":"text","text":">(("},{"preciseIdentifier":"s:SR","text":"UnsafeBufferPointer","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":">) "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator/withContiguousStorageIfAvailable(_:)":{"kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/withcontiguousstorageifavailable(_:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator\/withContiguousStorageIfAvailable(_:)","title":"withContiguousStorageIfAvailable(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"R"},{"text":">((","kind":"text"},{"text":"UnsafeBufferPointer","kind":"typeIdentifier","preciseIdentifier":"s:SR"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":">) ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageRangeIterator":{"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageRangeIterator","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"TextLineStorageRangeIterator"}],"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageRangeIterator","kind":"identifier"}],"conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"code":"Data","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}]},"title":"TextLineStorage.TextLineStorageRangeIterator","type":"topic"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator.json
new file mode 100644
index 000000000..d9a351b6e
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"relationshipsSections":[{"title":"Conforms To","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/St","doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP","doc:\/\/codeedittextview.CodeEditTextView\/ST"],"type":"conformsTo","kind":"relationships"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLineStorageYIterator"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"kind":"symbol","topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/next()"],"title":"Instance Methods","anchor":"Instance-Methods"},{"anchor":"Default-Implementations","title":"Default Implementations","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/LazySequenceProtocol-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/Sequence-Implementations"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}],"title":"TextLineStorage.TextLineStorageYIterator","role":"symbol","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}]},"roleHeading":"Structure","extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLineStorageYIterator"}],"symbolKind":"struct"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/LazySequenceProtocol-Implementations":{"title":"LazySequenceProtocol Implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/LazySequenceProtocol-Implementations","abstract":[],"type":"topic","kind":"article","role":"collectionGroup","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lazysequenceprotocol-implementations"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/Sequence-Implementations":{"type":"topic","kind":"article","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/Sequence-Implementations","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sequence-implementations","title":"Sequence Implementations","role":"collectionGroup","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/s20LazySequenceProtocolP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s20LazySequenceProtocolP","title":"Swift.LazySequenceProtocol","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/ST":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/ST","title":"Swift.Sequence","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/next()":{"title":"next()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/next()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/next()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/St":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/St","title":"Swift.IteratorProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/allsatisfy(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/allsatisfy(_:).json
new file mode 100644
index 000000000..cf51a8763
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/allsatisfy(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/allsatisfy(_:)"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/allSatisfy(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.allSatisfy(_:)","type":"codeVoice"},{"text":".","type":"text"}],"metadata":{"title":"allSatisfy(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"kind":"text","text":"(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"externalID":"s:STsE10allSatisfyyS2b7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"allSatisfy","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"predicate"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/allSatisfy(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/allsatisfy(_:)","kind":"symbol","role":"symbol","title":"allSatisfy(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/allSatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-1cc9t.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-1cc9t.json
new file mode 100644
index 000000000..5df306ccb
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-1cc9t.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPsE10compactMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"compactMap(_:)","symbolKind":"method"},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-1cc9t"},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.compactMap(_:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"compactMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?>>, ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-1cc9t"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/compactMap(_:)-1cc9t":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-1cc9t","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-1cc9t","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"role":"symbol","type":"topic","title":"compactMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-9fi1l.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-9fi1l.json
new file mode 100644
index 000000000..fbbf033dd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-9fi1l.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-9fi1l","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"]"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-9fi1l"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"externalID":"s:STsE10compactMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"compactMap(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"extendedModule":"Swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.compactMap(_:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/compactMap(_:)-9fi1l":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-9fi1l","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-9fi1l","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"title":"compactMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compare(_:_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compare(_:_:).json
new file mode 100644
index 000000000..bf86ce4aa
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compare(_:_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compare","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":"."},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"},{"text":") -> ","kind":"text"},{"text":"ComparisonResult","preciseIdentifier":"c:@E@NSComparisonResult","kind":"typeIdentifier"},{"kind":"text","text":" "},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"SortComparator","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":" == ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compare(_:_:)"]}],"sections":[],"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier","text":"Compared"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"ComparisonResult","preciseIdentifier":"c:@E@NSComparisonResult"}],"platforms":[{"beta":false,"unavailable":false,"name":"iOS","deprecated":false,"introducedAt":"15.0"},{"introducedAt":"12.0","unavailable":false,"deprecated":false,"name":"macOS","beta":false},{"beta":false,"introducedAt":"15.0","deprecated":false,"unavailable":false,"name":"tvOS"},{"name":"watchOS","introducedAt":"8.0","beta":false,"unavailable":false,"deprecated":false}],"externalID":"s:ST10FoundationE7compareySo18NSComparisonResultV8ComparedQyd___AFtAA14SortComparatorRd__7ElementQzRsd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","role":"symbol","extendedModule":"Swift","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"compare(_:_:)","symbolKind":"method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compare(_:_:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.compare(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/compare(_:_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compare(_:_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"kind":"text","text":", "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult"}],"type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compare(_:_:)","title":"compare(_:_:)","abstract":[],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/contains(where:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/contains(where:).json
new file mode 100644
index 000000000..a580b7b50
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/contains(where:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.contains(where:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"contains","kind":"identifier"},{"kind":"text","text":"("},{"text":"where","kind":"externalParam"},{"kind":"text","text":" "},{"text":"predicate","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]}]}],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"contains"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"extendedModule":"Swift","externalID":"s:STsE8contains5whereS2b7ElementQzKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"contains(where:)","symbolKind":"method"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/contains(where:)"},"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/contains(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/contains(where:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/contains(where:)","kind":"symbol","role":"symbol","title":"contains(where:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"contains","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/contains(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/count(where:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/count(where:).json
new file mode 100644
index 000000000..5b71175c2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/count(where:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.count(where:)"},{"text":".","type":"text"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"count"},{"kind":"text","text":"<"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":" "},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"text":"E","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:s5ErrorP","kind":"typeIdentifier","text":"Error"}],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/count(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/count(where:)","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"count"},{"kind":"text","text":"<"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"externalID":"s:STsE5count5whereSiSb7ElementQzqd__YKXE_tqd__YKs5ErrorRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","symbolKind":"method","title":"count(where:)","extendedModule":"Swift","role":"symbol"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/count(where:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/count(where:)","kind":"symbol","role":"symbol","title":"count(where:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"count","kind":"identifier"},{"text":"<","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/count(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/drop(while:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/drop(while:).json
new file mode 100644
index 000000000..2609269f1
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/drop(while:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"drop"},{"text":"(","kind":"text"},{"text":"while","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":">"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","title":"drop(while:)","roleHeading":"Instance Method","extendedModule":"Swift","symbolKind":"method","externalID":"s:s20LazySequenceProtocolPsE4drop5whiles0a9DropWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"drop","kind":"identifier"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"predicate"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV","text":"LazyDropWhileSequence"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/drop(while:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/drop(while:)","interfaceLanguage":"swift"},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.drop(while:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/drop(while:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/drop(while:)","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/drop(while:)","title":"drop(while:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/dropfirst(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/dropfirst(_:).json
new file mode 100644
index 000000000..fada9d414
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/dropfirst(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"dropFirst","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"k","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":" = 1) -> ","kind":"text"},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/dropfirst(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropFirst(_:)","interfaceLanguage":"swift"},"metadata":{"externalID":"s:STsE9dropFirstys04DropB8SequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"method","extendedModule":"Swift","title":"dropFirst(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"dropFirst"},{"kind":"text","text":"("},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s17DropFirstSequenceV","kind":"typeIdentifier","text":"DropFirstSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"roleHeading":"Instance Method","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"sections":[],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.dropFirst(_:)"},{"type":"text","text":"."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/dropFirst(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropFirst(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/dropfirst(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"title":"dropFirst(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/droplast(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/droplast(_:).json
new file mode 100644
index 000000000..0162f3fb9
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/droplast(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"dropLast"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"k","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":" = 1) -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/droplast(_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropLast(_:)","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"kind":"text","text":") -> ["},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"externalID":"s:STsE8dropLastySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","title":"dropLast(_:)","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"sections":[],"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.dropLast(_:)","type":"codeVoice"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/dropLast(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/droplast(_:)","kind":"symbol","role":"symbol","title":"dropLast(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropLast(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elements.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elements.json
new file mode 100644
index 000000000..3d3a410be
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elements.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elements"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.elements"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/elements"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"sections":[],"metadata":{"externalID":"s:s20LazySequenceProtocolPs8ElementsQzRszrlE8elementsxvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"elements","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"}],"roleHeading":"Instance Property","role":"symbol","conformance":{"availabilityPrefix":[{"type":"text","text":"Available when"}],"constraints":[{"code":"Self","type":"codeVoice"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"Self.Elements"},{"type":"text","text":"."}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"property","title":"elements"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"elements"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}]}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/elements":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elements","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"elements","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/elements","title":"elements","conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"Self.Elements"},{"text":".","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elementsequal(_:by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elementsequal(_:by:).json
new file mode 100644
index 000000000..b4f049e41
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elementsequal(_:by:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elementsEqual(_:by:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"elementsEqual"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"other"},{"text":": ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"kind":"text","text":" "},{"text":"areEquivalent","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":" ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"}]}],"kind":"declarations"}],"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.elementsEqual(_:by:)","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/elementsequal(_:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"text":">(","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"externalID":"s:STsE13elementsEqual_2bySbqd___Sb7ElementQz_ACQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","role":"symbol","title":"elementsEqual(_:by:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/elementsEqual(_:by:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/elementsequal(_:by:)","kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elementsEqual(_:by:)","title":"elementsEqual(_:by:)","abstract":[],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/enumerated().json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/enumerated().json
new file mode 100644
index 000000000..35e3b9985
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/enumerated().json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/enumerated()"]}],"metadata":{"role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift","symbolKind":"method","title":"enumerated()","externalID":"s:STsE10enumerateds18EnumeratedSequenceVyxGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18EnumeratedSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":">"}],"roleHeading":"Instance Method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"enumerated","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","preciseIdentifier":"s:s18EnumeratedSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}],"platforms":["macOS"]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/enumerated()"},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.enumerated()","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/enumerated()":{"abstract":[],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/enumerated()","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/enumerated()","title":"enumerated()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18EnumeratedSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/filter(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/filter(_:).json
new file mode 100644
index 000000000..e7d3f07e3
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/filter(_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/filter(_:)"]}],"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.filter(_:)"},{"text":".","type":"text"}],"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"filter"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"isIncluded","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyFilterSequence","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":">","kind":"text"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"externalID":"s:s20LazySequenceProtocolPsE6filterys0a6FilterB0Vy8ElementsQzGSb7ElementQzcF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"filter","kind":"identifier"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}],"title":"filter(_:)","extendedModule":"Swift"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/filter(_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/filter(_:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/filter(_:)","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"kind":"text","text":"(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/filter(_:)","title":"filter(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/first(where:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/first(where:).json
new file mode 100644
index 000000000..31af3e977
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/first(where:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"first(where:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"text":"where","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"?"}],"externalID":"s:STsE5first5where7ElementQzSgSbADKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/first(where:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"where"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.first(where:)"},{"text":".","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/first(where:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/first(where:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/first(where:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/first(where:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"abstract":[],"title":"first(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-1iizf.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-1iizf.json
new file mode 100644
index 000000000..b9981ce9a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-1iizf.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.flatMap(_:)","type":"codeVoice"},{"text":".","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-1iizf","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"text":">(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"] ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":" : ","kind":"text"},{"preciseIdentifier":"s:ST","text":"Sequence","kind":"typeIdentifier"}],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-1iizf"]}],"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"externalID":"s:STsE7flatMapySay7ElementQyd__Gqd__ABQzKXEKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","role":"symbol","title":"flatMap(_:)","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-1iizf":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-1iizf","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-1iizf","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"title":"flatMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-3buba.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-3buba.json
new file mode 100644
index 000000000..684eec5d8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-3buba.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-3buba"]}],"deprecationSummary":[{"inlineContent":[{"type":"text","text":"Please use compactMap(_:) for the case where closure returns an optional value"}],"type":"paragraph"}],"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.flatMap(_:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"platforms":[{"deprecatedAt":"4.1","deprecated":false,"message":"Please use compactMap(_:) for the case where closure returns an optional value","renamed":"compactMap(_:)","unavailable":false,"beta":false,"name":"Swift"}],"symbolKind":"method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE7flatMapySayqd__Gqd__Sg7ElementQzKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","role":"symbol","extendedModule":"Swift","title":"flatMap(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"]","kind":"text"}],"roleHeading":"Instance Method"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-3buba","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-3buba":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-3buba","kind":"symbol","role":"symbol","title":"flatMap(_:)","deprecated":true,"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-3buba"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-8ow0q.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-8ow0q.json
new file mode 100644
index 000000000..f5a2054dd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-8ow0q.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"@escaping"},{"kind":"text","text":" ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") -> "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15FlattenSequenceV","kind":"typeIdentifier","text":"FlattenSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":">>> ","kind":"text"},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST","text":"Sequence"}],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-8ow0q"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-8ow0q"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"title":"flatMap(_:)","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aB0Vys07FlattenB0Vys0aeB0Vy8ElementsQzqd__GGGqd__7ElementQzcSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"SegmentOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") -> "},{"text":"LazySequence","kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV"},{"kind":"text","text":"<"},{"text":"FlattenSequence","preciseIdentifier":"s:s15FlattenSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"kind":"text","text":">>>"}],"extendedModule":"Swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"LazySequenceProtocol.flatMap(_:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-8ow0q":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-8ow0q","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-8ow0q","title":"flatMap(_:)","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>>","kind":"text"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-dsr9.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-dsr9.json
new file mode 100644
index 000000000..636778281
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-dsr9.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"platforms":[{"message":"Please use compactMap(_:) for the case where closure returns an optional value","deprecated":false,"name":"Swift","deprecatedAt":"4.1","unavailable":false,"beta":false,"renamed":"compactMap(_:)"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"title":"flatMap(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"text":"ElementOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"extendedModule":"Swift","roleHeading":"Instance Method","externalID":"s:s20LazySequenceProtocolPsE7flatMapys0aeB0Vys0a6FilterB0VyAEy8ElementsQzqd__SgGGqd__GAJ7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","symbolKind":"method"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-dsr9"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"transform","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s18LazyFilterSequenceV","kind":"typeIdentifier","text":"LazyFilterSequence"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":">","kind":"text"}],"platforms":["macOS"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-dsr9","interfaceLanguage":"swift"},"sections":[],"kind":"symbol","deprecationSummary":[{"inlineContent":[{"text":"Please use compactMap(_:) for the case where closure returns an optional value","type":"text"}],"type":"paragraph"}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.flatMap(_:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-dsr9":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-dsr9","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-dsr9","title":"flatMap(_:)","abstract":[],"deprecated":true,"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/foreach(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/foreach(_:).json
new file mode 100644
index 000000000..6bdd3e088
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/foreach(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.forEach(_:)","type":"codeVoice"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/foreach(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"forEach","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"body"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:s4Voida","text":"Void","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"}]}]}],"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"forEach(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"forEach"},{"kind":"text","text":"(("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Void","kind":"typeIdentifier","preciseIdentifier":"s:s4Voida"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"}],"extendedModule":"Swift","externalID":"s:STsE7forEachyyy7ElementQzKXEKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","roleHeading":"Instance Method","symbolKind":"method"},"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/forEach(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/forEach(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/forEach(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/foreach(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"forEach"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:s4Voida","kind":"typeIdentifier","text":"Void"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}],"title":"forEach(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/formatted(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/formatted(_:).json
new file mode 100644
index 000000000..de79f5400
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/formatted(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"formatted","kind":"identifier"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":") -> "},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"title":"formatted(_:)","roleHeading":"Instance Method","platforms":[{"unavailable":false,"deprecated":false,"introducedAt":"15.0","beta":false,"name":"iOS"},{"deprecated":false,"introducedAt":"12.0","name":"macOS","unavailable":false,"beta":false},{"name":"tvOS","beta":false,"introducedAt":"15.0","unavailable":false,"deprecated":false},{"deprecated":false,"unavailable":false,"name":"watchOS","introducedAt":"8.0","beta":false}],"externalID":"s:ST10FoundationE9formattedy12FormatOutputQyd__qd__0C5InputQyd__RszAA0C5StyleRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","symbolKind":"method","role":"symbol"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.formatted(_:)"},{"text":".","type":"text"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"formatted"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"style"},{"kind":"text","text":": "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"FormatOutput","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B5InputQa","text":"FormatInput"},{"kind":"text","text":", "},{"text":"S","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP","text":"FormatStyle"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/formatted(_:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/formatted(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/formatted(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/formatted(_:)","kind":"symbol","role":"symbol","title":"formatted(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"formatted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"S"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/formatted(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazy.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazy.json
new file mode 100644
index 000000000..3344e5a96
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazy.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"lazy","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"languages":["swift"]}]}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lazy"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lazy","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lazy","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"}],"externalID":"s:s20LazySequenceProtocolPssAA8ElementsRpzrlE4lazyADvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"code":"Elements","type":"codeVoice"},{"text":" conforms to ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol"},{"text":".","type":"text"}],"conformancePrefix":[{"type":"text","text":"Conforms when"}]},"role":"symbol","title":"lazy","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.lazy","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/lazy":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lazy","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lazy","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lazy","title":"lazy","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Elements"},{"type":"text","text":" conforms to "},{"code":"LazySequenceProtocol","type":"codeVoice"},{"text":".","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazysequenceprotocol-implementations.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazysequenceprotocol-implementations.json
new file mode 100644
index 000000000..c45d998d8
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazysequenceprotocol-implementations.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elements","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lazy"],"title":"Instance Properties","anchor":"Instance-Properties"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-1cc9t","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/drop(while:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/filter(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-8ow0q","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-dsr9","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-131bq","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(while:)"],"anchor":"Instance-Methods","title":"Instance Methods","generated":true}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"LazySequenceProtocol Implementations","roleHeading":"API Collection","role":"collectionGroup"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/LazySequenceProtocol-Implementations"},"kind":"article","sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lazysequenceprotocol-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/elements":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elements","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"elements","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/elements","title":"elements","conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"Self.Elements"},{"text":".","type":"text"}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-8ow0q":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-8ow0q","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-8ow0q","title":"flatMap(_:)","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"flatMap"},{"kind":"text","text":"<"},{"text":"SegmentOfResult","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s12LazySequenceV","text":"LazySequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15FlattenSequenceV","text":"FlattenSequence"},{"text":"<","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":", ","kind":"text"},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":">>>","kind":"text"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/lazy":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lazy","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lazy","kind":"identifier"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lazy","title":"lazy","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Elements"},{"type":"text","text":" conforms to "},{"code":"LazySequenceProtocol","type":"codeVoice"},{"text":".","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}]},"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-dsr9":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-dsr9","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-dsr9","title":"flatMap(_:)","abstract":[],"deprecated":true,"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flatMap"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","kind":"typeIdentifier","text":"LazyMapSequence"},{"text":"<","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ElementOfResult"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":">","kind":"text"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/filter(_:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/filter(_:)","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"filter"},{"kind":"text","text":"(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyFilterSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/filter(_:)","title":"filter(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/prefix(while:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(while:)","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/prefix(while:)","title":"prefix(while:)","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/drop(while:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/drop(while:)","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"drop","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyDropWhileSequence","kind":"typeIdentifier","preciseIdentifier":"s:s21LazyDropWhileSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/drop(while:)","title":"drop(while:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/map(_:)-131bq":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-131bq","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"U"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/map(_:)-131bq","title":"map(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/compactMap(_:)-1cc9t":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-1cc9t","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-1cc9t","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"ElementOfResult"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"ElementOfResult"},{"text":"?) -> ","kind":"text"},{"text":"LazyMapSequence","kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:s18LazyFilterSequenceV","text":"LazyFilterSequence"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier","text":"Elements"},{"kind":"text","text":", "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?>>, "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":">"}],"role":"symbol","type":"topic","title":"compactMap(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lexicographicallyprecedes(_:by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lexicographicallyprecedes(_:by:).json
new file mode 100644
index 000000000..69e1fb217
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lexicographicallyprecedes(_:by:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lexicographicallyPrecedes(_:by:)","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lexicographicallyprecedes(_:by:)"]}],"sections":[],"metadata":{"roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift","externalID":"s:STsE25lexicographicallyPrecedes_2bySbqd___Sb7ElementQz_ADtKXEtKSTRd__ACQyd__ADRSlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","role":"symbol","title":"lexicographicallyPrecedes(_:by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lexicographicallyPrecedes","kind":"identifier"},{"text":"<","kind":"text"},{"text":"OtherSequence","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"symbolKind":"method"},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.lexicographicallyPrecedes(_:by:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"lexicographicallyPrecedes"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"other","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areInIncreasingOrder"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":" ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","text":"Sequence","preciseIdentifier":"s:ST"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":" == ","kind":"text"},{"kind":"typeIdentifier","text":"OtherSequence"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/lexicographicallyPrecedes(_:by:)":{"title":"lexicographicallyPrecedes(_:by:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lexicographicallyprecedes(_:by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lexicographicallyPrecedes(_:by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lexicographicallyPrecedes"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/makeiterator().json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/makeiterator().json
new file mode 100644
index 000000000..64a5eaf73
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/makeiterator().json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"makeIterator","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"Self"}],"extendedModule":"Swift","conformance":{"conformancePrefix":[{"text":"Conforms when","type":"text"}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"code":"Self","type":"codeVoice"},{"type":"text","text":" is "},{"type":"codeVoice","code":"Self.Iterator"},{"text":".","type":"text"}]},"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STs8IteratorSTQzRszrlE04makeA0xyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","symbolKind":"method","roleHeading":"Instance Method","title":"makeIterator()"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"makeIterator","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/makeIterator()"},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/makeiterator()"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.makeIterator()","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/makeIterator()":{"conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/makeiterator()","kind":"symbol","role":"symbol","title":"makeIterator()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"makeIterator","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/makeIterator()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-131bq.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-131bq.json
new file mode 100644
index 000000000..120d2f7d4
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-131bq.json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"LazySequenceProtocol.map(_:)"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/map(_:)-131bq"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"U"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"transform","kind":"internalParam"},{"kind":"text","text":": "},{"text":"@escaping","kind":"keyword"},{"kind":"text","text":" ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") -> "},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"U"},{"kind":"text","text":">"}]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-131bq"},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"map"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"U"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"U"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:s15LazyMapSequenceV","text":"LazyMapSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":", "},{"text":"U","kind":"typeIdentifier"},{"text":">","kind":"text"}],"symbolKind":"method","title":"map(_:)","extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPsE3mapys0a3MapB0Vy8ElementsQzqd__Gqd__7ElementQzclF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","roleHeading":"Instance Method"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/map(_:)-131bq":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-131bq","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"U"},{"text":">((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") -> "},{"text":"U","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"LazyMapSequence","preciseIdentifier":"s:s15LazyMapSequenceV"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"text":", ","kind":"text"},{"text":"U","kind":"typeIdentifier"},{"kind":"text","text":">"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/map(_:)-131bq","title":"map(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-1ioz9.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-1ioz9.json
new file mode 100644
index 000000000..40cb07a76
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-1ioz9.json
@@ -0,0 +1 @@
+{"metadata":{"title":"map(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"externalID":"s:STsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}]},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-1ioz9"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"map","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":", "},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"transform"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"text":") -> [","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":"] "},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"E","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s5ErrorP","text":"Error"}],"platforms":["macOS"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.map(_:)"},{"text":".","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/map(_:)-1ioz9"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/map(_:)-1ioz9":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-1ioz9","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/map(_:)-1ioz9","type":"topic","title":"map(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/max(by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/max(by:).json
new file mode 100644
index 000000000..28d25aef2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/max(by:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/max(by:)"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"max","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"areInIncreasingOrder","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/max(by:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"kind":"symbol","metadata":{"roleHeading":"Instance Method","extendedModule":"Swift","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE3max2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"max(by:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"max"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"?"}],"role":"symbol","symbolKind":"method"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.max(by:)","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/max(by:)":{"title":"max(by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/max(by:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/max(by:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/min(by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/min(by:).json
new file mode 100644
index 000000000..1156407b5
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/min(by:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/min(by:)"]}],"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.min(by:)"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@warn_unqualified_access","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"text":"areInIncreasingOrder","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"?","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/min(by:)"},"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","metadata":{"title":"min(by:)","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"min"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"?","kind":"text"}],"role":"symbol","symbolKind":"method","externalID":"s:STsE3min2by7ElementQzSgSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"extendedModule":"Swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/min(by:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/min(by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/min(by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"title":"min(by:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/next().json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/next().json
new file mode 100644
index 000000000..99588b3c6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/next().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"mutating","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","text":"TextLinePosition","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"platforms":["macOS"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"IteratorProtocol.next()","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/next()"]}],"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV","kind":"typeIdentifier","text":"TextLinePosition"},{"text":"?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV4nextAC0cE8PositionVyx_GSgyF","title":"next()","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/next()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLinePosition":{"kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextLinePosition"}],"navigatorTitle":[{"kind":"identifier","text":"TextLinePosition"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLinePosition","type":"topic","conformance":{"availabilityPrefix":[{"text":"Available when","type":"text"}],"constraints":[{"type":"codeVoice","code":"Data"},{"type":"text","text":" conforms to "},{"type":"codeVoice","code":"Identifiable"},{"type":"text","text":"."}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]}},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/next()":{"title":"next()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/next()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"next","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"TextLinePosition","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC0cE8PositionV"},{"text":"?","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/next()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(_:).json
new file mode 100644
index 000000000..0b4013850
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(_:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":">"}],"externalID":"s:STsE6prefixys14PrefixSequenceVyxGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","title":"prefix(_:)","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/prefix(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.prefix(_:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"maxLength"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"PrefixSequence","preciseIdentifier":"s:s14PrefixSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/prefix(_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/prefix(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(_:)","title":"prefix(_:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(while:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(while:).json
new file mode 100644
index 000000000..1d35d8785
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(while:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(while:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"extendedModule":"Swift","externalID":"s:s20LazySequenceProtocolPsE6prefix5whiles0a11PrefixWhileB0Vy8ElementsQzGSb7ElementQzc_tF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","role":"symbol","title":"prefix(while:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prefix"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") -> ","kind":"text"},{"text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements"},{"text":">","kind":"text"}],"symbolKind":"method"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prefix","kind":"identifier"},{"kind":"text","text":"("},{"text":"while","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"predicate","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"@escaping"},{"text":" (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","kind":"typeIdentifier"},{"text":">","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/prefix(while:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"Inherited from "},{"code":"LazySequenceProtocol.prefix(while:)","type":"codeVoice"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/prefix(while:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(while:)","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/prefix(while:)","title":"prefix(while:)","abstract":[],"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"while"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Elements","kind":"typeIdentifier","preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"LazyPrefixWhileSequence","preciseIdentifier":"s:s23LazyPrefixWhileSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:s20LazySequenceProtocolP8ElementsQa","text":"Elements","kind":"typeIdentifier"},{"kind":"text","text":">"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/publisher.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/publisher.json
new file mode 100644
index 000000000..8d3f999dd
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/publisher.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/publisher","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"publisher"},{"text":": ","kind":"text"},{"text":"Publishers","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Sequence","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:s5NeverO","kind":"typeIdentifier","text":"Never"},{"text":"> { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.publisher"},{"type":"text","text":"."}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"title":"publisher","extendedModule":"Swift","platforms":[{"beta":false,"name":"iOS","deprecated":false,"introducedAt":"13.0","unavailable":false},{"name":"macOS","introducedAt":"10.15","deprecated":false,"unavailable":false,"beta":false},{"name":"tvOS","beta":false,"deprecated":false,"introducedAt":"13.0","unavailable":false},{"deprecated":false,"unavailable":false,"name":"watchOS","beta":false,"introducedAt":"6.0"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:ST7CombineE9publisherAA10PublishersO8SequenceVy_xs5NeverOGvp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","role":"symbol","roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"publisher"},{"text":": ","kind":"text"},{"text":"Publishers","preciseIdentifier":"s:7Combine10PublishersO","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Sequence","kind":"typeIdentifier","preciseIdentifier":"s:7Combine10PublishersO8SequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"preciseIdentifier":"s:s5NeverO","text":"Never","kind":"typeIdentifier"},{"kind":"text","text":">"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/publisher"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/publisher":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/publisher","title":"publisher","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/publisher","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"publisher","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:7Combine10PublishersO","text":"Publishers","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:7Combine10PublishersO8SequenceV","kind":"typeIdentifier","text":"Sequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"preciseIdentifier":"s:s5NeverO","text":"Never","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(_:_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(_:_:).json
new file mode 100644
index 000000000..4ce267f64
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(_:_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.reduce(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"initialResult","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"nextPartialResult"},{"kind":"text","text":": ("},{"text":"Result","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"platforms":["macOS"],"languages":["swift"]}]}],"sections":[],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"externalID":"s:STsE6reduceyqd__qd___qd__qd___7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"roleHeading":"Instance Method","title":"reduce(_:_:)","symbolKind":"method"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reduce(_:_:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(_:_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/reduce(_:_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(_:_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reduce(_:_:)","title":"reduce(_:_:)","abstract":[],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(into:_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(into:_:).json
new file mode 100644
index 000000000..1ecd85ab1
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(into:_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Result"},{"kind":"text","text":">("},{"kind":"externalParam","text":"into"},{"text":" ","kind":"text"},{"text":"initialResult","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"updateAccumulatingResult"},{"text":": (","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> ()) "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reduce(into:_:)"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","sections":[],"metadata":{"title":"reduce(into:_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"reduce","kind":"identifier"},{"text":"<","kind":"text"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> ()) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"externalID":"s:STsE6reduce4into_qd__qd__n_yqd__z_7ElementQztKXEtKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(into:_:)","interfaceLanguage":"swift"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.reduce(into:_:)"},{"text":".","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/reduce(into:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(into:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reduce(into:_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"title":"reduce(into:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reversed().json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reversed().json
new file mode 100644
index 000000000..5e23d8c9a
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reversed().json
@@ -0,0 +1 @@
+{"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"symbolKind":"method","title":"reversed()","extendedModule":"Swift","externalID":"s:STsE8reversedSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"role":"symbol","roleHeading":"Instance Method"},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.reversed()","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reversed()"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reversed"},{"kind":"text","text":"() -> ["},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reversed()","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/reversed()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reversed()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reversed()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}],"title":"reversed()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sequence-implementations.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sequence-implementations.json
new file mode 100644
index 000000000..5eb57d7f2
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sequence-implementations.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"Sequence Implementations","roleHeading":"API Collection","role":"collectionGroup"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sequence-implementations"]}],"kind":"article","topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/publisher","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/underestimatedCount"],"generated":true,"anchor":"Instance-Properties","title":"Instance Properties"},{"title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/allSatisfy(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-9fi1l","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compare(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/contains(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/count(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropFirst(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropLast(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elementsEqual(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/enumerated()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/first(where:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-1iizf","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-3buba","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/forEach(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/formatted(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lexicographicallyPrecedes(_:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/makeIterator()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-1ioz9","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/max(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/min(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(_:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(into:_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reversed()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled(using:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-4zxqp","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-rito","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/starts(with:by:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/suffix(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/withContiguousStorageIfAvailable(_:)"],"generated":true,"anchor":"Instance-Methods"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/Sequence-Implementations","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/dropLast(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/droplast(_:)","kind":"symbol","role":"symbol","title":"dropLast(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"dropLast","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropLast(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/prefix(_:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/prefix(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/prefix(_:)","title":"prefix(_:)","kind":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"prefix","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s14PrefixSequenceV","text":"PrefixSequence","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/suffix(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/suffix(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/suffix(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}],"title":"suffix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/makeIterator()":{"conformance":{"constraints":[{"type":"codeVoice","code":"Self"},{"type":"text","text":" is "},{"code":"Self.Iterator","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"text":"Available when","type":"text"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/makeiterator()","kind":"symbol","role":"symbol","title":"makeIterator()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"makeIterator","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/makeIterator()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-1iizf":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-1iizf","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-1iizf","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"SegmentOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"SegmentOfResult"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"SegmentOfResult","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}],"title":"flatMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/lexicographicallyPrecedes(_:by:)":{"title":"lexicographicallyPrecedes(_:by:)","abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lexicographicallyprecedes(_:by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/lexicographicallyPrecedes(_:by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lexicographicallyPrecedes"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"kind":"typeIdentifier","text":"OtherSequence"},{"kind":"text","text":", "},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/starts(with:by:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/starts(with:by:)","kind":"symbol","role":"symbol","title":"starts(with:by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/starts(with:by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/min(by:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/min(by:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/min(by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"min","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"title":"min(by:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/elementsEqual(_:by:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"elementsEqual","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"OtherSequence"},{"kind":"text","text":">("},{"text":"OtherSequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"by"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":", ","kind":"text"},{"text":"OtherSequence","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/elementsequal(_:by:)","kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/elementsEqual(_:by:)","title":"elementsEqual(_:by:)","abstract":[],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/dropFirst(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/dropFirst(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/dropfirst(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"dropFirst","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"DropFirstSequence","kind":"typeIdentifier","preciseIdentifier":"s:s17DropFirstSequenceV"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}],"title":"dropFirst(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/flatMap(_:)-3buba":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-3buba","kind":"symbol","role":"symbol","title":"flatMap(_:)","deprecated":true,"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"flatMap","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"ElementOfResult"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/flatMap(_:)-3buba"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/map(_:)-1ioz9":{"abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/map(_:)-1ioz9","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"map"},{"kind":"text","text":"<"},{"text":"T","kind":"genericParameter"},{"text":", ","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"E"},{"kind":"text","text":") -> "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":"]","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/map(_:)-1ioz9","type":"topic","title":"map(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/sorted(by:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(by:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(by:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"]","kind":"text"}],"title":"sorted(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/publisher":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/publisher","title":"publisher","type":"topic","kind":"symbol","abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/publisher","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"publisher","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:7Combine10PublishersO","text":"Publishers","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:7Combine10PublishersO8SequenceV","kind":"typeIdentifier","text":"Sequence"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"preciseIdentifier":"s:s5NeverO","text":"Never","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/withContiguousStorageIfAvailable(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/withContiguousStorageIfAvailable(_:)","type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/withcontiguousstorageifavailable(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"text":"<","kind":"text"},{"text":"R","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"UnsafeBufferPointer","kind":"typeIdentifier","preciseIdentifier":"s:SR"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"title":"withContiguousStorageIfAvailable(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/contains(where:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/contains(where:)","kind":"symbol","role":"symbol","title":"contains(where:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"contains","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/contains(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/sorted(using:)-rito":{"abstract":[],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-rito","role":"symbol","kind":"symbol","title":"sorted(using:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(using:)-rito"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/enumerated()":{"abstract":[],"kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/enumerated()","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/enumerated()","title":"enumerated()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"enumerated"},{"kind":"text","text":"() -> "},{"text":"EnumeratedSequence","kind":"typeIdentifier","preciseIdentifier":"s:s18EnumeratedSequenceV"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/sorted(using:)-4zxqp":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-4zxqp","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(using:)-4zxqp","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"title":"sorted(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/max(by:)":{"title":"max(by:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/max(by:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/max(by:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"max","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/count(where:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/count(where:)","kind":"symbol","role":"symbol","title":"count(where:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"count","kind":"identifier"},{"text":"<","kind":"text"},{"text":"E","kind":"genericParameter"},{"text":">(","kind":"text"},{"text":"where","kind":"externalParam"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"text":"E","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/count(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/compactMap(_:)-9fi1l":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compactMap(_:)-9fi1l","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-9fi1l","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"compactMap","kind":"identifier"},{"kind":"text","text":"<"},{"text":"ElementOfResult","kind":"genericParameter"},{"kind":"text","text":">(("},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"ElementOfResult","kind":"typeIdentifier"},{"kind":"text","text":"?) "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ElementOfResult","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"title":"compactMap(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/forEach(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/forEach(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/foreach(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"forEach"},{"text":"((","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:s4Voida","kind":"typeIdentifier","text":"Void"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"}],"title":"forEach(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"split"},{"kind":"text","text":"("},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"text":"whereSeparator","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ArraySlice","preciseIdentifier":"s:s10ArraySliceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":">]"}],"title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/shuffled()":{"role":"symbol","abstract":[],"title":"shuffled()","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/shuffled()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled()","kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/allSatisfy(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/allsatisfy(_:)","kind":"symbol","role":"symbol","title":"allSatisfy(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allSatisfy"},{"text":"((","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/allSatisfy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/reversed()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reversed()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reversed()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reversed"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}],"title":"reversed()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/formatted(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/formatted(_:)","kind":"symbol","role":"symbol","title":"formatted(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"formatted","kind":"identifier"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"S","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"S"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation11FormatStyleP0B6OutputQa","text":"FormatOutput"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/formatted(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/compare(_:_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/compare(_:_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"compare"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"Comparator","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","text":"Compared"},{"kind":"text","text":", "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSComparisonResult","text":"ComparisonResult"}],"type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compare(_:_:)","title":"compare(_:_:)","abstract":[],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/shuffled(using:)":{"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/shuffled(using:)","title":"shuffled(using:)","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/first(where:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/first(where:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/first(where:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"first","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"where"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"?","kind":"text"}],"abstract":[],"title":"first(where:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/reduce(_:_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(_:_:)","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reduce(_:_:)","title":"reduce(_:_:)","abstract":[],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"reduce","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"Result"},{"text":">(","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":", (","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Result","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"Result"}],"kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/reduce(into:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/reduce(into:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/reduce(into:_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"reduce"},{"kind":"text","text":"<"},{"text":"Result","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"into","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Result","kind":"typeIdentifier"},{"kind":"text","text":", ("},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"Result"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ()) ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Result"}],"title":"reduce(into:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/underestimatedCount":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/underestimatedcount","kind":"symbol","role":"symbol","title":"underestimatedCount","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/underestimatedCount"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled().json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled().json
new file mode 100644
index 000000000..682b8fda3
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled().json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled()"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"metadata":{"title":"shuffled()","roleHeading":"Instance Method","extendedModule":"Swift","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE8shuffledSay7ElementQzGyF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","role":"symbol","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.shuffled()"},{"text":".","type":"text"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/shuffled()"]}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"shuffled"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":"]","kind":"text"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/shuffled()":{"role":"symbol","abstract":[],"title":"shuffled()","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/shuffled()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled()","kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled(using:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled(using:).json
new file mode 100644
index 000000000..2667d9390
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled(using:).json
@@ -0,0 +1 @@
+{"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled(using:)","interfaceLanguage":"swift"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.shuffled(using:)"},{"text":".","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"kind":"text","text":" "},{"text":"generator","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"] "},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"T"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SG","text":"RandomNumberGenerator"}]}]}],"kind":"symbol","metadata":{"externalID":"s:STsE8shuffled5usingSay7ElementQzGqd__z_tSGRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"text":"T","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"text":"T","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"extendedModule":"Swift","title":"shuffled(using:)","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"symbolKind":"method","role":"symbol","roleHeading":"Instance Method"},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/shuffled(using:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/shuffled(using:)":{"role":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/shuffled(using:)","title":"shuffled(using:)","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"shuffled","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"inout"},{"text":" ","kind":"text"},{"text":"T","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/shuffled(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(by:).json
new file mode 100644
index 000000000..37345a2ba
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(by:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"sorted","kind":"identifier"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"kind":"text","text":" "},{"text":"areInIncreasingOrder","kind":"internalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(by:)"},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"("},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"externalID":"s:STsE6sorted2bySay7ElementQzGSbAD_ADtKXE_tKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"sorted(by:)"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.sorted(by:)"},{"type":"text","text":"."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/sorted(by:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(by:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(by:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":"]","kind":"text"}],"title":"sorted(by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-4zxqp.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-4zxqp.json
new file mode 100644
index 000000000..7ca8636b7
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-4zxqp.json
@@ -0,0 +1 @@
+{"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-4zxqp"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(using:)-4zxqp"]}],"metadata":{"roleHeading":"Instance Method","externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tAA14SortComparatorRd__8ComparedQyd__AERSlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"sorted(using:)","platforms":[{"introducedAt":"15.0","name":"iOS","beta":false,"unavailable":false,"deprecated":false},{"beta":false,"introducedAt":"12.0","unavailable":false,"deprecated":false,"name":"macOS"},{"beta":false,"deprecated":false,"unavailable":false,"name":"tvOS","introducedAt":"15.0"},{"deprecated":false,"name":"watchOS","beta":false,"unavailable":false,"introducedAt":"8.0"}],"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"extendedModule":"Swift","symbolKind":"method","role":"symbol"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.sorted(using:)"},{"text":".","type":"text"}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"comparator","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":"] "},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP","text":"SortComparator"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":" == "},{"text":"Comparator","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Compared","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/sorted(using:)-4zxqp":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-4zxqp","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(using:)-4zxqp","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"Comparator","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"title":"sorted(using:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-rito.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-rito.json
new file mode 100644
index 000000000..6aff098a6
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-rito.json
@@ -0,0 +1 @@
+{"metadata":{"platforms":[{"introducedAt":"15.0","beta":false,"deprecated":false,"unavailable":false,"name":"iOS"},{"unavailable":false,"introducedAt":"12.0","name":"macOS","deprecated":false,"beta":false},{"deprecated":false,"name":"tvOS","beta":false,"introducedAt":"15.0","unavailable":false},{"introducedAt":"8.0","deprecated":false,"unavailable":false,"beta":false,"name":"watchOS"}],"role":"symbol","extendedModule":"Swift","externalID":"s:ST10FoundationE6sorted5usingSay7ElementQzGqd___tSTRd__AA14SortComparatorRd_0_ADQyd__Rsd_0_8ComparedQyd_0_AERSr0_lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"kind":"text","text":"<"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"text":"Comparator","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"using"},{"text":": ","kind":"text"},{"text":"S","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":"]"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"roleHeading":"Instance Method","title":"sorted(using:)"},"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.sorted(using:)","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"sorted"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"S"},{"kind":"text","text":", "},{"text":"Comparator","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"using","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"comparators","kind":"internalParam"},{"kind":"text","text":": "},{"text":"S","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"text":"] ","kind":"text"},{"text":"where","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"S"},{"kind":"text","text":" : "},{"preciseIdentifier":"s:ST","text":"Sequence","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":" : "},{"preciseIdentifier":"s:10Foundation14SortComparatorP","text":"SortComparator","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Comparator"},{"kind":"text","text":" == "},{"text":"S","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":" == "},{"kind":"typeIdentifier","text":"Comparator"},{"text":".","kind":"text"},{"text":"Compared","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation14SortComparatorP8ComparedQa"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(using:)-rito"]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-rito"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/sorted(using:)-rito":{"abstract":[],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/sorted(using:)-rito","role":"symbol","kind":"symbol","title":"sorted(using:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"sorted","kind":"identifier"},{"text":"<","kind":"text"},{"text":"S","kind":"genericParameter"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Comparator"},{"text":">(","kind":"text"},{"text":"using","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"S"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/sorted(using:)-rito"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
new file mode 100644
index 000000000..9f2fbdf74
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/split(maxsplits:omittingemptysubsequences:whereseparator:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"split","kind":"identifier"},{"text":"(","kind":"text"},{"text":"maxSplits","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":", "},{"kind":"externalParam","text":"whereSeparator"},{"kind":"text","text":": ("},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> ["},{"text":"ArraySlice","preciseIdentifier":"s:s10ArraySliceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":">]","kind":"text"}],"externalID":"s:STsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSays10ArraySliceVy7ElementQzGGSi_S2bAHKXEtKF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","extendedModule":"Swift","symbolKind":"method","roleHeading":"Instance Method","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},{"text":".","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"split","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":" = Int.max, "},{"kind":"externalParam","text":"omittingEmptySubsequences"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":" = true, ","kind":"text"},{"kind":"externalParam","text":"whereSeparator"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"isSeparator"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":") ","kind":"text"},{"kind":"keyword","text":"rethrows"},{"text":" -> [","kind":"text"},{"preciseIdentifier":"s:s10ArraySliceV","text":"ArraySlice","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Element","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":">]"}],"languages":["swift"],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/split(maxSplits:omittingEmptySubsequences:whereSeparator:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/split(maxSplits:omittingEmptySubsequences:whereSeparator:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"split"},{"kind":"text","text":"("},{"kind":"externalParam","text":"maxSplits"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"text":"omittingEmptySubsequences","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"text":"whereSeparator","kind":"externalParam"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","text":"Element","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> ["},{"text":"ArraySlice","preciseIdentifier":"s:s10ArraySliceV","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"kind":"text","text":">]"}],"title":"split(maxSplits:omittingEmptySubsequences:whereSeparator:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/starts(with:by:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/starts(with:by:).json
new file mode 100644
index 000000000..abd6a1559
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/starts(with:by:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/starts(with:by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"text":"PossiblePrefix","kind":"genericParameter"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"with"},{"text":" ","kind":"text"},{"text":"possiblePrefix","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"areEquivalent"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":" "},{"text":"where","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"kind":"text","text":" : "},{"preciseIdentifier":"s:ST","text":"Sequence","kind":"typeIdentifier"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/starts(with:by:)"},"sections":[],"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"Swift","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": (","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":") ","kind":"text"},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"externalID":"s:STsE6starts4with2bySbqd___Sb7ElementQz_ADQyd__tKXEtKSTRd__lF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"starts(with:by:)","roleHeading":"Instance Method"},"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.starts(with:by:)"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/starts(with:by:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/starts(with:by:)","kind":"symbol","role":"symbol","title":"starts(with:by:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"starts","kind":"identifier"},{"text":"<","kind":"text"},{"kind":"genericParameter","text":"PossiblePrefix"},{"text":">(","kind":"text"},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"text":"PossiblePrefix","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": (","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"PossiblePrefix"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"text":") ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"kind":"text","text":" -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/starts(with:by:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/suffix(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/suffix(_:).json
new file mode 100644
index 000000000..c2dbf9598
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/suffix(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/suffix(_:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"suffix"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"maxLength","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"kind":"text","text":"]"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/suffix(_:)"]}],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Sequence.suffix(_:)"},{"type":"text","text":"."}],"metadata":{"roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":"]","kind":"text"}],"extendedModule":"Swift","title":"suffix(_:)","externalID":"s:STsE6suffixySay7ElementQzGSiF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","symbolKind":"method"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/suffix(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/suffix(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/suffix(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"suffix","kind":"identifier"},{"kind":"text","text":"("},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":"]"}],"title":"suffix(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/underestimatedcount.json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/underestimatedcount.json
new file mode 100644
index 000000000..9611372ae
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/underestimatedcount.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE19underestimatedCountSivp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"underestimatedCount"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/underestimatedCount","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"sections":[],"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.underestimatedCount","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/underestimatedcount"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/underestimatedCount":{"abstract":[],"url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/underestimatedcount","kind":"symbol","role":"symbol","title":"underestimatedCount","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/underestimatedCount"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/withcontiguousstorageifavailable(_:).json b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/withcontiguousstorageifavailable(_:).json
new file mode 100644
index 000000000..2a12c6644
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/withcontiguousstorageifavailable(_:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"Swift","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"R"},{"text":">((","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SR","text":"UnsafeBufferPointer"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":">) ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:STsE32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC0ceF9YIteratorV","title":"withContiguousStorageIfAvailable(_:)"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/withContiguousStorageIfAvailable(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/withcontiguousstorageifavailable(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"body"},{"text":": (","kind":"text"},{"text":"UnsafeBufferPointer","preciseIdentifier":"s:SR","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"text":"Element","kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa"},{"kind":"text","text":">) "},{"kind":"keyword","text":"throws"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Sequence.withContiguousStorageIfAvailable(_:)","type":"codeVoice"},{"text":".","type":"text"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator","kind":"symbol","title":"TextLineStorage.TextLineStorageYIterator","type":"topic","conformance":{"constraints":[{"code":"Data","type":"codeVoice"},{"type":"text","text":" conforms to "},{"code":"Identifiable","type":"codeVoice"},{"type":"text","text":"."}],"availabilityPrefix":[{"type":"text","text":"Available when"}],"conformancePrefix":[{"text":"Conforms when","type":"text"}]},"role":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"TextLineStorageYIterator","kind":"identifier"}],"navigatorTitle":[{"text":"TextLineStorageYIterator","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/TextLineStorageYIterator/withContiguousStorageIfAvailable(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/TextLineStorageYIterator\/withContiguousStorageIfAvailable(_:)","type":"topic","role":"symbol","kind":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/withcontiguousstorageifavailable(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"text":"<","kind":"text"},{"text":"R","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"UnsafeBufferPointer","kind":"typeIdentifier","preciseIdentifier":"s:SR"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"title":"withContiguousStorageIfAvailable(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/underestimatedcount.json b/data/documentation/codeedittextview/textlinestorage/underestimatedcount.json
new file mode 100644
index 000000000..191e0f332
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/underestimatedcount.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/underestimatedCount","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"title":"underestimatedCount","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"extendedModule":"Swift","externalID":"s:STsE19underestimatedCountSivp::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","roleHeading":"Instance Property","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"underestimatedCount","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/underestimatedcount"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Sequence.underestimatedCount","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/underestimatedCount":{"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/underestimatedcount","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/underestimatedCount","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"underestimatedCount","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"abstract":[],"title":"underestimatedCount"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/update(atoffset:delta:deltaheight:).json b/data/documentation/codeedittextview/textlinestorage/update(atoffset:delta:deltaheight:).json
new file mode 100644
index 000000000..12b756534
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/update(atoffset:delta:deltaheight:).json
@@ -0,0 +1 @@
+{"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"update","kind":"identifier"},{"kind":"text","text":"("},{"text":"atOffset","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"offset","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":", ","kind":"text"},{"text":"delta","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":", "},{"kind":"externalParam","text":"deltaHeight"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}],"platforms":["macOS"]}]},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The offset where the edit began"}]}],"name":"offset"},{"content":[{"inlineContent":[{"text":"The change in length of the document. Negative for deletes, positive for insertions.","type":"text"}],"type":"paragraph"}],"name":"delta"},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The change in height of the document."}]}],"name":"deltaHeight"}]},{"kind":"content","content":[{"level":2,"type":"heading","anchor":"discussion","text":"Discussion"},{"type":"paragraph","inlineContent":[{"text":"If a character was deleted, delta should be negative.","type":"text"},{"type":"text","text":" "},{"text":"The ","type":"text"},{"code":"index","type":"codeVoice"},{"text":" parameter should represent where the edit began.","type":"text"}]},{"inlineContent":[{"type":"text","text":"Lines will be deleted if the delta is both negative and encompasses the entire line."}],"type":"paragraph"},{"type":"paragraph","inlineContent":[{"text":"If the delta goes beyond the line’s range, an error will be thrown.","type":"text"}]},{"type":"unorderedList","items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Complexity "},{"code":"O(m log n)","type":"codeVoice"},{"type":"text","text":" where "},{"type":"codeVoice","code":"m"},{"text":" is the number of lines that need to be deleted as a result of this update.","type":"text"},{"type":"text","text":" "},{"text":"and ","type":"text"},{"type":"codeVoice","code":"n"},{"text":" is the number of lines stored in the tree.","type":"text"}]}]}]}]}],"abstract":[{"text":"Applies a length change at the given index.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"metadata":{"externalID":"s:16CodeEditTextView0C11LineStorageC6update8atOffset5delta0J6HeightySi_Si14CoreFoundation7CGFloatVtF","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"update"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"delta"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"deltaHeight"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","roleHeading":"Instance Method","title":"update(atOffset:delta:deltaHeight:)"},"variants":[{"paths":["\/documentation\/codeedittextview\/textlinestorage\/update(atoffset:delta:deltaheight:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/update(atOffset:delta:deltaHeight:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/update(atOffset:delta:deltaHeight:)":{"abstract":[{"type":"text","text":"Applies a length change at the given index."}],"type":"topic","title":"update(atOffset:delta:deltaHeight:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"update","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"atOffset"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"delta","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"deltaHeight"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/update(atoffset:delta:deltaheight:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/update(atOffset:delta:deltaHeight:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textlinestorage/withcontiguousstorageifavailable(_:).json b/data/documentation/codeedittextview/textlinestorage/withcontiguousstorageifavailable(_:).json
new file mode 100644
index 000000000..81074b44b
--- /dev/null
+++ b/data/documentation/codeedittextview/textlinestorage/withcontiguousstorageifavailable(_:).json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">(("},{"kind":"typeIdentifier","preciseIdentifier":"s:SR","text":"UnsafeBufferPointer"},{"text":"<","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier","text":"Element"},{"kind":"text","text":">) "},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"externalID":"s:STsE32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlF::SYNTHESIZED::s:16CodeEditTextView0C11LineStorageC","symbolKind":"method","title":"withContiguousStorageIfAvailable(_:)","extendedModule":"Swift","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/withContiguousStorageIfAvailable(_:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"withContiguousStorageIfAvailable","kind":"identifier"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"kind":"text","text":">("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"body","kind":"internalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","preciseIdentifier":"s:SR","text":"UnsafeBufferPointer"},{"kind":"text","text":"<"},{"text":"Self","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:ST7ElementQa","text":"Element"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":" -> ","kind":"text"},{"kind":"typeIdentifier","text":"R"},{"kind":"text","text":") "},{"text":"rethrows","kind":"keyword"},{"text":" -> ","kind":"text"},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"Sequence.withContiguousStorageIfAvailable(_:)"},{"type":"text","text":"."}],"sections":[],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textlinestorage\/withcontiguousstorageifavailable(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage/withContiguousStorageIfAvailable(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage\/withContiguousStorageIfAvailable(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textlinestorage\/withcontiguousstorageifavailable(_:)","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"withContiguousStorageIfAvailable"},{"kind":"text","text":"<"},{"text":"R","kind":"genericParameter"},{"text":">((","kind":"text"},{"text":"UnsafeBufferPointer","kind":"typeIdentifier","preciseIdentifier":"s:SR"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"text":"Element","preciseIdentifier":"s:ST7ElementQa","kind":"typeIdentifier"},{"text":">) ","kind":"text"},{"text":"throws","kind":"keyword"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":") "},{"kind":"keyword","text":"rethrows"},{"kind":"text","text":" -> "},{"text":"R","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"title":"withContiguousStorageIfAvailable(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager.json b/data/documentation/codeedittextview/textselectionmanager.json
new file mode 100644
index 000000000..22a30e914
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager.json
@@ -0,0 +1 @@
+{"kind":"symbol","seeAlsoSections":[{"title":"Text Selection","anchor":"Text-Selection","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView"],"generated":true}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSObject"],"title":"Inherits From","type":"inheritsFrom","kind":"relationships"},{"title":"Conforms To","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"kind":"relationships","type":"conformsTo"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextSelectionManager"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"content":[{"type":"heading","text":"Overview","anchor":"overview","level":2},{"inlineContent":[{"text":"Draws selections using a draw method similar to the ","type":"text"},{"code":"TextLayoutManager","type":"codeVoice"},{"type":"text","text":" class, and adds cursor views when"},{"text":" ","type":"text"},{"text":"appropriate.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"metadata":{"roleHeading":"Class","externalID":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","symbolKind":"class","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextSelectionManager"}],"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"TextSelectionManager"},"topicSections":[{"anchor":"Classes","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection"],"title":"Classes"},{"anchor":"Initializers","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/init(layoutManager:textStorage:textView:delegate:useSystemCursor:)"],"title":"Initializers"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/edgeInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/highlightSelectedLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/insertionPointColor","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectedLineBackgroundColor","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionBackgroundColor","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/textSelections","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/useSystemCursor"],"anchor":"Instance-Properties","generated":true,"title":"Instance Properties"},{"anchor":"Instance-Methods","generated":true,"title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/addSelectedRange(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/didReplaceCharacters(in:replacementLength:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/drawSelections(in:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/moveSelections(direction:destination:modifySelection:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/notifyAfterEdit(force:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRange(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRanges(_:)"]},{"title":"Type Properties","anchor":"Type-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionChangedNotification"],"generated":true},{"anchor":"Enumerations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction"],"title":"Enumerations","generated":true}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/drawSelections(in:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"drawSelections"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","text":"NSRect","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"drawSelections(in:)","abstract":[{"text":"Draws line backgrounds and selection rects for each selection in the given rect.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/drawSelections(in:)","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/drawselections(in:)","kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/setSelectedRange(_:)":{"title":"setSelectedRange(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRange(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Set the selected ranges to a single range. Overrides any existing selections.","type":"text"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/setselectedrange(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setSelectedRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/highlightSelectedLine":{"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/highlightselectedline","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/highlightSelectedLine","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"highlightSelectedLine","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"abstract":[],"title":"highlightSelectedLine"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/selectionBackgroundColor":{"title":"selectionBackgroundColor","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionBackgroundColor","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/selectionbackgroundcolor","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectionBackgroundColor","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/didReplaceCharacters(in:replacementLength:)":{"url":"\/documentation\/codeedittextview\/textselectionmanager\/didreplacecharacters(in:replacementlength:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/didReplaceCharacters(in:replacementLength:)","title":"didReplaceCharacters(in:replacementLength:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"didReplaceCharacters"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"replacementLength"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":")"}],"abstract":[],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/insertionPointColor":{"title":"insertionPointColor","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/insertionPointColor","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/insertionpointcolor","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertionPointColor"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/init(layoutManager:textStorage:textView:delegate:useSystemCursor:)":{"title":"init(layoutManager:textStorage:textView:delegate:useSystemCursor:)","url":"\/documentation\/codeedittextview\/textselectionmanager\/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/init(layoutManager:textStorage:textView:delegate:useSystemCursor:)","abstract":[],"fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"text":"layoutManager","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextLayoutManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager"},{"kind":"text","text":", "},{"text":"textStorage","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"textView"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"text":"?, ","kind":"text"},{"text":"delegate","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextSelectionManagerDelegate","preciseIdentifier":"s:16CodeEditTextView0C24SelectionManagerDelegateP"},{"text":"?, ","kind":"text"},{"text":"useSystemCursor","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":")","kind":"text"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/notifyAfterEdit(force:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/notifyAfterEdit(force:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"notifyAfterEdit"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"force"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":")","kind":"text"}],"title":"notifyAfterEdit(force:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/notifyafteredit(force:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/textSelections":{"title":"textSelections","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/textSelections","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselections","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textSelections"},{"kind":"text","text":": ["},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/setSelectedRanges(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRanges(_:)","abstract":[{"text":"Set the selected ranges to new ranges. Overrides any existing selections.","type":"text"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"setSelectedRanges"},{"text":"([","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":"])"}],"title":"setSelectedRanges(_:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/setselectedranges(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/selectionChangedNotification":{"title":"selectionChangedNotification","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionChangedNotification","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/selectionchangednotification","role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"selectionChangedNotification"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Notification","preciseIdentifier":"s:10Foundation12NotificationV"},{"kind":"text","text":"."},{"text":"Name","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV4Namea"}]},"doc://codeedittextview.CodeEditTextView/SH":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","type":"unresolvable","title":"Swift.Hashable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/addSelectedRange(_:)":{"title":"addSelectedRange(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/addSelectedRange(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Append a new selected range to the existing ones.","type":"text"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/addselectedrange(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"addSelectedRange","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":")","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/edgeInsets":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/edgeInsets","abstract":[{"text":"Determines how far inset to draw selection content.","type":"text"}],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"edgeInsets","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"}],"title":"edgeInsets","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/edgeinsets"},"doc://codeedittextview.CodeEditTextView/s7CVarArgP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","title":"Swift.CVarArg","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSObject":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","title":"ObjectiveC.NSObjectProtocol","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/s23CustomStringConvertibleP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","title":"Swift.CustomStringConvertible","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/objc(cs)NSObject":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSObject","title":"ObjectiveC.NSObject","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/selectedLineBackgroundColor":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"selectedLineBackgroundColor"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectedLineBackgroundColor","url":"\/documentation\/codeedittextview\/textselectionmanager\/selectedlinebackgroundcolor","role":"symbol","type":"topic","kind":"symbol","title":"selectedLineBackgroundColor"},"doc://codeedittextview.CodeEditTextView/SQ":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","title":"Swift.Equatable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/s28CustomDebugStringConvertibleP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","title":"Swift.CustomDebugStringConvertible","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/useSystemCursor":{"title":"useSystemCursor","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/useSystemCursor","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/usesystemcursor","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"useSystemCursor"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)":{"title":"rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Creates a range for a new selection given a starting point, direction, and destination."}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"rangeOfSelection","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"from"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":", "},{"text":"direction","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Direction","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"destination","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Destination","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"decomposeCharacters"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"suggestedXPos"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/moveSelections(direction:destination:modifySelection:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/moveSelections(direction:destination:modifySelection:)","abstract":[{"type":"text","text":"Moves all selections, determined by the direction and destination provided."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveSelections","kind":"identifier"},{"kind":"text","text":"("},{"text":"direction","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","text":"TextSelectionManager"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","text":"Direction"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"destination"},{"kind":"text","text":": "},{"text":"TextSelectionManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager"},{"text":".","kind":"text"},{"text":"Destination","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"modifySelection","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":")"}],"title":"moveSelections(direction:destination:modifySelection:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/moveselections(direction:destination:modifyselection:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/addselectedrange(_:).json b/data/documentation/codeedittextview/textselectionmanager/addselectedrange(_:).json
new file mode 100644
index 000000000..7ec6e9895
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/addselectedrange(_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/addSelectedRange(_:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"addSelectedRange"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":")"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC16addSelectedRangeyySo8_NSRangeVF","role":"symbol","title":"addSelectedRange(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"abstract":[{"text":"Append a new selected range to the existing ones.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"addSelectedRange","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"text":"The new range to add.","type":"text"}],"type":"paragraph"}],"name":"range"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/addselectedrange(_:)"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/addSelectedRange(_:)":{"title":"addSelectedRange(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/addSelectedRange(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Append a new selected range to the existing ones.","type":"text"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/addselectedrange(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"addSelectedRange","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":")","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination.json b/data/documentation/codeedittextview/textselectionmanager/destination.json
new file mode 100644
index 000000000..6441522d6
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination"]}],"sections":[],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"text":"Destination","kind":"identifier"}]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"topicSections":[{"generated":true,"title":"Enumeration Cases","anchor":"Enumeration-Cases","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/character","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/document","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/line","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/page","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/visualLine","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/word"]},{"anchor":"Default-Implementations","title":"Default Implementations","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/Equatable-Implementations"]}],"metadata":{"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"symbolKind":"enum","navigatorTitle":[{"kind":"identifier","text":"Destination"}],"extendedModule":"CodeEditTextView","title":"TextSelectionManager.Destination","externalID":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO","modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Enumeration"},"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"title":"Conforms To","kind":"relationships","type":"conformsTo"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/SH":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","title":"Swift.Hashable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/word":{"abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/word","title":"TextSelectionManager.Destination.word","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/word","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"word","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/line":{"kind":"symbol","title":"TextSelectionManager.Destination.line","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"line","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/line","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/line","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/document":{"fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"document","kind":"identifier"}],"abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/document","title":"TextSelectionManager.Destination.document","kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/document","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/visualLine":{"title":"TextSelectionManager.Destination.visualLine","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"visualLine","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/visualline","type":"topic","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/visualLine"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/page":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/page","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/page","title":"TextSelectionManager.Destination.page","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"page","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/Equatable-Implementations":{"role":"collectionGroup","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/Equatable-Implementations","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/equatable-implementations","title":"Equatable Implementations","type":"topic","abstract":[],"kind":"article"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/character":{"fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"character","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/character","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/character","type":"topic","abstract":[],"title":"TextSelectionManager.Destination.character","role":"symbol"},"doc://codeedittextview.CodeEditTextView/SQ":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable","title":"Swift.Equatable"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/!=(_:_:).json b/data/documentation/codeedittextview/textselectionmanager/destination/!=(_:_:).json
new file mode 100644
index 000000000..dd9b98914
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/!=(_:_:).json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"metadata":{"title":"!=(_:_:)","extendedModule":"Swift","symbolKind":"op","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"roleHeading":"Operator","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView0C16SelectionManagerC11DestinationO"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/!=(_:_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/!=(_:_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/!=(_:_:)":{"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","abstract":[],"title":"!=(_:_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/!=(_:_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/character.json b/data/documentation/codeedittextview/textselectionmanager/destination/character.json
new file mode 100644
index 000000000..6ae6cb600
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/character.json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/character","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/character"]}],"metadata":{"roleHeading":"Case","symbolKind":"case","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"character","kind":"identifier"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO9characteryA2EmF","role":"symbol","title":"TextSelectionManager.Destination.character","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"character","kind":"identifier"}]}]}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/character":{"fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"character","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/character","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/character","type":"topic","abstract":[],"title":"TextSelectionManager.Destination.character","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/document.json b/data/documentation/codeedittextview/textselectionmanager/destination/document.json
new file mode 100644
index 000000000..6e6131ae6
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/document.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Case","symbolKind":"case","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"document","kind":"identifier"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO8documentyA2EmF","role":"symbol","title":"TextSelectionManager.Destination.document","modules":[{"name":"CodeEditTextView"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/document"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"document","kind":"identifier"}],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/document"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/document":{"fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"document","kind":"identifier"}],"abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/document","title":"TextSelectionManager.Destination.document","kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/document","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/equatable-implementations.json b/data/documentation/codeedittextview/textselectionmanager/destination/equatable-implementations.json
new file mode 100644
index 000000000..828ec9717
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/equatable-implementations.json
@@ -0,0 +1 @@
+{"kind":"article","schemaVersion":{"major":0,"minor":3,"patch":0},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/!=(_:_:)"],"title":"Operators","generated":true,"anchor":"Operators"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/equatable-implementations"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/Equatable-Implementations","interfaceLanguage":"swift"},"sections":[],"metadata":{"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/!=(_:_:)":{"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","abstract":[],"title":"!=(_:_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/!=(_:_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/line.json b/data/documentation/codeedittextview/textselectionmanager/destination/line.json
new file mode 100644
index 000000000..7ad20ecad
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/line.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"line","kind":"identifier"}],"languages":["swift"]}]}],"kind":"symbol","metadata":{"title":"TextSelectionManager.Destination.line","symbolKind":"case","roleHeading":"Case","externalID":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO4lineyA2EmF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"line"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/line"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/line","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/line":{"kind":"symbol","title":"TextSelectionManager.Destination.line","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"line","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/line","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/line","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/page.json b/data/documentation/codeedittextview/textselectionmanager/destination/page.json
new file mode 100644
index 000000000..736deef73
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/page.json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"TextSelectionManager.Destination.page","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"page","kind":"identifier"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO4pageyA2EmF","roleHeading":"Case","symbolKind":"case"},"sections":[],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"page","kind":"identifier"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/page"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/page"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/page":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/page","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/page","title":"TextSelectionManager.Destination.page","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"page","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/visualline.json b/data/documentation/codeedittextview/textselectionmanager/destination/visualline.json
new file mode 100644
index 000000000..d2d4545ad
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/visualline.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","externalID":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO10visualLineyA2EmF","symbolKind":"case","title":"TextSelectionManager.Destination.visualLine","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"visualLine"}],"roleHeading":"Case"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/visualLine","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/visualline"]}],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"visualLine","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/visualLine":{"title":"TextSelectionManager.Destination.visualLine","role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"visualLine","kind":"identifier"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/visualline","type":"topic","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/visualLine"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/destination/word.json b/data/documentation/codeedittextview/textselectionmanager/destination/word.json
new file mode 100644
index 000000000..67e84b99f
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/destination/word.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/word","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/destination\/word"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"symbolKind":"case","roleHeading":"Case","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"word","kind":"identifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO4wordyA2EmF","title":"TextSelectionManager.Destination.word"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination/word":{"abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/word","title":"TextSelectionManager.Destination.word","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination\/word","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"word","kind":"identifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/didreplacecharacters(in:replacementlength:).json b/data/documentation/codeedittextview/textselectionmanager/didreplacecharacters(in:replacementlength:).json
new file mode 100644
index 000000000..635cd872c
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/didreplacecharacters(in:replacementlength:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"didReplaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"replacementLength"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0C16SelectionManagerC20didReplaceCharacters2in17replacementLengthySo8_NSRangeV_SitF","title":"didReplaceCharacters(in:replacementLength:)","symbolKind":"method","roleHeading":"Instance Method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"kind":"symbol","sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"didReplaceCharacters"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"replacementLength"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"kind":"text","text":")"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/didreplacecharacters(in:replacementlength:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/didReplaceCharacters(in:replacementLength:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/didReplaceCharacters(in:replacementLength:)":{"url":"\/documentation\/codeedittextview\/textselectionmanager\/didreplacecharacters(in:replacementlength:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/didReplaceCharacters(in:replacementLength:)","title":"didReplaceCharacters(in:replacementLength:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"didReplaceCharacters"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"replacementLength"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"kind":"text","text":")"}],"abstract":[],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/direction.json b/data/documentation/codeedittextview/textselectionmanager/direction.json
new file mode 100644
index 000000000..f9ba4fe26
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/direction.json
@@ -0,0 +1 @@
+{"topicSections":[{"title":"Enumeration Cases","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/backward","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/down","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/forward","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/up"],"anchor":"Enumeration-Cases","generated":true},{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/Equatable-Implementations"],"anchor":"Default-Implementations","title":"Default Implementations"}],"metadata":{"externalID":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","navigatorTitle":[{"kind":"identifier","text":"Direction"}],"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Direction"}],"role":"symbol","symbolKind":"enum","title":"TextSelectionManager.Direction","roleHeading":"Enumeration"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"relationshipsSections":[{"title":"Conforms To","kind":"relationships","type":"conformsTo","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Direction"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/direction"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/up":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/up","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/up","kind":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"up","kind":"identifier"}],"title":"TextSelectionManager.Direction.up"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/forward":{"title":"TextSelectionManager.Direction.forward","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"forward","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/forward","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/forward"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/Equatable-Implementations":{"url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/equatable-implementations","abstract":[],"role":"collectionGroup","title":"Equatable Implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/Equatable-Implementations","kind":"article","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/backward":{"url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/backward","abstract":[],"kind":"symbol","title":"TextSelectionManager.Direction.backward","role":"symbol","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"backward"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/backward"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/down":{"type":"topic","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"down","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/down","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/down","role":"symbol","abstract":[],"kind":"symbol","title":"TextSelectionManager.Direction.down"},"doc://codeedittextview.CodeEditTextView/SH":{"title":"Swift.Hashable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/SQ":{"title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/direction/!=(_:_:).json b/data/documentation/codeedittextview/textselectionmanager/direction/!=(_:_:).json
new file mode 100644
index 000000000..5f2c22232
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/direction/!=(_:_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Self","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"metadata":{"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView0C16SelectionManagerC9DirectionO","modules":[{"name":"CodeEditTextView","relatedModules":["Swift"]}],"symbolKind":"op","extendedModule":"Swift","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"roleHeading":"Operator","role":"symbol"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/!=(_:_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction"]]},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/direction\/!=(_:_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/!=(_:_:)":{"title":"!=(_:_:)","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/!=(_:_:)","role":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/!=(_:_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/direction/backward.json b/data/documentation/codeedittextview/textselectionmanager/direction/backward.json
new file mode 100644
index 000000000..46e1a1096
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/direction/backward.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction"]]},"metadata":{"externalID":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO8backwardyA2EmF","symbolKind":"case","roleHeading":"Case","modules":[{"name":"CodeEditTextView"}],"role":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"backward","kind":"identifier"}],"title":"TextSelectionManager.Direction.backward"},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/direction\/backward"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"backward"}]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/backward"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/backward":{"url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/backward","abstract":[],"kind":"symbol","title":"TextSelectionManager.Direction.backward","role":"symbol","type":"topic","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"backward"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/backward"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/direction/down.json b/data/documentation/codeedittextview/textselectionmanager/direction/down.json
new file mode 100644
index 000000000..90ed010b4
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/direction/down.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction"]]},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"down"}],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/direction\/down"]}],"metadata":{"roleHeading":"Case","symbolKind":"case","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"down","kind":"identifier"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO4downyA2EmF","title":"TextSelectionManager.Direction.down","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/down"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/down":{"type":"topic","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"text":"down","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/down","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/down","role":"symbol","abstract":[],"kind":"symbol","title":"TextSelectionManager.Direction.down"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/direction/equatable-implementations.json b/data/documentation/codeedittextview/textselectionmanager/direction/equatable-implementations.json
new file mode 100644
index 000000000..1ca58351d
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/direction/equatable-implementations.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/Equatable-Implementations","interfaceLanguage":"swift"},"kind":"article","topicSections":[{"title":"Operators","anchor":"Operators","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/!=(_:_:)"],"generated":true}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"Equatable Implementations","role":"collectionGroup","roleHeading":"API Collection"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/direction\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/!=(_:_:)":{"title":"!=(_:_:)","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/!=(_:_:)","role":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/!=(_:_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/direction/forward.json b/data/documentation/codeedittextview/textselectionmanager/direction/forward.json
new file mode 100644
index 000000000..cf0d20c21
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/direction/forward.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/forward","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/direction\/forward"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"forward","kind":"identifier"}],"platforms":["macOS"]}]}],"metadata":{"role":"symbol","symbolKind":"case","title":"TextSelectionManager.Direction.forward","externalID":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO7forwardyA2EmF","fragments":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"forward"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Case"},"sections":[],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/forward":{"title":"TextSelectionManager.Direction.forward","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"text":"forward","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/forward","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/forward"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/direction/up.json b/data/documentation/codeedittextview/textselectionmanager/direction/up.json
new file mode 100644
index 000000000..bbd0bb3b5
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/direction/up.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/direction\/up"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"case","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"up"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"symbolKind":"case","roleHeading":"Case","role":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"up","kind":"identifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO2upyA2EmF","title":"TextSelectionManager.Direction.up"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/up","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction/up":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction\/up","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/up","kind":"symbol","fragments":[{"text":"case","kind":"keyword"},{"text":" ","kind":"text"},{"text":"up","kind":"identifier"}],"title":"TextSelectionManager.Direction.up"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/drawselections(in:).json b/data/documentation/codeedittextview/textselectionmanager/drawselections(in:).json
new file mode 100644
index 000000000..e81cd1b48
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/drawselections(in:).json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/drawSelections(in:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"drawSelections"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"rect"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"kind":"text","text":")"}]}]},{"kind":"parameters","parameters":[{"name":"rect","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The rect to draw in."}]}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/drawselections(in:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"drawSelections(in:)","externalID":"s:16CodeEditTextView0C16SelectionManagerC14drawSelections2inySo6CGRectV_tF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"drawSelections","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRect","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}],"extendedModule":"CodeEditTextView"},"sections":[],"abstract":[{"type":"text","text":"Draws line backgrounds and selection rects for each selection in the given rect."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/drawSelections(in:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"drawSelections"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","text":"NSRect","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"drawSelections(in:)","abstract":[{"text":"Draws line backgrounds and selection rects for each selection in the given rect.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/drawSelections(in:)","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/drawselections(in:)","kind":"symbol","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/edgeinsets.json b/data/documentation/codeedittextview/textselectionmanager/edgeinsets.json
new file mode 100644
index 000000000..456456898
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/edgeinsets.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"abstract":[{"type":"text","text":"Determines how far inset to draw selection content."}],"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"edgeInsets"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","kind":"typeIdentifier","text":"HorizontalEdgeInsets","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/edgeinsets"]}],"metadata":{"roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"edgeInsets"},{"kind":"text","text":": "},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC10edgeInsetsAA014HorizontalEdgeH0Vvp","title":"edgeInsets","role":"symbol","symbolKind":"property"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/edgeInsets"},"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/edgeInsets":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/edgeInsets","abstract":[{"text":"Determines how far inset to draw selection content.","type":"text"}],"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"edgeInsets","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"}],"title":"edgeInsets","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/edgeinsets"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/highlightselectedline.json b/data/documentation/codeedittextview/textselectionmanager/highlightselectedline.json
new file mode 100644
index 000000000..80dd9af7c
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/highlightselectedline.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/highlightSelectedLine"},"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/highlightselectedline"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"symbolKind":"property","title":"highlightSelectedLine","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"highlightSelectedLine"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol","externalID":"s:16CodeEditTextView0C16SelectionManagerC21highlightSelectedLineSbvp","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property"},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"highlightSelectedLine","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/highlightSelectedLine":{"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/highlightselectedline","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/highlightSelectedLine","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"highlightSelectedLine","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"abstract":[],"title":"highlightSelectedLine"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:).json b/data/documentation/codeedittextview/textselectionmanager/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:).json
new file mode 100644
index 000000000..58e809fcc
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Initializer","role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"text":"layoutManager","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextLayoutManager","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"textStorage"},{"text":": ","kind":"text"},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"textView","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView"},{"kind":"text","text":"?, "},{"text":"delegate","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C24SelectionManagerDelegateP","text":"TextSelectionManagerDelegate"},{"text":"?, ","kind":"text"},{"text":"useSystemCursor","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":")","kind":"text"}],"title":"init(layoutManager:textStorage:textView:delegate:useSystemCursor:)","externalID":"s:16CodeEditTextView0C16SelectionManagerC06layoutF011textStorage0hD08delegate15useSystemCursorAcA0c6LayoutF0C_So06NSTextI0CAA0cD0CSgAA0ceF8Delegate_pSgSbtcfc","symbolKind":"init","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/init(layoutManager:textStorage:textView:delegate:useSystemCursor:)"},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"init"},{"text":"(","kind":"text"},{"text":"layoutManager","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","text":"TextLayoutManager"},{"kind":"text","text":", "},{"text":"textStorage","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":", "},{"text":"textView","kind":"externalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","kind":"typeIdentifier","text":"TextView"},{"kind":"text","text":"?, "},{"text":"delegate","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C24SelectionManagerDelegateP","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate","text":"TextSelectionManagerDelegate"},{"kind":"text","text":"?, "},{"text":"useSystemCursor","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":" = false)"}],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate":{"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"title":"TextSelectionManagerDelegate","abstract":[],"role":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/init(layoutManager:textStorage:textView:delegate:useSystemCursor:)":{"title":"init(layoutManager:textStorage:textView:delegate:useSystemCursor:)","url":"\/documentation\/codeedittextview\/textselectionmanager\/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:)","role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/init(layoutManager:textStorage:textView:delegate:useSystemCursor:)","abstract":[],"fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"text":"layoutManager","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextLayoutManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager"},{"kind":"text","text":", "},{"text":"textStorage","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"textView"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"text":"?, ","kind":"text"},{"text":"delegate","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextSelectionManagerDelegate","preciseIdentifier":"s:16CodeEditTextView0C24SelectionManagerDelegateP"},{"text":"?, ","kind":"text"},{"text":"useSystemCursor","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":")","kind":"text"}],"kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/insertionpointcolor.json b/data/documentation/codeedittextview/textselectionmanager/insertionpointcolor.json
new file mode 100644
index 000000000..754e34a8b
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/insertionpointcolor.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"insertionPointColor"},{"kind":"text","text":": "},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC19insertionPointColorSo7NSColorCvp","role":"symbol","title":"insertionPointColor","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertionPointColor"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/insertionpointcolor"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/insertionPointColor"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/insertionPointColor":{"title":"insertionPointColor","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/insertionPointColor","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/insertionpointcolor","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertionPointColor"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/moveselections(direction:destination:modifyselection:).json b/data/documentation/codeedittextview/textselectionmanager/moveselections(direction:destination:modifyselection:).json
new file mode 100644
index 000000000..c3cff95bb
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/moveselections(direction:destination:modifyselection:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/moveSelections(direction:destination:modifySelection:)"},"abstract":[{"text":"Moves all selections, determined by the direction and destination provided.","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/moveselections(direction:destination:modifyselection:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"kind":"symbol","sections":[],"metadata":{"title":"moveSelections(direction:destination:modifySelection:)","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","roleHeading":"Instance Method","symbolKind":"method","role":"symbol","externalID":"s:16CodeEditTextView0C16SelectionManagerC14moveSelections9direction11destination06modifyE0yAC9DirectionO_AC11DestinationOSbtF","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveSelections","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"direction"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"TextSelectionManager","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","text":"Direction"},{"kind":"text","text":", "},{"text":"destination","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","text":"TextSelectionManager","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO","text":"Destination"},{"text":", ","kind":"text"},{"text":"modifySelection","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":")"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveSelections"},{"kind":"text","text":"("},{"kind":"externalParam","text":"direction"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","kind":"typeIdentifier","text":"TextSelectionManager"},{"kind":"text","text":"."},{"text":"Direction","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO"},{"kind":"text","text":", "},{"kind":"externalParam","text":"destination"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","text":"TextSelectionManager"},{"text":".","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO","kind":"typeIdentifier","text":"Destination","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination"},{"text":", ","kind":"text"},{"text":"modifySelection","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":" = false)"}],"platforms":["macOS"]}]},{"parameters":[{"name":"direction","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The direction to modify all selections."}]}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"The destination to move the selections by.","type":"text"}]}],"name":"destination"},{"content":[{"inlineContent":[{"type":"text","text":"Set to "},{"type":"codeVoice","code":"true"},{"type":"text","text":" to modify the selections instead of replacing it."}],"type":"paragraph"}],"name":"modifySelection"}],"kind":"parameters"},{"kind":"content","content":[{"level":2,"type":"heading","anchor":"discussion","text":"Discussion"},{"inlineContent":[{"type":"text","text":"Also handles updating the selection views and marks the view as needing display."}],"type":"paragraph"}]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/moveSelections(direction:destination:modifySelection:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/moveSelections(direction:destination:modifySelection:)","abstract":[{"type":"text","text":"Moves all selections, determined by the direction and destination provided."}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveSelections","kind":"identifier"},{"kind":"text","text":"("},{"text":"direction","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","text":"TextSelectionManager"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","text":"Direction"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"destination"},{"kind":"text","text":": "},{"text":"TextSelectionManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager"},{"text":".","kind":"text"},{"text":"Destination","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"modifySelection","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":")"}],"title":"moveSelections(direction:destination:modifySelection:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/moveselections(direction:destination:modifyselection:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/notifyafteredit(force:).json b/data/documentation/codeedittextview/textselectionmanager/notifyafteredit(force:).json
new file mode 100644
index 000000000..ccfcedac1
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/notifyafteredit(force:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"notifyAfterEdit","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"force"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC011notifyAfterB05forceySb_tF","title":"notifyAfterEdit(force:)","roleHeading":"Instance Method"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"notifyAfterEdit","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"force"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":" = false)","kind":"text"}]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/notifyAfterEdit(force:)"},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/notifyafteredit(force:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/notifyAfterEdit(force:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/notifyAfterEdit(force:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"notifyAfterEdit"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"force"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":")","kind":"text"}],"title":"notifyAfterEdit(force:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/notifyafteredit(force:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:).json b/data/documentation/codeedittextview/textselectionmanager/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:).json
new file mode 100644
index 000000000..71e6c96cf
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"rangeOfSelection"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"from"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"offset"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"},{"kind":"text","text":", "},{"text":"direction","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","text":"Direction"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"destination"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","text":"Destination"},{"text":", ","kind":"text"},{"text":"decomposeCharacters","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":" = false, "},{"text":"suggestedXPos","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"kind":"text","text":"? = nil) -> "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"platforms":["macOS"]}]},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"type":"text","text":"The location to start the selection from."}],"type":"paragraph"}],"name":"offset"},{"content":[{"type":"paragraph","inlineContent":[{"text":"The direction the selection should be created in.","type":"text"}]}],"name":"direction"},{"name":"destination","content":[{"type":"paragraph","inlineContent":[{"text":"Determines how far the selection is.","type":"text"}]}]},{"name":"decomposeCharacters","content":[{"inlineContent":[{"type":"text","text":"Set to "},{"code":"true","type":"codeVoice"},{"type":"text","text":" to treat grapheme clusters as individual characters."}],"type":"paragraph"}]},{"name":"suggestedXPos","content":[{"inlineContent":[{"text":"The suggested x position to stick to.","type":"text"}],"type":"paragraph"}]}]},{"content":[{"type":"heading","anchor":"return-value","text":"Return Value","level":2},{"inlineContent":[{"text":"A range of a new selection based on the direction and destination.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","symbolKind":"method","title":"rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC07rangeOfE04from9direction11destination19decomposeCharacters13suggestedXPosSo8_NSRangeVSi_AC9DirectionOAC11DestinationOSb14CoreFoundation7CGFloatVSgtF","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"rangeOfSelection"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"from"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"direction"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","text":"Direction"},{"kind":"text","text":", "},{"kind":"externalParam","text":"destination"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO","text":"Destination","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"decomposeCharacters"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":", ","kind":"text"},{"text":"suggestedXPos","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}]},"sections":[],"abstract":[{"text":"Creates a range for a new selection given a starting point, direction, and destination.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Destination":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/destination","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Destination","kind":"identifier"}],"navigatorTitle":[{"text":"Destination","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Destination","type":"topic","abstract":[],"title":"TextSelectionManager.Destination","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)":{"title":"rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/rangeOfSelection(from:direction:destination:decomposeCharacters:suggestedXPos:)","kind":"symbol","type":"topic","abstract":[{"type":"text","text":"Creates a range for a new selection given a starting point, direction, and destination."}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"rangeOfSelection","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"from"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":", "},{"text":"direction","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Direction","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC9DirectionO","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"destination","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Destination","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC11DestinationO"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"decomposeCharacters"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"suggestedXPos"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/Direction":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/Direction","navigatorTitle":[{"text":"Direction","kind":"identifier"}],"abstract":[],"fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Direction"}],"title":"TextSelectionManager.Direction","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/direction"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/selectedlinebackgroundcolor.json b/data/documentation/codeedittextview/textselectionmanager/selectedlinebackgroundcolor.json
new file mode 100644
index 000000000..ffe770f8e
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/selectedlinebackgroundcolor.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/selectedlinebackgroundcolor"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"selectedLineBackgroundColor"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor","kind":"typeIdentifier"}]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectedLineBackgroundColor","interfaceLanguage":"swift"},"sections":[],"metadata":{"externalID":"s:16CodeEditTextView0C16SelectionManagerC27selectedLineBackgroundColorSo7NSColorCvp","roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectedLineBackgroundColor","kind":"identifier"},{"kind":"text","text":": "},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"role":"symbol","title":"selectedLineBackgroundColor","symbolKind":"property","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/selectedLineBackgroundColor":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"selectedLineBackgroundColor"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectedLineBackgroundColor","url":"\/documentation\/codeedittextview\/textselectionmanager\/selectedlinebackgroundcolor","role":"symbol","type":"topic","kind":"symbol","title":"selectedLineBackgroundColor"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/selectionbackgroundcolor.json b/data/documentation/codeedittextview/textselectionmanager/selectionbackgroundcolor.json
new file mode 100644
index 000000000..fd009e6f7
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/selectionbackgroundcolor.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"selectionBackgroundColor"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC24selectionBackgroundColorSo7NSColorCvp","role":"symbol","title":"selectionBackgroundColor","modules":[{"name":"CodeEditTextView"}]},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/selectionbackgroundcolor"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"selectionBackgroundColor","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionBackgroundColor","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/selectionBackgroundColor":{"title":"selectionBackgroundColor","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionBackgroundColor","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/selectionbackgroundcolor","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectionBackgroundColor","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/selectionchangednotification.json b/data/documentation/codeedittextview/textselectionmanager/selectionchangednotification.json
new file mode 100644
index 000000000..a8897c771
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/selectionchangednotification.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"selectionChangedNotification","kind":"identifier"},{"kind":"text","text":": "},{"text":"Notification","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation12NotificationV4Namea","kind":"typeIdentifier","text":"Name"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/selectionchangednotification"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionChangedNotification","interfaceLanguage":"swift"},"metadata":{"symbolKind":"property","roleHeading":"Type Property","role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"selectionChangedNotification","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation12NotificationV","kind":"typeIdentifier","text":"Notification"},{"text":".","kind":"text"},{"text":"Name","preciseIdentifier":"s:10Foundation12NotificationV4Namea","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC28selectionChangedNotificationSo18NSNotificationNameavpZ","title":"selectionChangedNotification"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/selectionChangedNotification":{"title":"selectionChangedNotification","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/selectionChangedNotification","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/selectionchangednotification","role":"symbol","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"selectionChangedNotification"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Notification","preciseIdentifier":"s:10Foundation12NotificationV"},{"kind":"text","text":"."},{"text":"Name","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV4Namea"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/setselectedrange(_:).json b/data/documentation/codeedittextview/textselectionmanager/setselectedrange(_:).json
new file mode 100644
index 000000000..57882b0ff
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/setselectedrange(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Set the selected ranges to a single range. Overrides any existing selections.","type":"text"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"setSelectedRange(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setSelectedRange","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0C16SelectionManagerC16setSelectedRangeyySo8_NSRangeVF","roleHeading":"Instance Method","symbolKind":"method"},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/setselectedrange(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRange(_:)"},"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setSelectedRange"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"range","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"text":"The range to set.","type":"text"}],"type":"paragraph"}],"name":"range"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/setSelectedRange(_:)":{"title":"setSelectedRange(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRange(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Set the selected ranges to a single range. Overrides any existing selections.","type":"text"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/setselectedrange(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setSelectedRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/setselectedranges(_:).json b/data/documentation/codeedittextview/textselectionmanager/setselectedranges(_:).json
new file mode 100644
index 000000000..6689d6eae
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/setselectedranges(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"text":"Set the selected ranges to new ranges. Overrides any existing selections.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"setSelectedRanges"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"ranges","kind":"internalParam"},{"text":": [","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":"])"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"externalID":"s:16CodeEditTextView0C16SelectionManagerC17setSelectedRangesyySaySo8_NSRangeVGF","title":"setSelectedRanges(_:)","role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setSelectedRanges","kind":"identifier"},{"kind":"text","text":"(["},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":"])"}],"modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRanges(_:)"},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/setselectedranges(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/setSelectedRanges(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/setSelectedRanges(_:)","abstract":[{"text":"Set the selected ranges to new ranges. Overrides any existing selections.","type":"text"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"setSelectedRanges"},{"text":"([","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":"])"}],"title":"setSelectedRanges(_:)","role":"symbol","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/setselectedranges(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/textselection.json b/data/documentation/codeedittextview/textselectionmanager/textselection.json
new file mode 100644
index 000000000..77f17876d
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/textselection.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","interfaceLanguage":"swift"},"kind":"symbol","relationshipsSections":[{"type":"conformsTo","kind":"relationships","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH"],"title":"Conforms To"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelection"}]}],"kind":"declarations"}],"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/==(_:_:)"],"title":"Operators","generated":true,"anchor":"Operators"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/range"],"generated":true,"title":"Instance Properties","anchor":"Instance-Properties"},{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/hash(into:)"],"anchor":"Instance-Methods","title":"Instance Methods"},{"generated":true,"anchor":"Default-Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/Equatable-Implementations"],"title":"Default Implementations"}],"metadata":{"extendedModule":"CodeEditTextView","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextSelection"}],"modules":[{"name":"CodeEditTextView"}],"navigatorTitle":[{"kind":"identifier","text":"TextSelection"}],"role":"symbol","roleHeading":"Class","title":"TextSelectionManager.TextSelection","externalID":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","symbolKind":"class"},"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/textselection"]}],"seeAlsoSections":[{"generated":true,"title":"Text Selection","anchor":"Text-Selection","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/==(_:_:)":{"fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"TextSelection","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/==(_:_:)","kind":"symbol","title":"==(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/==(_:_:)"},"doc://codeedittextview.CodeEditTextView/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/Equatable-Implementations":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/Equatable-Implementations","kind":"article","abstract":[],"role":"collectionGroup","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/equatable-implementations","title":"Equatable Implementations","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/range":{"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/range","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"kind":"symbol","title":"range","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/range"},"doc://codeedittextview.CodeEditTextView/SH":{"type":"unresolvable","title":"Swift.Hashable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/hash(into:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"hash"},{"kind":"text","text":"("},{"kind":"externalParam","text":"into"},{"text":": ","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"preciseIdentifier":"s:s6HasherV","kind":"typeIdentifier","text":"Hasher"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/hash(into:)","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/hash(into:)","title":"hash(into:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/textselection/!=(_:_:).json b/data/documentation/codeedittextview/textselectionmanager/textselection/!=(_:_:).json
new file mode 100644
index 000000000..bf0a6996b
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/textselection/!=(_:_:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/!=(_:_:)"},"metadata":{"extendedModule":"Swift","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"!="},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"roleHeading":"Operator","modules":[{"relatedModules":["Swift"],"name":"CodeEditTextView"}],"externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:16CodeEditTextView0C16SelectionManagerC0cE0C","title":"!=(_:_:)","symbolKind":"op","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/textselection\/!=(_:_:)"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"Equatable.!=(_:_:)","type":"codeVoice"},{"text":".","type":"text"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/!=(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/!=(_:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/!=(_:_:)","kind":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"!=(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/textselection/==(_:_:).json b/data/documentation/codeedittextview/textselectionmanager/textselection/==(_:_:).json
new file mode 100644
index 000000000..d1e538a46
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/textselection/==(_:_:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/==(_:_:)"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"==","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"lhs","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"typeIdentifier","text":"TextSelection"},{"kind":"text","text":", "},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"typeIdentifier","text":"TextSelection","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/textselection\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection"]]},"metadata":{"externalID":"s:16CodeEditTextView0C16SelectionManagerC0cE0C2eeoiySbAE_AEtFZ","roleHeading":"Operator","role":"symbol","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"TextSelection","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"==(_:_:)","symbolKind":"op"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/==(_:_:)":{"fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"==","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"TextSelection","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C"},{"text":", ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/==(_:_:)","kind":"symbol","title":"==(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/==(_:_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/textselection/equatable-implementations.json b/data/documentation/codeedittextview/textselectionmanager/textselection/equatable-implementations.json
new file mode 100644
index 000000000..36fea4c01
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/textselection/equatable-implementations.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"API Collection","modules":[{"name":"CodeEditTextView"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection"]]},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/!=(_:_:)"],"generated":true,"title":"Operators","anchor":"Operators"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/textselection\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/Equatable-Implementations","interfaceLanguage":"swift"},"kind":"article","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/!=(_:_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/!=(_:_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/!=(_:_:)","kind":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"!=","kind":"identifier"},{"kind":"text","text":" "},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"!=(_:_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/textselection/hash(into:).json b/data/documentation/codeedittextview/textselectionmanager/textselection/hash(into:).json
new file mode 100644
index 000000000..e393e7967
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/textselection/hash(into:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hash","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"into"},{"kind":"text","text":" "},{"kind":"internalParam","text":"hasher"},{"kind":"text","text":": "},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"preciseIdentifier":"s:s6HasherV","text":"Hasher","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"externalID":"s:16CodeEditTextView0C16SelectionManagerC0cE0C4hash4intoys6HasherVz_tF","title":"hash(into:)","symbolKind":"method","role":"symbol","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"hash"},{"text":"(","kind":"text"},{"text":"into","kind":"externalParam"},{"kind":"text","text":": "},{"text":"inout","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","preciseIdentifier":"s:s6HasherV","text":"Hasher"},{"text":")","kind":"text"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/hash(into:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/textselection\/hash(into:)"]}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"code":"Hashable.hash(into:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/hash(into:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"hash"},{"kind":"text","text":"("},{"kind":"externalParam","text":"into"},{"text":": ","kind":"text"},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"preciseIdentifier":"s:s6HasherV","kind":"typeIdentifier","text":"Hasher"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/hash(into:)","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/hash(into:)","title":"hash(into:)","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/textselection/range.json b/data/documentation/codeedittextview/textselectionmanager/textselection/range.json
new file mode 100644
index 000000000..abc130ec1
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/textselection/range.json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection"]]},"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/range","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"range"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"roleHeading":"Instance Property","symbolKind":"property","externalID":"s:16CodeEditTextView0C16SelectionManagerC0cE0C5rangeSo8_NSRangeVvp","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"range","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}]},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/textselection\/range"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection/range":{"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/range","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"range","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"kind":"symbol","title":"range","abstract":[],"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection\/range"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/textselections.json b/data/documentation/codeedittextview/textselectionmanager/textselections.json
new file mode 100644
index 000000000..e984f2923
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/textselections.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/textSelections","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanager\/textselections"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"kind":"symbol","sections":[],"metadata":{"roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"textSelections"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"symbolKind":"property","role":"symbol","modules":[{"name":"CodeEditTextView"}],"title":"textSelections","externalID":"s:16CodeEditTextView0C16SelectionManagerC14textSelectionsSayAC0cE0CGvp"},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textSelections"},{"text":": [","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection"},{"kind":"text","text":"] { get }"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/textSelections":{"title":"textSelections","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/textSelections","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselections","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textSelections"},{"kind":"text","text":": ["},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanager/usesystemcursor.json b/data/documentation/codeedittextview/textselectionmanager/usesystemcursor.json
new file mode 100644
index 000000000..5f9b71a51
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanager/usesystemcursor.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"useSystemCursor"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"]]},"metadata":{"title":"useSystemCursor","externalID":"s:16CodeEditTextView0C16SelectionManagerC15useSystemCursorSbvp","symbolKind":"property","role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"useSystemCursor","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/useSystemCursor"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanager\/usesystemcursor"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/useSystemCursor":{"title":"useSystemCursor","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/useSystemCursor","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textselectionmanager\/usesystemcursor","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"useSystemCursor"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanagerdelegate.json b/data/documentation/codeedittextview/textselectionmanagerdelegate.json
new file mode 100644
index 000000000..27892b5c2
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanagerdelegate.json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/visibleTextRange"],"title":"Instance Properties","generated":true,"anchor":"Instance-Properties"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/estimatedLineHeight()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/setNeedsDisplay()"],"title":"Instance Methods","generated":true,"anchor":"Instance-Methods"}],"relationshipsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"],"kind":"relationships","type":"conformingTypes","title":"Conforming Types"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"},{"text":" : AnyObject","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView"}],"symbolKind":"protocol","title":"TextSelectionManagerDelegate","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextSelectionManagerDelegate","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"externalID":"s:16CodeEditTextView0C24SelectionManagerDelegateP","roleHeading":"Protocol","role":"symbol"},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanagerdelegate"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate":{"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"title":"TextSelectionManagerDelegate","abstract":[],"role":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate/visibleTextRange":{"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate\/visibletextrange","abstract":[],"title":"visibleTextRange","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/visibleTextRange","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"visibleTextRange"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"required":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate/estimatedLineHeight()":{"required":true,"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"estimatedLineHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate\/estimatedlineheight()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/estimatedLineHeight()","type":"topic","title":"estimatedLineHeight()","abstract":[],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate/setNeedsDisplay()":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setNeedsDisplay","kind":"identifier"},{"kind":"text","text":"()"}],"abstract":[],"required":true,"type":"topic","title":"setNeedsDisplay()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/setNeedsDisplay()","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate\/setneedsdisplay()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanagerdelegate/estimatedlineheight().json b/data/documentation/codeedittextview/textselectionmanagerdelegate/estimatedlineheight().json
new file mode 100644
index 000000000..69a024de8
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanagerdelegate/estimatedlineheight().json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/estimatedLineHeight()"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanagerdelegate\/estimatedlineheight()"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"title":"estimatedLineHeight()","externalID":"s:16CodeEditTextView0C24SelectionManagerDelegateP19estimatedLineHeight14CoreFoundation7CGFloatVyF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"estimatedLineHeight","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"required":true},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate":{"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"title":"TextSelectionManagerDelegate","abstract":[],"role":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate/estimatedLineHeight()":{"required":true,"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"estimatedLineHeight","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate\/estimatedlineheight()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/estimatedLineHeight()","type":"topic","title":"estimatedLineHeight()","abstract":[],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanagerdelegate/setneedsdisplay().json b/data/documentation/codeedittextview/textselectionmanagerdelegate/setneedsdisplay().json
new file mode 100644
index 000000000..49c32b1a9
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanagerdelegate/setneedsdisplay().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"metadata":{"roleHeading":"Instance Method","externalID":"s:16CodeEditTextView0C24SelectionManagerDelegateP15setNeedsDisplayyyF","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setNeedsDisplay","kind":"identifier"},{"kind":"text","text":"()"}],"title":"setNeedsDisplay()","role":"symbol","required":true},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setNeedsDisplay"},{"kind":"text","text":"()"}],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textselectionmanagerdelegate\/setneedsdisplay()"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/setNeedsDisplay()","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate":{"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"title":"TextSelectionManagerDelegate","abstract":[],"role":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate/setNeedsDisplay()":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setNeedsDisplay","kind":"identifier"},{"kind":"text","text":"()"}],"abstract":[],"required":true,"type":"topic","title":"setNeedsDisplay()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/setNeedsDisplay()","role":"symbol","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate\/setneedsdisplay()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textselectionmanagerdelegate/visibletextrange.json b/data/documentation/codeedittextview/textselectionmanagerdelegate/visibletextrange.json
new file mode 100644
index 000000000..86ccf18b3
--- /dev/null
+++ b/data/documentation/codeedittextview/textselectionmanagerdelegate/visibletextrange.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textselectionmanagerdelegate\/visibletextrange"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"visibleTextRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/visibleTextRange","interfaceLanguage":"swift"},"metadata":{"role":"symbol","title":"visibleTextRange","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"visibleTextRange","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":"?"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0C24SelectionManagerDelegateP07visibleC5RangeSo8_NSRangeVSgvp","symbolKind":"property","roleHeading":"Instance Property","required":true},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate/visibleTextRange":{"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate\/visibletextrange","abstract":[],"title":"visibleTextRange","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate\/visibleTextRange","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"visibleTextRange"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"required":true},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate":{"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"title":"TextSelectionManagerDelegate","abstract":[],"role":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview.json b/data/documentation/codeedittextview/textview.json
new file mode 100644
index 000000000..7767d3f67
--- /dev/null
+++ b/data/documentation/codeedittextview/textview.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Class","symbolKind":"class","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextView"}],"navigatorTitle":[{"kind":"identifier","text":"TextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)TextView","role":"symbol","title":"TextView","modules":[{"name":"CodeEditTextView"}]},"topicSections":[{"title":"Initializers","generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(coder:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)"],"anchor":"Initializers"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstResponder","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/allowsUndo","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/canBecomeKeyView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/contentType","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/documentRange","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/emphasisManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/font","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isEditable","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isFlipped","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isSelectable","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/kern","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/letterSpacing","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineBreakStrategy","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineHeight","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedTextAttributes","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/needsPanelToBecomeKey","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/overscrollAmount","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectionManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/string","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textColor","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textInsets","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/typingAttributes","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/undoManager","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/useSystemCursor","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/wrapLines"],"anchor":"Instance-Properties","title":"Instance Properties","generated":true},{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstMouse(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityFrame(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityInsertionPointLineNumber()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLabel()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLine(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityNumberOfCharacters()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-40q9z","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-70nmn","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(forLine:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRole()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedText()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRange()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRanges()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityString(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityValue()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityVisibleCharacterRange()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/addStorageDelegate(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/becomeFirstResponder()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/copy(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/cut(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delete(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackward(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackwardByDecomposingPreviousCharacter(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteForward(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfLine(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfParagraph(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfLine(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfParagraph(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordBackward(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordForward(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingEntered(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingUpdated(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draw(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/editSelections(callback:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/flagsChanged(with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hitTest(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertNewline(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertTab(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityElement()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityEnabled()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityFocused()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/keyDown(with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layout()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/menu(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDown(with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDragged(with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseUp(with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDown(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDownAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeft(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeftAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRight(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRightAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocument(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocumentAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraph(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraphAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocument(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocumentAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraph(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraphAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLine(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLineAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLine(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLineAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUp(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUpAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeft(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeftAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRight(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRightAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDown(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDownAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUp(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUpAndModifySelection(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/paste(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performDragOperation(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performKeyEquivalent(with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/prepareContent(in:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/removeStorageDelegate(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-2kupp","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-476w4","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resetCursorRects()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resignFirstResponder()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollSelectionToVisible()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollToRange(_:center:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectAll(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectColumns(betweenPointA:pointB:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectLine(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectWord(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityFocused(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRange(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRanges(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityValue(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setText(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setTextStorage(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setUndoManager(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updateFrameIfNeeded()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updatedViewport(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewDidEndLiveResize()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toSuperview:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toWindow:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/yank(_:)"],"title":"Instance Methods","anchor":"Instance-Methods"},{"title":"Type Properties","anchor":"Type-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/defaultTypingAttributes","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isCompatibleWithResponsiveScrolling","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textDidChangeNotification","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textWillChangeNotification"],"generated":true},{"anchor":"Default-Implementations","title":"Default Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/NSDraggingSource-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/NSTextInputClient-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/TextLayoutManagerDelegate-Implementations","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/TextSelectionManagerDelegate-Implementations"],"generated":true}],"sections":[],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"type":"text","text":" "},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"code":"NSTextView","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview"],"traits":[{"interfaceLanguage":"swift"}]}],"seeAlsoSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager"],"title":"Text View","anchor":"Text-View"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextView"}]}],"kind":"declarations"},{"kind":"content","content":[{"type":"heading","level":2,"text":"Overview","anchor":"overview"},{"type":"paragraph","inlineContent":[{"type":"text","text":"The text view maintains multiple helper classes for selecting, editing, and laying out text."}]},{"type":"codeListing","syntax":null,"code":["TextView","|-> NSTextStorage Base text storage.","|-> TextLayoutManager Creates, manages, and lays out text lines.","| |-> TextLineStorage Extremely fast object for storing and querying lines of text. Does not store text.","| |-> [TextLine] Represents a line of text.","| | |-> Typesetter Calculates line breaks and other layout information for text lines.","| | |-> [LineFragment] Represents a visual line of text, stored in an internal line storage object.","| |-> [LineFragmentView] Reusable line fragment view that draws a line fragment.","| |-> MarkedRangeManager Manages marked ranges, updates layout if needed.","|","|-> TextSelectionManager Maintains, modifies, and renders text selections","| |-> [TextSelection] Represents a range of selected text."]},{"type":"paragraph","inlineContent":[{"type":"text","text":"Conforms to "},{"type":"reference","identifier":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextcontent","isActive":true},{"text":" and","type":"text"},{"text":" ","type":"text"},{"identifier":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextinputclient","isActive":true,"type":"reference"},{"type":"text","text":" to work well with system"},{"type":"text","text":" "},{"text":"text interactions such as inserting text and marked text.","type":"text"}]}]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","interfaceLanguage":"swift"},"relationshipsSections":[{"title":"Inherits From","type":"inheritsFrom","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSView"],"kind":"relationships"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibilityElement","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibility","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAnimatablePropertyContainer","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAppearanceCustomization","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingDestination","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingSource","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSStandardKeyBindingResponding","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextContent","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextInputClient","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTouchBarProvider","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserActivityRestoring","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserInterfaceItemIdentification","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSCoding","doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","doc:\/\/codeedittextview.CodeEditTextView\/s8CopyableP","doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","doc:\/\/codeedittextview.CodeEditTextView\/SQ","doc:\/\/codeedittextview.CodeEditTextView\/SH","doc:\/\/codeedittextview.CodeEditTextView\/s8SendableP","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"],"type":"conformsTo","title":"Conforms To","kind":"relationships"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textStorage":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textstorage","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":"!","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","type":"topic","abstract":[{"type":"text","text":"The text storage object for the text view."}],"title":"textStorage","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfDocumentAndModifySelection(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToBeginningOfDocumentAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/movetobeginningofdocumentandmodifyselection(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocumentAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the beginning of the document extending the current selection."}],"title":"moveToBeginningOfDocumentAndModifySelection(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/NSTextInputClient-Implementations":{"kind":"article","url":"\/documentation\/codeedittextview\/textview\/nstextinputclient-implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/NSTextInputClient-Implementations","type":"topic","abstract":[],"title":"NSTextInputClient Implementations","role":"collectionGroup"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isFlipped":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"isFlipped","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"url":"\/documentation\/codeedittextview\/textview\/isflipped","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isFlipped","type":"topic","abstract":[],"title":"isFlipped","role":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAccessibility":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibility","type":"unresolvable","title":"AppKit.NSAccessibilityProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManager":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"layoutManager","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager","text":"TextLayoutManager"},{"text":"!","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/layoutmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManager","type":"topic","abstract":[{"text":"The layout manager for the text view.","type":"text"}],"title":"layoutManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/NSDraggingSource-Implementations":{"kind":"article","url":"\/documentation\/codeedittextview\/textview\/nsdraggingsource-implementations","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/NSDraggingSource-Implementations","type":"topic","abstract":[],"title":"NSDraggingSource Implementations","role":"collectionGroup"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isCompatibleWithResponsiveScrolling":{"fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isCompatibleWithResponsiveScrolling","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/iscompatiblewithresponsivescrolling","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isCompatibleWithResponsiveScrolling","type":"topic","abstract":[],"title":"isCompatibleWithResponsiveScrolling","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:)","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"string"},{"kind":"text","text":": "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":", ","kind":"text"},{"text":"font","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont","text":"NSFont"},{"kind":"text","text":", "},{"text":"textColor","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"},{"kind":"text","text":", "},{"text":"lineHeightMultiplier","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":", "},{"kind":"externalParam","text":"wrapLines"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"isEditable"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":", ","kind":"text"},{"text":"isSelectable","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"letterSpacing","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Double","preciseIdentifier":"s:Sd"},{"kind":"text","text":", "},{"text":"useSystemCursor","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"delegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP","text":"TextViewDelegate"},{"text":"?)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)","type":"topic","abstract":[{"text":"Initializes the text view.","type":"text"}],"title":"init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/useSystemCursor":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"useSystemCursor","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/usesystemcursor","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/useSystemCursor","type":"topic","abstract":[{"type":"text","text":"Determines if the text view uses the macOS system cursor or a "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","type":"reference","isActive":true},{"type":"text","text":" for cursors."}],"title":"useSystemCursor","role":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(cs)NSView":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(cs)NSView","title":"AppKit.NSView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfParagraph(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToBeginningOfParagraph","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/movetobeginningofparagraph(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraph(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the beginning of the line, if pressed again selects the next line up."}],"title":"moveToBeginningOfParagraph(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textDidChangeNotification":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textdidchangenotification","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textDidChangeNotification","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV","text":"Notification"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV4Namea","text":"Name"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textDidChangeNotification","type":"topic","abstract":[],"title":"textDidChangeNotification","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/yank(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"yank"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/yank(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/yank(_:)","type":"topic","abstract":[],"title":"yank(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/updatedViewport(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/updatedviewport(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"updatedViewport","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGRect","text":"CGRect"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updatedViewport(_:)","type":"topic","abstract":[],"title":"updatedViewport(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveLeftAndModifySelection(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveLeftAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/moveleftandmodifyselection(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeftAndModifySelection(_:)","type":"topic","abstract":[{"text":"Moves the cursors left one character extending the current selection.","type":"text"}],"title":"moveLeftAndModifySelection(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertNewline(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/insertnewline(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"insertNewline","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertNewline(_:)","type":"topic","abstract":[],"title":"insertNewline(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveDown(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveDown","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"url":"\/documentation\/codeedittextview\/textview\/movedown(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDown(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors down one character."}],"title":"moveDown(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordRightAndModifySelection(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/movewordrightandmodifyselection(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveWordRightAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRightAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors right one word extending the current selection."}],"title":"moveWordRightAndModifySelection(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSDraggingSource":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingSource","type":"unresolvable","title":"AppKit.NSDraggingSource"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilitySelectedText()":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtext()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilitySelectedText","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedText()","type":"topic","abstract":[],"title":"accessibilitySelectedText()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/edgeInsets":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/edgeinsets","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"edgeInsets"},{"text":": ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"abstract":[{"type":"text","text":"The edge insets for the text view. This value insets every piece of drawable content in the view, including"},{"text":" ","type":"text"},{"type":"text","text":"selection rects."}],"title":"edgeInsets"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/performKeyEquivalent(with:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"performKeyEquivalent","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/performkeyequivalent(with:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performKeyEquivalent(with:)","type":"topic","abstract":[],"title":"performKeyEquivalent(with:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToRightEndOfLineAndModifySelection(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetorightendoflineandmodifyselection(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveToRightEndOfLineAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLineAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors right to the end of the line extending the current selection."}],"title":"moveToRightEndOfLineAndModifySelection(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingEntered(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingEntered","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"any"},{"kind":"text","text":" "},{"preciseIdentifier":"c:objc(pl)NSDraggingInfo","text":"NSDraggingInfo","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDragOperation","text":"NSDragOperation"}],"url":"\/documentation\/codeedittextview\/textview\/draggingentered(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingEntered(_:)","type":"topic","abstract":[],"title":"draggingEntered(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/acceptsFirstMouse(for:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/acceptsfirstmouse(for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"acceptsFirstMouse","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstMouse(for:)","type":"topic","abstract":[],"title":"acceptsFirstMouse(for:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectAll(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectAll","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"url":"\/documentation\/codeedittextview\/textview\/selectall(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectAll(_:)","type":"topic","abstract":[],"title":"selectAll(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textColor":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textColor","title":"textColor","type":"topic","url":"\/documentation\/codeedittextview\/textview\/textcolor","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"textColor"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"abstract":[{"type":"text","text":"The text color of the text view."}],"role":"symbol","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/overscrollAmount":{"kind":"symbol","title":"overscrollAmount","url":"\/documentation\/codeedittextview\/textview\/overscrollamount","abstract":[{"type":"text","text":"The amount of extra space to add when overscroll is enabled, as a percentage of the viewport height"}],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/overscrollAmount","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"overscrollAmount","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteWordBackward(_:)":{"url":"\/documentation\/codeedittextview\/textview\/deletewordbackward(_:)","role":"symbol","title":"deleteWordBackward(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordBackward(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteWordBackward","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/init(coder:)":{"kind":"symbol","title":"init(coder:)","url":"\/documentation\/codeedittextview\/textview\/init(coder:)","abstract":[],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(coder:)","fragments":[{"kind":"identifier","text":"init"},{"text":"?(","kind":"text"},{"text":"coder","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSCoder","text":"NSCoder","kind":"typeIdentifier"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilityFocused(_:)":{"url":"\/documentation\/codeedittextview\/textview\/setaccessibilityfocused(_:)","role":"symbol","title":"setAccessibilityFocused(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityFocused(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setAccessibilityFocused","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRange(for:)-70nmn":{"kind":"symbol","title":"accessibilityRange(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-70nmn","abstract":[],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-70nmn","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityRange","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textWillChangeNotification":{"url":"\/documentation\/codeedittextview\/textview\/textwillchangenotification","role":"symbol","title":"textWillChangeNotification","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textWillChangeNotification","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"textWillChangeNotification","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Notification","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation12NotificationV4Namea","kind":"typeIdentifier","text":"Name"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToEndOfLine(_:)":{"url":"\/documentation\/codeedittextview\/textview\/deletetoendofline(_:)","role":"symbol","title":"deleteToEndOfLine(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfLine(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteToEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageDownAndModifySelection(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDownAndModifySelection(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/pagedownandmodifyselection(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"pageDownAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"title":"pageDownAndModifySelection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageDown(_:)":{"url":"\/documentation\/codeedittextview\/textview\/pagedown(_:)","role":"symbol","title":"pageDown(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDown(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"pageDown","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"doc://codeedittextview.CodeEditTextView/objc(pl)NSCoding":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSCoding","title":"Foundation.NSCoding","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/editSelections(callback:)":{"title":"editSelections(callback:)","kind":"symbol","type":"topic","abstract":[{"text":"Iterates over all text selections in the ","type":"text"},{"code":"TextView","type":"codeVoice"},{"type":"text","text":" and applies the provided callback."}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"editSelections"},{"text":"(","kind":"text"},{"text":"callback","kind":"externalParam"},{"kind":"text","text":": ("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","kind":"typeIdentifier","text":"TextView"},{"kind":"text","text":", "},{"text":"TextSelectionManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager"},{"kind":"text","text":"."},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s4Voida","text":"Void"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/editselections(callback:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/editSelections(callback:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/acceptsFirstResponder":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstResponder","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/acceptsfirstresponder","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"acceptsFirstResponder"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"acceptsFirstResponder"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSObject":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSObject","title":"ObjectiveC.NSObjectProtocol"},"doc://codeedittextview.CodeEditTextView/s7CVarArgP":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s7CVarArgP","title":"Swift.CVarArg"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectColumns(betweenPointA:pointB:)":{"abstract":[{"type":"text","text":"Set the user’s selection to a square region in the editor."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectColumns(betweenPointA:pointB:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/selectcolumns(betweenpointa:pointb:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"selectColumns","kind":"identifier"},{"kind":"text","text":"("},{"text":"betweenPointA","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@S@CGPoint","kind":"typeIdentifier","text":"CGPoint"},{"kind":"text","text":", "},{"text":"pointB","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@S@CGPoint","kind":"typeIdentifier","text":"CGPoint"},{"text":")","kind":"text"}],"title":"selectColumns(betweenPointA:pointB:)"},"doc://codeedittextview.CodeEditTextView/SH":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SH","title":"Swift.Hashable"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSUserInterfaceItemIdentification":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserInterfaceItemIdentification","title":"AppKit.NSUserInterfaceItemIdentification"},"https://developer.apple.com/documentation/appkit/nstextcontent":{"title":"NSTextContent","url":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextcontent","identifier":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextcontent","titleInlineContent":[{"type":"codeVoice","code":"NSTextContent"}],"type":"link"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/needsPanelToBecomeKey":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/needsPanelToBecomeKey","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/needspaneltobecomekey","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"needsPanelToBecomeKey","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"needsPanelToBecomeKey"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/updateFrameIfNeeded()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updateFrameIfNeeded()","title":"updateFrameIfNeeded()","url":"\/documentation\/codeedittextview\/textview\/updateframeifneeded()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"updateFrameIfNeeded","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"abstract":[{"type":"text","text":"Updates the view’s frame if needed depending on wrapping lines, a new maximum width, or changed available size."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/delegate":{"abstract":[{"type":"text","text":"The text view’s delegate."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delegate","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/delegate","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"delegate","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP","text":"TextViewDelegate","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"title":"delegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveDownAndModifySelection(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDownAndModifySelection(_:)","title":"moveDownAndModifySelection(_:)","url":"\/documentation\/codeedittextview\/textview\/movedownandmodifyselection(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveDownAndModifySelection","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"abstract":[{"type":"text","text":"Moves the cursors down one character extending the current selection."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/paste(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/paste(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/paste(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"paste"},{"kind":"text","text":"("},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"paste(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRange(for:)-40q9z":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-40q9z","title":"accessibilityRange(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-40q9z","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityRange"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteBackward(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackward(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletebackward(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteBackward","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"deleteBackward(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/mouseUp(with:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseUp(with:)","title":"mouseUp(with:)","url":"\/documentation\/codeedittextview\/textview\/mouseup(with:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mouseUp"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier","text":"NSEvent"},{"text":")","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isAccessibilityElement()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityElement()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/isaccessibilityelement()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"isAccessibilityElement"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"isAccessibilityElement()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/scrollSelectionToVisible()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollSelectionToVisible()","title":"scrollSelectionToVisible()","url":"\/documentation\/codeedittextview\/textview\/scrollselectiontovisible()","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scrollSelectionToVisible"},{"text":"()","kind":"text"}],"abstract":[{"type":"text","text":"Scrolls the upmost selection to the visible rect if "},{"code":"scrollView","type":"codeVoice"},{"type":"text","text":" is not "},{"type":"codeVoice","code":"nil"},{"type":"text","text":"."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/resignFirstResponder()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resignFirstResponder()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/resignfirstresponder()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"resignFirstResponder"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"resignFirstResponder()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/prepareContent(in:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/prepareContent(in:)","title":"prepareContent(in:)","url":"\/documentation\/codeedittextview\/textview\/preparecontent(in:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareContent"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"},{"kind":"text","text":")"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/word":{"abstract":[{"type":"text","text":"Break lines at word boundaries when possible."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/word","kind":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"title":"LineBreakStrategy.word"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilitySelectedTextRange()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilitySelectedTextRange"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"}],"abstract":[],"type":"topic","title":"accessibilitySelectedTextRange()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRange()","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtextrange()"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSUserActivityRestoring":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSUserActivityRestoring","title":"AppKit.NSUserActivityRestoring"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAccessibilityElement":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAccessibilityElement","title":"AppKit.NSAccessibilityElementProtocol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertText(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:)","title":"insertText(_:)","url":"\/documentation\/codeedittextview\/textview\/inserttext(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertText"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":")"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityNumberOfCharacters()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityNumberOfCharacters()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilitynumberofcharacters()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityNumberOfCharacters"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"accessibilityNumberOfCharacters()"},"doc://codeedittextview.CodeEditTextView/s8CopyableP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s8CopyableP","type":"unresolvable","title":"Swift.Copyable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/becomeFirstResponder()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/becomeFirstResponder()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/becomefirstresponder()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"becomeFirstResponder"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"becomeFirstResponder()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveUpAndModifySelection(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUpAndModifySelection(_:)","url":"\/documentation\/codeedittextview\/textview\/moveupandmodifyselection(_:)","title":"moveUpAndModifySelection(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveUpAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"abstract":[{"type":"text","text":"Moves the cursors up one character extending the current selection."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityInsertionPointLineNumber()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityInsertionPointLineNumber()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilityinsertionpointlinenumber()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityInsertionPointLineNumber","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"}],"title":"accessibilityInsertionPointLineNumber()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/hitTest(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hitTest(_:)","title":"hitTest(_:)","url":"\/documentation\/codeedittextview\/textview\/hittest(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hitTest","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint","text":"NSPoint"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"Returns the responding view for a given point."}]},"doc://codeedittextview.CodeEditTextView/objc(pl)NSDraggingDestination":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSDraggingDestination","title":"AppKit.NSDraggingDestination"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManagerDelegate":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManagerDelegate","navigatorTitle":[{"kind":"identifier","text":"TextLayoutManagerDelegate"}],"title":"TextLayoutManagerDelegate","url":"\/documentation\/codeedittextview\/textlayoutmanagerdelegate","role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextLayoutManagerDelegate","kind":"identifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordLeft(_:)":{"abstract":[{"type":"text","text":"Moves the cursors left one word."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeft(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movewordleft(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveWordLeft"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"moveWordLeft(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRange(forLine:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(forLine:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityrange(forline:)","title":"accessibilityRange(forLine:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityRange"},{"kind":"text","text":"("},{"kind":"externalParam","text":"forLine"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/letterSpacing":{"abstract":[{"type":"text","text":"A multiplier that determines the amount of space between characters. "},{"type":"codeVoice","code":"1.0"},{"type":"text","text":" indicates no space,"},{"type":"text","text":" "},{"type":"codeVoice","code":"2.0"},{"type":"text","text":" indicates one character of space between other characters."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/letterSpacing","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/letterspacing","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"letterSpacing","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sd","text":"Double","kind":"typeIdentifier"}],"title":"letterSpacing"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layout()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layout()","title":"layout()","url":"\/documentation\/codeedittextview\/textview\/layout()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"layout","kind":"identifier"},{"kind":"text","text":"()"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectionManager":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"selectionManager","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","text":"TextSelectionManager","kind":"typeIdentifier"},{"text":"!","kind":"text"}],"title":"selectionManager","url":"\/documentation\/codeedittextview\/textview\/selectionmanager","kind":"symbol","abstract":[{"text":"The selection manager for the text view.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectionManager","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/allowsUndo":{"title":"allowsUndo","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/allowsUndo","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"allowsUndo","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/allowsundo"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/resetCursorRects()":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"resetCursorRects","kind":"identifier"},{"text":"()","kind":"text"}],"title":"resetCursorRects()","url":"\/documentation\/codeedittextview\/textview\/resetcursorrects()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resetCursorRects()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/s8SendableP":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s8SendableP","title":"Swift.Sendable","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToRightEndOfLine(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToRightEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"moveToRightEndOfLine(_:)","url":"\/documentation\/codeedittextview\/textview\/movetorightendofline(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors right to the end of the line.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLine(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/viewWillMove(toSuperview:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toSuperview:)","title":"viewWillMove(toSuperview:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"viewWillMove"},{"text":"(","kind":"text"},{"text":"toSuperview","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/viewwillmove(tosuperview:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setUndoManager(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setUndoManager"},{"text":"(","kind":"text"},{"text":"CEUndoManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)CEUndoManager"},{"kind":"text","text":")"}],"title":"setUndoManager(_:)","url":"\/documentation\/codeedittextview\/textview\/setundomanager(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setUndoManager(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/menu(for:)":{"title":"menu(for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/menu(for:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"menu","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier","text":"NSEvent"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:objc(cs)NSMenu","text":"NSMenu","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/menu(for:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityVisibleCharacterRange()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityVisibleCharacterRange"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"}],"title":"accessibilityVisibleCharacterRange()","url":"\/documentation\/codeedittextview\/textview\/accessibilityvisiblecharacterrange()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityVisibleCharacterRange()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/string":{"title":"string","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/string","type":"topic","abstract":[{"type":"text","text":"The string for the text view."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"string","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/string"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isSelectable":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isSelectable"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"isSelectable","url":"\/documentation\/codeedittextview\/textview\/isselectable","kind":"symbol","abstract":[{"type":"text","text":"Determines if the text view responds to selection events, such as clicks."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isSelectable","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/wrapLines":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/wrapLines","title":"wrapLines","type":"topic","abstract":[{"type":"text","text":"Whether or not the editor should wrap lines"}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrapLines"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/wraplines"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/viewWillMove(toWindow:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"viewWillMove"},{"kind":"text","text":"("},{"text":"toWindow","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSWindow","text":"NSWindow","kind":"typeIdentifier"},{"text":"?)","kind":"text"}],"title":"viewWillMove(toWindow:)","url":"\/documentation\/codeedittextview\/textview\/viewwillmove(towindow:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toWindow:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/s23CustomStringConvertibleP":{"title":"Swift.CustomStringConvertible","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s23CustomStringConvertibleP","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilitySelectedTextRanges(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setAccessibilitySelectedTextRanges"},{"text":"([","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSValue","kind":"typeIdentifier","text":"NSValue"},{"kind":"text","text":"]?)"}],"title":"setAccessibilitySelectedTextRanges(_:)","url":"\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextranges(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRanges(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveUp(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUp(_:)","title":"moveUp(_:)","type":"topic","abstract":[{"text":"Moves the cursors up one character.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveUp"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/moveup(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/replaceCharacters(in:with:skipUpdateSelection:)-476w4":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-476w4","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-476w4","title":"replaceCharacters(in:with:skipUpdateSelection:)","type":"topic","abstract":[{"type":"text","text":"Replace the characters in the given ranges with the given string."}],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"replaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":"], "},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":", ","kind":"text"},{"text":"skipUpdateSelection","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingUpdated(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingUpdated","kind":"identifier"},{"kind":"text","text":"("},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation"}],"title":"draggingUpdated(_:)","url":"\/documentation\/codeedittextview\/textview\/draggingupdated(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingUpdated(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteWordForward(_:)":{"title":"deleteWordForward(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordForward(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"deleteWordForward"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletewordforward(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textInsets":{"abstract":[{"type":"text","text":"Insets just drawn text from the horizontal edges. This is in addition to the insets in "},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets"},{"type":"text","text":", but does"},{"text":" ","type":"text"},{"text":"not apply to other drawn content.","type":"text"}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textInsets","type":"topic","url":"\/documentation\/codeedittextview\/textview\/textinsets","title":"textInsets","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textInsets"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/objc(pl)NSStandardKeyBindingResponding":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSStandardKeyBindingResponding","title":"AppKit.NSStandardKeyBindingResponding"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/markedTextAttributes":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedTextAttributes","title":"markedTextAttributes","type":"topic","abstract":[{"type":"text","text":"The attributes used to render marked text."},{"type":"text","text":" "},{"text":"Defaults to a single underline.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"markedTextAttributes"},{"text":": [","kind":"text"},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"]","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/markedtextattributes"},"doc://codeedittextview.CodeEditTextView/s28CustomDebugStringConvertibleP":{"title":"Swift.CustomDebugStringConvertible","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/s28CustomDebugStringConvertibleP"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/lineHeight":{"title":"lineHeight","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineHeight","type":"topic","abstract":[{"type":"text","text":"The line height as a multiple of the font’s line height. 1.0 represents no change in height."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineHeight"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/lineheight"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/replaceCharacters(in:with:skipUpdateSelection:)-2kupp":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"replaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"skipUpdateSelection","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"replaceCharacters(in:with:skipUpdateSelection:)","url":"\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-2kupp","kind":"symbol","abstract":[{"text":"Replace the characters in a range with a new string.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-2kupp","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToBeginningOfParagraph(_:)":{"title":"deleteToBeginningOfParagraph(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfParagraph(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"deleteToBeginningOfParagraph","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletetobeginningofparagraph(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilitySelectedTextRanges()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilitySelectedTextRanges","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"NSValue","preciseIdentifier":"c:objc(cs)NSValue","kind":"typeIdentifier"},{"text":"]?","kind":"text"}],"title":"accessibilitySelectedTextRanges()","url":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtextranges()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRanges()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordRight(_:)":{"title":"moveWordRight(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRight(_:)","type":"topic","abstract":[{"text":"Moves the cursors right one word.","type":"text"}],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveWordRight","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movewordright(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/TextLayoutManagerDelegate-Implementations":{"title":"TextLayoutManagerDelegate Implementations","url":"\/documentation\/codeedittextview\/textview\/textlayoutmanagerdelegate-implementations","kind":"article","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/TextLayoutManagerDelegate-Implementations","type":"topic","role":"collectionGroup"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfDocumentAndModifySelection(_:)":{"title":"moveToEndOfDocumentAndModifySelection(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocumentAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the end of the document extending the current selection."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToEndOfDocumentAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoendofdocumentandmodifyselection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfParagraphAndModifySelection(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToBeginningOfParagraphAndModifySelection"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"moveToBeginningOfParagraphAndModifySelection(_:)","url":"\/documentation\/codeedittextview\/textview\/movetobeginningofparagraphandmodifyselection(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors to the beginning of the line, if pressed again selects the next line up extending the current","type":"text"},{"type":"text","text":" "},{"text":"selection.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraphAndModifySelection(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSTouchBarProvider":{"type":"unresolvable","title":"AppKit.NSTouchBarProvider","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTouchBarProvider"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToBeginningOfLine(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"deleteToBeginningOfLine","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"deleteToBeginningOfLine(_:)","url":"\/documentation\/codeedittextview\/textview\/deletetobeginningofline(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfLine(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveLeft(_:)":{"title":"moveLeft(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeft(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors left one character."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveLeft","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/moveleft(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/delete(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"delete","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta"},{"kind":"text","text":")"}],"title":"delete(_:)","url":"\/documentation\/codeedittextview\/textview\/delete(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delete(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/documentRange":{"title":"documentRange","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/documentRange","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"documentRange","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/documentrange"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageUp(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"pageUp","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"pageUp(_:)","url":"\/documentation\/codeedittextview\/textview\/pageup(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUp(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAnimatablePropertyContainer":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAnimatablePropertyContainer","title":"AppKit.NSAnimatablePropertyContainer"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSTextContent":{"type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextContent","title":"AppKit.NSTextContent"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/cut(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/cut(_:)","title":"cut(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cut"},{"text":"(","kind":"text"},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/cut(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityLine(for:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityLine"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"title":"accessibilityLine(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityline(for:)","kind":"symbol","abstract":[{"type":"text","text":"The line index for a given character offset."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLine(for:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/flagsChanged(with:)":{"title":"flagsChanged(with:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/flagsChanged(with:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flagsChanged","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier","text":"NSEvent"},{"kind":"text","text":")"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/flagschanged(with:)"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSAppearanceCustomization":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSAppearanceCustomization","title":"AppKit.NSAppearanceCustomization","type":"unresolvable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/typingAttributes":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/typingAttributes","title":"typingAttributes","type":"topic","abstract":[{"text":"The attributes to apply to inserted text.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"typingAttributes","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"]"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/typingattributes"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertTab(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"insertTab","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"insertTab(_:)","url":"\/documentation\/codeedittextview\/textview\/inserttab(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertTab(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectWord(_:)":{"title":"selectWord(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectWord(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"selectWord","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/selectword(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityFrame(for:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityFrame","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"}],"title":"accessibilityFrame(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityframe(for:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityFrame(for:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteForward(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteForward(_:)","title":"deleteForward(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteForward","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deleteforward(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilitySelectedTextRange(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setAccessibilitySelectedTextRange","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":")"}],"title":"setAccessibilitySelectedTextRange(_:)","url":"\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextrange(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRange(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageUpAndModifySelection(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUpAndModifySelection(_:)","title":"pageUpAndModifySelection(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"pageUpAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/pageupandmodifyselection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/performDragOperation(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"performDragOperation","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"any"},{"text":" ","kind":"text"},{"text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"performDragOperation(_:)","url":"\/documentation\/codeedittextview\/textview\/performdragoperation(_:)","kind":"symbol","abstract":[{"type":"text","text":"Performs the final drop operation."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performDragOperation(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/copy(_:)":{"title":"copy(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/copy(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"copy"},{"kind":"text","text":"("},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/copy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToEndOfParagraph(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteToEndOfParagraph"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"title":"deleteToEndOfParagraph(_:)","url":"\/documentation\/codeedittextview\/textview\/deletetoendofparagraph(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfParagraph(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/addStorageDelegate(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/addStorageDelegate(_:)","title":"addStorageDelegate(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"addStorageDelegate"},{"kind":"text","text":"("},{"text":"NSTextStorageDelegate","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/addstoragedelegate(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveRight(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveRight"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"title":"moveRight(_:)","url":"\/documentation\/codeedittextview\/textview\/moveright(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors right one character.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRight(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteBackwardByDecomposingPreviousCharacter(_:)":{"title":"deleteBackwardByDecomposingPreviousCharacter(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackwardByDecomposingPreviousCharacter(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"deleteBackwardByDecomposingPreviousCharacter","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletebackwardbydecomposingpreviouscharacter(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/mouseDragged(with:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"mouseDragged","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"text":"NSEvent","preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"mouseDragged(with:)","url":"\/documentation\/codeedittextview\/textview\/mousedragged(with:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDragged(with:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfParagraphAndModifySelection(_:)":{"title":"moveToEndOfParagraphAndModifySelection(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraphAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the end of the line, if pressed again selects the next line up extending the current"},{"text":" ","type":"text"},{"text":"selection.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToEndOfParagraphAndModifySelection","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoendofparagraphandmodifyselection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/TextSelectionManagerDelegate-Implementations":{"title":"TextSelectionManagerDelegate Implementations","url":"\/documentation\/codeedittextview\/textview\/textselectionmanagerdelegate-implementations","kind":"article","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/TextSelectionManagerDelegate-Implementations","type":"topic","role":"collectionGroup"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/scrollToRange(_:center:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollToRange(_:center:)","title":"scrollToRange(_:center:)","type":"topic","abstract":[{"type":"text","text":"Scrolls the view to the specified range."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"scrollToRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"text":"center","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":")"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/scrolltorange(_:center:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draw(_:)":{"title":"draw(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"draw","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/draw(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draw(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityValue()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityValue","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?"}],"title":"accessibilityValue()","url":"\/documentation\/codeedittextview\/textview\/accessibilityvalue()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityValue()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/font":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/font","title":"font","type":"topic","abstract":[{"type":"text","text":"The default font of the text view."}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"font","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont","text":"NSFont"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/font"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityString(for:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityString","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?"}],"title":"accessibilityString(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilitystring(for:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityString(for:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectLine(_:)":{"title":"selectLine(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectLine(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"selectLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/selectline(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/defaultTypingAttributes":{"fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"defaultTypingAttributes"},{"text":": [","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"]","kind":"text"}],"title":"defaultTypingAttributes","url":"\/documentation\/codeedittextview\/textview\/defaulttypingattributes","kind":"symbol","abstract":[{"text":"The default typing attributes:","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/defaultTypingAttributes","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isEditable":{"title":"isEditable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isEditable","type":"topic","abstract":[{"text":"Determines if the text view’s content can be edited.","type":"text"}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"isEditable","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/iseditable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/keyDown(with:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"keyDown","kind":"identifier"},{"kind":"text","text":"("},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"keyDown(with:)","url":"\/documentation\/codeedittextview\/textview\/keydown(with:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/keyDown(with:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/undoManager":{"title":"undoManager","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/undoManager","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"undoManager","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"UndoManager","preciseIdentifier":"c:objc(cs)NSUndoManager"},{"kind":"text","text":"?"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/undomanager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/emphasisManager":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/emphasismanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/emphasisManager","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"emphasisManager","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"EmphasisManager","preciseIdentifier":"s:16CodeEditTextView15EmphasisManagerC"},{"text":"?","kind":"text"}],"abstract":[{"text":"Manages emphasized text ranges in the text view","type":"text"}],"title":"emphasisManager"},"doc://codeedittextview.CodeEditTextView/objc(pl)NSTextInputClient":{"title":"AppKit.NSTextInputClient","type":"unresolvable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/objc(pl)NSTextInputClient"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/viewDidEndLiveResize()":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/viewdidendliveresize()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewDidEndLiveResize()","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"viewDidEndLiveResize"},{"kind":"text","text":"()"}],"abstract":[],"title":"viewDidEndLiveResize()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/contentType":{"title":"contentType","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"contentType","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSTextContentType","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSTextContentType"},{"text":"?","kind":"text"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/contenttype","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/contentType"},"doc://codeedittextview.CodeEditTextView/SQ":{"title":"Swift.Equatable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/SQ","type":"unresolvable"},"https://developer.apple.com/documentation/appkit/nstextinputclient":{"identifier":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextinputclient","url":"https:\/\/developer.apple.com\/documentation\/appkit\/nstextinputclient","title":"NSTextInputClient","titleInlineContent":[{"type":"codeVoice","code":"NSTextInputClient"}],"type":"link"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setText(_:)":{"kind":"symbol","abstract":[{"type":"text","text":"Sets the text view’s text to a new value."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setText(_:)","role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setText"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/settext(_:)","title":"setText(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManagerDelegate":{"navigatorTitle":[{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"title":"TextSelectionManagerDelegate","abstract":[],"role":"symbol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"TextSelectionManagerDelegate"}],"type":"topic","url":"\/documentation\/codeedittextview\/textselectionmanagerdelegate","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManagerDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordLeftAndModifySelection(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveWordLeftAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"type":"topic","url":"\/documentation\/codeedittextview\/textview\/movewordleftandmodifyselection(_:)","role":"symbol","kind":"symbol","title":"moveWordLeftAndModifySelection(_:)","abstract":[{"text":"Moves the cursors left one word extending the current selection.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeftAndModifySelection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/canBecomeKeyView":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/canBecomeKeyView","kind":"symbol","title":"canBecomeKeyView","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"canBecomeKeyView","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/codeedittextview\/textview\/canbecomekeyview","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/lineBreakStrategy":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineBreakStrategy","kind":"identifier"},{"kind":"text","text":": "},{"text":"LineBreakStrategy","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"}],"type":"topic","url":"\/documentation\/codeedittextview\/textview\/linebreakstrategy","role":"symbol","kind":"symbol","title":"lineBreakStrategy","abstract":[{"type":"text","text":"The strategy to use when breaking lines. Defaults to "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","isActive":true},{"text":".","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineBreakStrategy"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/removeStorageDelegate(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/removeStorageDelegate(_:)","kind":"symbol","title":"removeStorageDelegate(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeStorageDelegate"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/removestoragedelegate(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isAccessibilityEnabled()":{"url":"\/documentation\/codeedittextview\/textview\/isaccessibilityenabled()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityEnabled()","title":"isAccessibilityEnabled()","type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"isAccessibilityEnabled","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setTextStorage(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setTextStorage(_:)","kind":"symbol","title":"setTextStorage(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setTextStorage"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage","kind":"typeIdentifier"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/settextstorage(_:)","abstract":[{"type":"text","text":"Set a new text storage object for the view."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/mouseDown(with:)":{"url":"\/documentation\/codeedittextview\/textview\/mousedown(with:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDown(with:)","title":"mouseDown(with:)","type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"mouseDown","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveRightAndModifySelection(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRightAndModifySelection(_:)","kind":"symbol","title":"moveRightAndModifySelection(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveRightAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/moverightandmodifyselection(_:)","abstract":[{"type":"text","text":"Moves the cursors right one character extending the current selection."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilityValue(_:)":{"url":"\/documentation\/codeedittextview\/textview\/setaccessibilityvalue(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityValue(_:)","title":"setAccessibilityValue(_:)","type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setAccessibilityValue","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfDocument(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocument(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the end of the document."}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoendofdocument(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToEndOfDocument","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"moveToEndOfDocument(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfDocument(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocument(_:)","kind":"symbol","title":"moveToBeginningOfDocument(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToBeginningOfDocument","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"url":"\/documentation\/codeedittextview\/textview\/movetobeginningofdocument(_:)","abstract":[{"text":"Moves the cursors to the beginning of the document.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityLabel()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityLabel","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?"}],"abstract":[],"type":"topic","title":"accessibilityLabel()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLabel()","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilitylabel()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToLeftEndOfLine(_:)":{"url":"\/documentation\/codeedittextview\/textview\/movetoleftendofline(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors left to the end of the line.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLine(_:)","title":"moveToLeftEndOfLine(_:)","type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToLeftEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/kern":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/kern","kind":"symbol","title":"kern","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"kern","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/kern","abstract":[{"type":"text","text":"The kern to use for characters. Defaults to "},{"code":"0.0","type":"codeVoice"},{"text":" and is updated when ","type":"text"},{"type":"codeVoice","code":"letterSpacing"},{"type":"text","text":" is set."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfParagraph(_:)":{"title":"moveToEndOfParagraph(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Moves the cursors to the end of the line, if pressed again selects the next line up.","type":"text"}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToEndOfParagraph"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/movetoendofparagraph(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraph(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isAccessibilityFocused()":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/isaccessibilityfocused()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityFocused()","title":"isAccessibilityFocused()","role":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isAccessibilityFocused"},{"kind":"text","text":"() -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToLeftEndOfLineAndModifySelection(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLineAndModifySelection(_:)","title":"moveToLeftEndOfLineAndModifySelection(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToLeftEndOfLineAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"kind":"symbol","type":"topic","abstract":[{"text":"Moves the cursors left to the end of the line extending the current selection.","type":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoleftendoflineandmodifyselection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRole()":{"title":"accessibilityRole()","url":"\/documentation\/codeedittextview\/textview\/accessibilityrole()","role":"symbol","abstract":[],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRole()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"accessibilityRole","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"c:@S@NSAccessibility","text":"NSAccessibility","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"c:@T@NSAccessibilityRole","kind":"typeIdentifier","text":"Role"},{"text":"?","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/acceptsfirstmouse(for:).json b/data/documentation/codeedittextview/textview/acceptsfirstmouse(for:).json
new file mode 100644
index 000000000..c537a7af2
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/acceptsfirstmouse(for:).json
@@ -0,0 +1 @@
+{"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"acceptsFirstMouse"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":" "},{"text":"event","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSEvent","preciseIdentifier":"c:objc(cs)NSEvent"},{"text":"?) -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstMouse(for:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/acceptsfirstmouse(for:)"]}],"metadata":{"title":"acceptsFirstMouse(for:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"acceptsFirstMouse"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSEvent","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)acceptsFirstMouse:","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/acceptsFirstMouse(for:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/acceptsfirstmouse(for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"acceptsFirstMouse","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstMouse(for:)","type":"topic","abstract":[],"title":"acceptsFirstMouse(for:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/acceptsfirstresponder.json b/data/documentation/codeedittextview/textview/acceptsfirstresponder.json
new file mode 100644
index 000000000..2ef394d44
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/acceptsfirstresponder.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"acceptsFirstResponder","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstResponder","interfaceLanguage":"swift"},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","role":"symbol","title":"acceptsFirstResponder","roleHeading":"Instance Property","symbolKind":"property","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(py)acceptsFirstResponder","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"acceptsFirstResponder"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/acceptsfirstresponder"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/acceptsFirstResponder":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/acceptsFirstResponder","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/acceptsfirstresponder","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"acceptsFirstResponder"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"acceptsFirstResponder"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityframe(for:).json b/data/documentation/codeedittextview/textview/accessibilityframe(for:).json
new file mode 100644
index 000000000..4204906ee
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityframe(for:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilityFrame","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","text":"NSRect","kind":"typeIdentifier"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityFrameForRange:","extendedModule":"CodeEditTextView","role":"symbol","title":"accessibilityFrame(for:)","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityFrame(for:)"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilityFrame","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"range"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/accessibilityframe(for:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityFrame(for:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityFrame","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"}],"title":"accessibilityFrame(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityframe(for:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityFrame(for:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityinsertionpointlinenumber().json b/data/documentation/codeedittextview/textview/accessibilityinsertionpointlinenumber().json
new file mode 100644
index 000000000..cc537ef31
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityinsertionpointlinenumber().json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilityinsertionpointlinenumber()"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityInsertionPointLineNumber()","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityInsertionPointLineNumber","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilityInsertionPointLineNumber","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"}],"role":"symbol","extendedModule":"CodeEditTextView","title":"accessibilityInsertionPointLineNumber()"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityInsertionPointLineNumber"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityInsertionPointLineNumber()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityInsertionPointLineNumber()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilityinsertionpointlinenumber()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityInsertionPointLineNumber","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"}],"title":"accessibilityInsertionPointLineNumber()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilitylabel().json b/data/documentation/codeedittextview/textview/accessibilitylabel().json
new file mode 100644
index 000000000..bf7b84a07
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilitylabel().json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","roleHeading":"Instance Method","extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityLabel","title":"accessibilityLabel()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityLabel"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"kind":"text","text":"?"}],"modules":[{"name":"CodeEditTextView"}]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/accessibilitylabel()"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilityLabel","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLabel()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityLabel()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityLabel","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?"}],"abstract":[],"type":"topic","title":"accessibilityLabel()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLabel()","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilitylabel()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityline(for:).json b/data/documentation/codeedittextview/textview/accessibilityline(for:).json
new file mode 100644
index 000000000..7b4b7e326
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityline(for:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityLine"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"index","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"languages":["swift"]}]}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilityline(for:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLine(for:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityLineForIndex:","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityLine"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"title":"accessibilityLine(for:)","symbolKind":"method"},"abstract":[{"text":"The line index for a given character offset.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityLine(for:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityLine"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"}],"title":"accessibilityLine(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityline(for:)","kind":"symbol","abstract":[{"type":"text","text":"The line index for a given character offset."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityLine(for:)","type":"topic","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilitynumberofcharacters().json b/data/documentation/codeedittextview/textview/accessibilitynumberofcharacters().json
new file mode 100644
index 000000000..6467659a5
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilitynumberofcharacters().json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilitynumberofcharacters()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityNumberOfCharacters()","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"title":"accessibilityNumberOfCharacters()","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityNumberOfCharacters","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityNumberOfCharacters"},{"text":"() -> ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"}],"extendedModule":"CodeEditTextView"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilityNumberOfCharacters","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Si","kind":"typeIdentifier","text":"Int"}]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityNumberOfCharacters()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityNumberOfCharacters()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilitynumberofcharacters()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityNumberOfCharacters"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"accessibilityNumberOfCharacters()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityrange(for:)-40q9z.json b/data/documentation/codeedittextview/textview/accessibilityrange(for:)-40q9z.json
new file mode 100644
index 000000000..51e49b9ba
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityrange(for:)-40q9z.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityRange"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"text":"point","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"NSPoint","preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"}],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityRangeForPosition:","title":"accessibilityRange(for:)","symbolKind":"method","role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityRange"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-40q9z"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-40q9z"]}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRange(for:)-40q9z":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-40q9z","title":"accessibilityRange(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-40q9z","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityRange"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityrange(for:)-70nmn.json b/data/documentation/codeedittextview/textview/accessibilityrange(for:)-70nmn.json
new file mode 100644
index 000000000..773faed23
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityrange(for:)-70nmn.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-70nmn"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityRangeForIndex:","extendedModule":"CodeEditTextView","title":"accessibilityRange(for:)","role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityRange","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"modules":[{"name":"CodeEditTextView"}]},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilityRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"text":"index","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-70nmn"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRange(for:)-70nmn":{"kind":"symbol","title":"accessibilityRange(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-70nmn","abstract":[],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(for:)-70nmn","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityRange","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityrange(forline:).json b/data/documentation/codeedittextview/textview/accessibilityrange(forline:).json
new file mode 100644
index 000000000..e931c8892
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityrange(forline:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilityrange(forline:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityRangeForLine:","title":"accessibilityRange(forLine:)","symbolKind":"method","role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityRange","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"forLine"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilityRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"forLine"},{"text":" ","kind":"text"},{"text":"line","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Si","text":"Int"},{"kind":"text","text":") -> "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}]}],"kind":"declarations"}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(forLine:)","interfaceLanguage":"swift"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRange(forLine:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRange(forLine:)","url":"\/documentation\/codeedittextview\/textview\/accessibilityrange(forline:)","title":"accessibilityRange(forLine:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilityRange"},{"kind":"text","text":"("},{"kind":"externalParam","text":"forLine"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityrole().json b/data/documentation/codeedittextview/textview/accessibilityrole().json
new file mode 100644
index 000000000..7d8021919
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityrole().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"metadata":{"title":"accessibilityRole()","role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityRole"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"c:@S@NSAccessibility","text":"NSAccessibility","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"c:@T@NSAccessibilityRole","kind":"typeIdentifier","text":"Role"},{"kind":"text","text":"?"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityRole","extendedModule":"CodeEditTextView","symbolKind":"method"},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRole()","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilityrole()"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityRole","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"NSAccessibility","kind":"typeIdentifier","preciseIdentifier":"c:@S@NSAccessibility"},{"text":".","kind":"text"},{"text":"Role","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAccessibilityRole"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityRole()":{"title":"accessibilityRole()","url":"\/documentation\/codeedittextview\/textview\/accessibilityrole()","role":"symbol","abstract":[],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityRole()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"accessibilityRole","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"c:@S@NSAccessibility","text":"NSAccessibility","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"c:@T@NSAccessibilityRole","kind":"typeIdentifier","text":"Role"},{"text":"?","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityselectedtext().json b/data/documentation/codeedittextview/textview/accessibilityselectedtext().json
new file mode 100644
index 000000000..a4279aac2
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityselectedtext().json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilitySelectedText"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"kind":"text","text":"?"}],"symbolKind":"method","title":"accessibilitySelectedText()","extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilitySelectedText","modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilitySelectedText"},{"kind":"text","text":"() -> "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/accessibilityselectedtext()"]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedText()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilitySelectedText()":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtext()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilitySelectedText","kind":"identifier"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedText()","type":"topic","abstract":[],"title":"accessibilitySelectedText()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityselectedtextrange().json b/data/documentation/codeedittextview/textview/accessibilityselectedtextrange().json
new file mode 100644
index 000000000..05239ffe5
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityselectedtextrange().json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"accessibilitySelectedTextRange","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilitySelectedTextRange","extendedModule":"CodeEditTextView","role":"symbol","title":"accessibilitySelectedTextRange()","modules":[{"name":"CodeEditTextView"}]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/accessibilityselectedtextrange()"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"accessibilitySelectedTextRange"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}]}],"kind":"declarations"}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRange()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilitySelectedTextRange()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilitySelectedTextRange"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"}],"abstract":[],"type":"topic","title":"accessibilitySelectedTextRange()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRange()","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtextrange()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityselectedtextranges().json b/data/documentation/codeedittextview/textview/accessibilityselectedtextranges().json
new file mode 100644
index 000000000..c88c901fe
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityselectedtextranges().json
@@ -0,0 +1 @@
+{"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilitySelectedTextRanges","extendedModule":"CodeEditTextView","title":"accessibilitySelectedTextRanges()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilitySelectedTextRanges"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSValue","text":"NSValue"},{"kind":"text","text":"]?"}],"roleHeading":"Instance Method","symbolKind":"method"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilityselectedtextranges()"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRanges()","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"accessibilitySelectedTextRanges","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"NSValue","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSValue"},{"kind":"text","text":"]?"}],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilitySelectedTextRanges()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilitySelectedTextRanges","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"NSValue","preciseIdentifier":"c:objc(cs)NSValue","kind":"typeIdentifier"},{"text":"]?","kind":"text"}],"title":"accessibilitySelectedTextRanges()","url":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtextranges()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilitySelectedTextRanges()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilitystring(for:).json b/data/documentation/codeedittextview/textview/accessibilitystring(for:).json
new file mode 100644
index 000000000..2c95ffb36
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilitystring(for:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityStringForRange:","title":"accessibilityString(for:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityString"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"kind":"text","text":"?"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","roleHeading":"Instance Method"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/accessibilitystring(for:)"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityString(for:)","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"accessibilityString","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":") -> ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityString(for:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityString","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?"}],"title":"accessibilityString(for:)","url":"\/documentation\/codeedittextview\/textview\/accessibilitystring(for:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityString(for:)","type":"topic","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityvalue().json b/data/documentation/codeedittextview/textview/accessibilityvalue().json
new file mode 100644
index 000000000..e67d30eba
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityvalue().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityValue()","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityValue","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityValue","extendedModule":"CodeEditTextView","role":"symbol","title":"accessibilityValue()","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"accessibilityValue","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"keyword","text":"Any"},{"text":"?","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/accessibilityvalue()"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityValue()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"accessibilityValue","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?"}],"title":"accessibilityValue()","url":"\/documentation\/codeedittextview\/textview\/accessibilityvalue()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityValue()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/accessibilityvisiblecharacterrange().json b/data/documentation/codeedittextview/textview/accessibilityvisiblecharacterrange().json
new file mode 100644
index 000000000..a0dbd9ddc
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/accessibilityvisiblecharacterrange().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/accessibilityvisiblecharacterrange()"]}],"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityVisibleCharacterRange"},{"text":"() -> ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityVisibleCharacterRange()","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityVisibleCharacterRange"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}],"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)accessibilityVisibleCharacterRange","extendedModule":"CodeEditTextView","role":"symbol","title":"accessibilityVisibleCharacterRange()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/accessibilityVisibleCharacterRange()":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"accessibilityVisibleCharacterRange"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"}],"title":"accessibilityVisibleCharacterRange()","url":"\/documentation\/codeedittextview\/textview\/accessibilityvisiblecharacterrange()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/accessibilityVisibleCharacterRange()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/addstoragedelegate(_:).json b/data/documentation/codeedittextview/textview/addstoragedelegate(_:).json
new file mode 100644
index 000000000..23bf43f04
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/addstoragedelegate(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"addStorageDelegate","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"delegate"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"text":")","kind":"text"}],"platforms":["macOS"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/addStorageDelegate(_:)"},"sections":[],"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"addStorageDelegate","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSTextStorageDelegate","kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C18addStorageDelegateyySo06NSTextfG0_pF","roleHeading":"Instance Method","title":"addStorageDelegate(_:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/addstoragedelegate(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/addStorageDelegate(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/addStorageDelegate(_:)","title":"addStorageDelegate(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"addStorageDelegate"},{"kind":"text","text":"("},{"text":"NSTextStorageDelegate","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/addstoragedelegate(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/allowsundo.json b/data/documentation/codeedittextview/textview/allowsundo.json
new file mode 100644
index 000000000..e5e8d4cd0
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/allowsundo.json
@@ -0,0 +1 @@
+{"metadata":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"allowsUndo"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)TextView(py)allowsUndo","title":"allowsUndo","roleHeading":"Instance Property","symbolKind":"property","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/allowsundo"]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@objc"},{"kind":"text","text":" "},{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"dynamic"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"allowsUndo","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/allowsUndo","interfaceLanguage":"swift"},"sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/allowsUndo":{"title":"allowsUndo","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/allowsUndo","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"allowsUndo","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/allowsundo"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/attributedstring().json b/data/documentation/codeedittextview/textview/attributedstring().json
new file mode 100644
index 000000000..362634c5c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/attributedstring().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/attributedstring()"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"attributedString","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"content","content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"inlineContent":[{"text":"The attributed string of the receiver’s text storage.","type":"text"}],"type":"paragraph"}]}],"abstract":[{"text":"Returns an attributed string representing the receiver’s text storage.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedString()","interfaceLanguage":"swift"},"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)attributedString","title":"attributedString()","symbolKind":"method","role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"attributedString","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/attributedString()":{"url":"\/documentation\/codeedittextview\/textview\/attributedstring()","type":"topic","abstract":[{"type":"text","text":"Returns an attributed string representing the receiver’s text storage."}],"title":"attributedString()","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedString()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"attributedString"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/attributedsubstring(forproposedrange:actualrange:).json b/data/documentation/codeedittextview/textview/attributedsubstring(forproposedrange:actualrange:).json
new file mode 100644
index 000000000..44ab8d141
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/attributedsubstring(forproposedrange:actualrange:).json
@@ -0,0 +1 @@
+{"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"attributedSubstring","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"forProposedRange"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"actualRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRangePointer","text":"NSRangePointer"},{"kind":"text","text":"?) -> "},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"},{"text":"?","kind":"text"}],"platforms":["macOS"]}]},{"parameters":[{"name":"range","content":[{"inlineContent":[{"type":"text","text":"The range in the text storage from which to create the returned string."}],"type":"paragraph"}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The actual range of the returned string if it was adjusted, for example, to a grapheme cluster"},{"text":" ","type":"text"},{"text":"boundary or for performance or other reasons. NULL if range was not adjusted.","type":"text"}]}],"name":"actualRange"}],"kind":"parameters"},{"kind":"content","content":[{"level":2,"type":"heading","anchor":"return-value","text":"Return Value"},{"inlineContent":[{"type":"text","text":"The string created from the given range. May return nil."}],"type":"paragraph"}]},{"kind":"content","content":[{"type":"heading","level":2,"text":"Discussion","anchor":"discussion"},{"type":"paragraph","inlineContent":[{"text":"An implementation of this method should be prepared for aRange to be out of bounds.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"For example, the InkWell text input service can ask for the contents of the text input client"},{"type":"text","text":" "},{"type":"text","text":"that extends beyond the document’s range. In this case, you should return the"},{"text":" ","type":"text"},{"type":"text","text":"intersection of the document’s range and aRange. If the location of aRange is completely outside of the"},{"type":"text","text":" "},{"text":"document’s range, return nil.","type":"text"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/attributedsubstring(forproposedrange:actualrange:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedSubstring(forProposedRange:actualRange:)"},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"text":"Returns an attributed string derived from the given range in the receiver’s text storage.","type":"text"}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"attributedSubstring"},{"text":"(","kind":"text"},{"text":"forProposedRange","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"actualRange","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRangePointer","preciseIdentifier":"c:@T@NSRangePointer"},{"kind":"text","text":"?) -> "},{"text":"NSAttributedString","preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)attributedSubstringForProposedRange:actualRange:","symbolKind":"method","title":"attributedSubstring(forProposedRange:actualRange:)","extendedModule":"CodeEditTextView","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/attributedSubstring(forProposedRange:actualRange:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedSubstring(forProposedRange:actualRange:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/attributedsubstring(forproposedrange:actualrange:)","title":"attributedSubstring(forProposedRange:actualRange:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"attributedSubstring"},{"kind":"text","text":"("},{"text":"forProposedRange","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"actualRange"},{"text":": ","kind":"text"},{"text":"NSRangePointer","preciseIdentifier":"c:@T@NSRangePointer","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"text":"?","kind":"text"}],"abstract":[{"type":"text","text":"Returns an attributed string derived from the given range in the receiver’s text storage."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/baselinedeltaforcharacter(at:).json b/data/documentation/codeedittextview/textview/baselinedeltaforcharacter(at:).json
new file mode 100644
index 000000000..505fd60a3
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/baselinedeltaforcharacter(at:).json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/baselinedeltaforcharacter(at:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"baselineDeltaForCharacter"},{"text":"(","kind":"text"},{"text":"at","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"anIndex"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"type":"text","text":"Index of the character whose baseline is tested."}],"type":"paragraph"}],"name":"anIndex"}]},{"content":[{"level":2,"text":"Return Value","type":"heading","anchor":"return-value"},{"inlineContent":[{"type":"text","text":"The vertical distance, in points, between the baseline of the character at anIndex and the rectangle"},{"text":" ","type":"text"},{"type":"text","text":"origin."}],"type":"paragraph"}],"kind":"content"}],"metadata":{"roleHeading":"Instance Method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)baselineDeltaForCharacterAtIndex:","role":"symbol","extendedModule":"CodeEditTextView","title":"baselineDeltaForCharacter(at:)","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"baselineDeltaForCharacter"},{"text":"(","kind":"text"},{"text":"at","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/baselineDeltaForCharacter(at:)"},"kind":"symbol","abstract":[{"type":"text","text":"Returns the baseline position of a given character relative to the origin of rectangle returned by"},{"type":"text","text":" "},{"code":"firstRect(forCharacterRange:actualRange:)","type":"codeVoice"},{"type":"text","text":"."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/baselineDeltaForCharacter(at:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"baselineDeltaForCharacter","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"at"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"abstract":[{"text":"Returns the baseline position of a given character relative to the origin of rectangle returned by","type":"text"},{"type":"text","text":" "},{"type":"codeVoice","code":"firstRect(forCharacterRange:actualRange:)"},{"type":"text","text":"."}],"url":"\/documentation\/codeedittextview\/textview\/baselinedeltaforcharacter(at:)","title":"baselineDeltaForCharacter(at:)","kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/baselineDeltaForCharacter(at:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/becomefirstresponder().json b/data/documentation/codeedittextview/textview/becomefirstresponder().json
new file mode 100644
index 000000000..36a8eec85
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/becomefirstresponder().json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/becomeFirstResponder()"},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"becomeFirstResponder","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)becomeFirstResponder","extendedModule":"CodeEditTextView","title":"becomeFirstResponder()","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"becomeFirstResponder"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}]}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/becomefirstresponder()"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/becomeFirstResponder()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/becomeFirstResponder()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/becomefirstresponder()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"becomeFirstResponder"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"becomeFirstResponder()"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/canbecomekeyview.json b/data/documentation/codeedittextview/textview/canbecomekeyview.json
new file mode 100644
index 000000000..48e3016e1
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/canbecomekeyview.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"canBecomeKeyView","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(py)canBecomeKeyView","symbolKind":"property","extendedModule":"CodeEditTextView","title":"canBecomeKeyView","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"canBecomeKeyView","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"roleHeading":"Instance Property","role":"symbol"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/canBecomeKeyView","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textview\/canbecomekeyview"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/canBecomeKeyView":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/canBecomeKeyView","kind":"symbol","title":"canBecomeKeyView","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"canBecomeKeyView","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/codeedittextview\/textview\/canbecomekeyview","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/characterindex(for:).json b/data/documentation/codeedittextview/textview/characterindex(for:).json
new file mode 100644
index 000000000..92066b90c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/characterindex(for:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","title":"characterIndex(for:)","role":"symbol","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"characterIndex","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"text":"NSPoint","preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"text":"Int","kind":"typeIdentifier","preciseIdentifier":"s:Si"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)characterIndexForPoint:","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"abstract":[{"text":"Returns the index of the character whose bounding rectangle includes the given point.","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/characterIndex(for:)"},"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/characterindex(for:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"characterIndex","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"point"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier","text":"NSPoint"},{"text":") -> ","kind":"text"},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"}],"languages":["swift"]}]},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"text":"The point to test, in ","type":"text"},{"type":"emphasis","inlineContent":[{"type":"text","text":"screen"}]},{"text":" coordinates.","type":"text"}],"type":"paragraph"}],"name":"point"}]},{"content":[{"text":"Return Value","anchor":"return-value","type":"heading","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"The character index, measured from the start of the receiver’s text storage, of the character"},{"text":" ","type":"text"},{"type":"text","text":"containing the given point. Returns NSNotFound if the cursor is not within a character’s"},{"text":" ","type":"text"},{"type":"text","text":"bounding rectangle."}]}],"kind":"content"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/characterIndex(for:)":{"type":"topic","abstract":[{"type":"text","text":"Returns the index of the character whose bounding rectangle includes the given point."}],"url":"\/documentation\/codeedittextview\/textview\/characterindex(for:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/characterIndex(for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"characterIndex","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"characterIndex(for:)","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/contenttype.json b/data/documentation/codeedittextview/textview/contenttype.json
new file mode 100644
index 000000000..fb05d75a4
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/contenttype.json
@@ -0,0 +1 @@
+{"sections":[],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"NSTextContent.contentType"},{"type":"text","text":"."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/contenttype"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"contentType","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSTextContentType","text":"NSTextContentType","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/contentType"},"metadata":{"roleHeading":"Instance Property","symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"contentType"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSTextContentType","preciseIdentifier":"c:@T@NSTextContentType"},{"text":"?","kind":"text"}],"externalID":"c:@M@CodeEditTextView@objc(cs)TextView(py)contentType","role":"symbol","title":"contentType","modules":[{"name":"CodeEditTextView"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/contentType":{"title":"contentType","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"contentType","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSTextContentType","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSTextContentType"},{"text":"?","kind":"text"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/contenttype","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/contentType"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/copy(_:).json b/data/documentation/codeedittextview/textview/copy(_:).json
new file mode 100644
index 000000000..8392c03e4
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/copy(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/copy(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/copy(_:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"copy"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier","text":"AnyObject"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)copy:","title":"copy(_:)"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@objc","kind":"attribute"},{"text":" ","kind":"text"},{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"copy","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:s9AnyObjecta","text":"AnyObject","kind":"typeIdentifier"},{"kind":"text","text":")"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/copy(_:)":{"title":"copy(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/copy(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"copy"},{"kind":"text","text":"("},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/copy(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/cut(_:).json b/data/documentation/codeedittextview/textview/cut(_:).json
new file mode 100644
index 000000000..9f55ceb87
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/cut(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/cut(_:)"]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/cut(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"title":"cut(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"cut","kind":"identifier"},{"text":"(","kind":"text"},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"text":")","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)cut:","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@objc","kind":"attribute"},{"text":" ","kind":"text"},{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"cut","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/cut(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/cut(_:)","title":"cut(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cut"},{"text":"(","kind":"text"},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/cut(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/defaulttypingattributes.json b/data/documentation/codeedittextview/textview/defaulttypingattributes.json
new file mode 100644
index 000000000..2e04303c7
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/defaulttypingattributes.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/defaultTypingAttributes","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The default typing attributes:"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/defaulttypingattributes"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"property","externalID":"s:16CodeEditTextView0cD0C23defaultTypingAttributesSDySo21NSAttributedStringKeyaypGvpZ","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"defaultTypingAttributes"},{"text":": [","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier","text":"NSAttributedString"},{"text":".","kind":"text"},{"preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"]","kind":"text"}],"roleHeading":"Type Property","title":"defaultTypingAttributes"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"defaultTypingAttributes"},{"kind":"text","text":": ["},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"] { "},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}]}]},{"content":[{"text":"Discussion","anchor":"discussion","type":"heading","level":2},{"items":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"font: System font, size 12"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"foregroundColor: System text color","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"text":"kern: 0.0","type":"text"}]}]}],"type":"unorderedList"}],"kind":"content"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/defaultTypingAttributes":{"fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"defaultTypingAttributes"},{"text":": [","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"]","kind":"text"}],"title":"defaultTypingAttributes","url":"\/documentation\/codeedittextview\/textview\/defaulttypingattributes","kind":"symbol","abstract":[{"text":"The default typing attributes:","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/defaultTypingAttributes","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/delegate.json b/data/documentation/codeedittextview/textview/delegate.json
new file mode 100644
index 000000000..3129f9eec
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/delegate.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"metadata":{"externalID":"s:16CodeEditTextView0cD0C8delegateAA0cD8Delegate_pSgvp","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delegate"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP","text":"TextViewDelegate","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"role":"symbol","roleHeading":"Instance Property","title":"delegate","symbolKind":"property","modules":[{"name":"CodeEditTextView"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/delegate"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","abstract":[{"type":"text","text":"The text view’s delegate."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delegate","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"weak"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"delegate","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","text":"TextViewDelegate","preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP"},{"kind":"text","text":"?"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/delegate":{"abstract":[{"type":"text","text":"The text view’s delegate."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delegate","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/delegate","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"delegate","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP","text":"TextViewDelegate","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"title":"delegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/delete(_:).json b/data/documentation/codeedittextview/textview/delete(_:).json
new file mode 100644
index 000000000..d7c8b076d
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/delete(_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delete(_:)","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"delete"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s9AnyObjecta","text":"AnyObject"},{"text":")","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)delete:","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"title":"delete(_:)"},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@objc"},{"kind":"text","text":" "},{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"delete","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"AnyObject","kind":"typeIdentifier","preciseIdentifier":"s:s9AnyObjecta"},{"text":")","kind":"text"}],"platforms":["macOS"]}]}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/delete(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/delete(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"delete","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta"},{"kind":"text","text":")"}],"title":"delete(_:)","url":"\/documentation\/codeedittextview\/textview\/delete(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/delete(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletebackward(_:).json b/data/documentation/codeedittextview/textview/deletebackward(_:).json
new file mode 100644
index 000000000..958dfcf58
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletebackward(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/deletebackward(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackward(_:)"},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"deleteBackward","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"platforms":["macOS"]}]}],"metadata":{"title":"deleteBackward(_:)","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteBackward:","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteBackward","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"extendedModule":"CodeEditTextView"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteBackward(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackward(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletebackward(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteBackward","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"deleteBackward(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletebackwardbydecomposingpreviouscharacter(_:).json b/data/documentation/codeedittextview/textview/deletebackwardbydecomposingpreviouscharacter(_:).json
new file mode 100644
index 000000000..840ffa521
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletebackwardbydecomposingpreviouscharacter(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackwardByDecomposingPreviousCharacter(_:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/deletebackwardbydecomposingpreviouscharacter(_:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteBackwardByDecomposingPreviousCharacter:","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteBackwardByDecomposingPreviousCharacter"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"extendedModule":"CodeEditTextView","title":"deleteBackwardByDecomposingPreviousCharacter(_:)","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteBackwardByDecomposingPreviousCharacter"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteBackwardByDecomposingPreviousCharacter(_:)":{"title":"deleteBackwardByDecomposingPreviousCharacter(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteBackwardByDecomposingPreviousCharacter(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"deleteBackwardByDecomposingPreviousCharacter","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletebackwardbydecomposingpreviouscharacter(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deleteforward(_:).json b/data/documentation/codeedittextview/textview/deleteforward(_:).json
new file mode 100644
index 000000000..b9b1a2434
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deleteforward(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","metadata":{"role":"symbol","title":"deleteForward(_:)","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"deleteForward","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"symbolKind":"method","extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteForward:"},"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/deleteforward(_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteForward(_:)","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"deleteForward","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteForward(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteForward(_:)","title":"deleteForward(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteForward","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deleteforward(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletetobeginningofline(_:).json b/data/documentation/codeedittextview/textview/deletetobeginningofline(_:).json
new file mode 100644
index 000000000..30f29bcfc
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletetobeginningofline(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteToBeginningOfLine:","role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteToBeginningOfLine"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"deleteToBeginningOfLine(_:)","symbolKind":"method"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"deleteToBeginningOfLine","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfLine(_:)","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textview\/deletetobeginningofline(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToBeginningOfLine(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"deleteToBeginningOfLine","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"deleteToBeginningOfLine(_:)","url":"\/documentation\/codeedittextview\/textview\/deletetobeginningofline(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfLine(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletetobeginningofparagraph(_:).json b/data/documentation/codeedittextview/textview/deletetobeginningofparagraph(_:).json
new file mode 100644
index 000000000..395e24e41
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletetobeginningofparagraph(_:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"deleteToBeginningOfParagraph(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteToBeginningOfParagraph"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteToBeginningOfParagraph:","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/deletetobeginningofparagraph(_:)"]}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteToBeginningOfParagraph","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfParagraph(_:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToBeginningOfParagraph(_:)":{"title":"deleteToBeginningOfParagraph(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToBeginningOfParagraph(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"deleteToBeginningOfParagraph","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletetobeginningofparagraph(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletetoendofline(_:).json b/data/documentation/codeedittextview/textview/deletetoendofline(_:).json
new file mode 100644
index 000000000..642ee789c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletetoendofline(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"deleteToEndOfLine"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/deletetoendofline(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfLine(_:)","interfaceLanguage":"swift"},"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteToEndOfLine"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteToEndOfLine:","title":"deleteToEndOfLine(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToEndOfLine(_:)":{"url":"\/documentation\/codeedittextview\/textview\/deletetoendofline(_:)","role":"symbol","title":"deleteToEndOfLine(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfLine(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteToEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletetoendofparagraph(_:).json b/data/documentation/codeedittextview/textview/deletetoendofparagraph(_:).json
new file mode 100644
index 000000000..24e9fcaae
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletetoendofparagraph(_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfParagraph(_:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/deletetoendofparagraph(_:)"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"metadata":{"title":"deleteToEndOfParagraph(_:)","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteToEndOfParagraph:","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteToEndOfParagraph","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteToEndOfParagraph","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteToEndOfParagraph(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteToEndOfParagraph"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"title":"deleteToEndOfParagraph(_:)","url":"\/documentation\/codeedittextview\/textview\/deletetoendofparagraph(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteToEndOfParagraph(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletewordbackward(_:).json b/data/documentation/codeedittextview/textview/deletewordbackward(_:).json
new file mode 100644
index 000000000..d3ba37511
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletewordbackward(_:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"deleteWordBackward","kind":"identifier"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteWordBackward:","extendedModule":"CodeEditTextView","role":"symbol","title":"deleteWordBackward(_:)","modules":[{"name":"CodeEditTextView"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/deletewordbackward(_:)"]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"deleteWordBackward"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"platforms":["macOS"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordBackward(_:)","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteWordBackward(_:)":{"url":"\/documentation\/codeedittextview\/textview\/deletewordbackward(_:)","role":"symbol","title":"deleteWordBackward(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordBackward(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteWordBackward","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/deletewordforward(_:).json b/data/documentation/codeedittextview/textview/deletewordforward(_:).json
new file mode 100644
index 000000000..e5b74728d
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/deletewordforward(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"deleteWordForward","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)deleteWordForward:","title":"deleteWordForward(_:)","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"deleteWordForward","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordForward(_:)","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/deletewordforward(_:)"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/deleteWordForward(_:)":{"title":"deleteWordForward(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/deleteWordForward(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"deleteWordForward"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/deletewordforward(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/documentrange.json b/data/documentation/codeedittextview/textview/documentrange.json
new file mode 100644
index 000000000..22d30e8a0
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/documentrange.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/documentRange"},"kind":"symbol","sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"documentRange","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"]}]}],"metadata":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"documentRange","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C13documentRangeSo8_NSRangeVvp","title":"documentRange","roleHeading":"Instance Property","symbolKind":"property","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/documentrange"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/documentRange":{"title":"documentRange","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/documentRange","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"documentRange","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/documentrange"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/draggingentered(_:).json b/data/documentation/codeedittextview/textview/draggingentered(_:).json
new file mode 100644
index 000000000..c34c3c117
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/draggingentered(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/draggingentered(_:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingEntered(_:)"},"schemaVersion":{"patch":0,"minor":3,"major":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"draggingEntered(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"draggingEntered","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"any"},{"text":" ","kind":"text"},{"text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation"}],"extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)draggingEntered:","roleHeading":"Instance Method","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"draggingEntered","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"kind":"keyword","text":"any"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDragOperation","text":"NSDragOperation"}],"languages":["swift"],"platforms":["macOS"]}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingEntered(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingEntered","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"any"},{"kind":"text","text":" "},{"preciseIdentifier":"c:objc(pl)NSDraggingInfo","text":"NSDraggingInfo","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDragOperation","text":"NSDragOperation"}],"url":"\/documentation\/codeedittextview\/textview\/draggingentered(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingEntered(_:)","type":"topic","abstract":[],"title":"draggingEntered(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/draggingsession(_:endedat:operation:).json b/data/documentation/codeedittextview/textview/draggingsession(_:endedat:operation:).json
new file mode 100644
index 000000000..738650cb2
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/draggingsession(_:endedat:operation:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"draggingSession","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"session"},{"kind":"text","text":": "},{"text":"NSDraggingSession","preciseIdentifier":"c:objc(cs)NSDraggingSession","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"endedAt","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"screenPoint","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSPoint","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":", "},{"text":"operation","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@E@NSDragOperation","text":"NSDragOperation","kind":"typeIdentifier"},{"text":")","kind":"text"}],"languages":["swift"]}]}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/draggingsession(_:endedat:operation:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:endedAt:operation:)"},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draggingSession"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"NSDraggingSession","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"text":", ","kind":"text"},{"text":"endedAt","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"operation","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSDragOperation","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDragOperation"},{"text":")","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)draggingSession:endedAtPoint:operation:","extendedModule":"CodeEditTextView","role":"symbol","title":"draggingSession(_:endedAt:operation:)","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"text":"Inherited from ","type":"text"},{"code":"NSDraggingSource.draggingSession(_:endedAt:operation:)","type":"codeVoice"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:endedAt:operation:)":{"role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"draggingSession"},{"text":"(","kind":"text"},{"text":"NSDraggingSession","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"text":", ","kind":"text"},{"text":"endedAt","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"operation","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation"},{"text":")","kind":"text"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:endedAt:operation:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:endedat:operation:)","title":"draggingSession(_:endedAt:operation:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/draggingsession(_:movedto:).json b/data/documentation/codeedittextview/textview/draggingsession(_:movedto:).json
new file mode 100644
index 000000000..2de60feb1
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/draggingsession(_:movedto:).json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/draggingsession(_:movedto:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingSession","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"session","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSDraggingSession","text":"NSDraggingSession","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"movedTo"},{"kind":"text","text":" "},{"text":"screenPoint","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint","text":"NSPoint"},{"text":")","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"},{"parameters":[{"content":[{"inlineContent":[{"text":"The dragging session that was updated.","type":"text"}],"type":"paragraph"}],"name":"session"},{"content":[{"inlineContent":[{"type":"text","text":"The position on the screen where the drag exists."}],"type":"paragraph"}],"name":"screenPoint"}],"kind":"parameters"},{"content":[{"level":2,"text":"Discussion","type":"heading","anchor":"discussion"},{"inlineContent":[{"text":"The text view will not place a dragging cursor view when the dragging destination is in an existing","type":"text"},{"text":" ","type":"text"},{"text":"text selection.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)draggingSession:movedToPoint:","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","extendedModule":"CodeEditTextView","title":"draggingSession(_:movedTo:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingSession","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSDraggingSession","kind":"typeIdentifier","text":"NSDraggingSession"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"movedTo"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSPoint","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":")"}],"roleHeading":"Instance Method","role":"symbol"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:movedTo:)","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"type":"text","text":"Updates the text view about a dragging session. The text view will update the "},{"code":"TextView\/draggingCursorView","type":"codeVoice"},{"type":"text","text":" "},{"type":"text","text":"cursor to match the drop destination depending on where the drag is on the text view."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:movedTo:)":{"url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:movedto:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:movedTo:)","abstract":[{"text":"Updates the text view about a dragging session. The text view will update the ","type":"text"},{"code":"TextView\/draggingCursorView","type":"codeVoice"},{"text":" ","type":"text"},{"type":"text","text":"cursor to match the drop destination depending on where the drag is on the text view."}],"type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"draggingSession","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession","text":"NSDraggingSession"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"movedTo"},{"text":": ","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"text":")","kind":"text"}],"title":"draggingSession(_:movedTo:)","role":"symbol","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/draggingsession(_:sourceoperationmaskfor:).json b/data/documentation/codeedittextview/textview/draggingsession(_:sourceoperationmaskfor:).json
new file mode 100644
index 000000000..e407b7d91
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/draggingsession(_:sourceoperationmaskfor:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"draggingSession"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"session"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSDraggingSession","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"sourceOperationMaskFor"},{"text":" ","kind":"text"},{"text":"context","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSDraggingContext","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDraggingContext"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDragOperation","text":"NSDragOperation"}],"platforms":["macOS"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"NSDraggingSource.draggingSession(_:sourceOperationMaskFor:)","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/draggingsession(_:sourceoperationmaskfor:)"]}],"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draggingSession"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"NSDraggingSession","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"text":", ","kind":"text"},{"text":"sourceOperationMaskFor","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDraggingContext","text":"NSDraggingContext"},{"kind":"text","text":") -> "},{"text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation","kind":"typeIdentifier"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)draggingSession:sourceOperationMaskForDraggingContext:","roleHeading":"Instance Method","title":"draggingSession(_:sourceOperationMaskFor:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:sourceOperationMaskFor:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:sourceOperationMaskFor:)":{"url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:sourceoperationmaskfor:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draggingSession"},{"kind":"text","text":"("},{"text":"NSDraggingSession","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"kind":"text","text":", "},{"kind":"externalParam","text":"sourceOperationMaskFor"},{"kind":"text","text":": "},{"text":"NSDraggingContext","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDraggingContext"},{"text":") -> ","kind":"text"},{"text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation","kind":"typeIdentifier"}],"kind":"symbol","type":"topic","title":"draggingSession(_:sourceOperationMaskFor:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:sourceOperationMaskFor:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/draggingsession(_:willbeginat:).json b/data/documentation/codeedittextview/textview/draggingsession(_:willbeginat:).json
new file mode 100644
index 000000000..71530a037
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/draggingsession(_:willbeginat:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/draggingsession(_:willbeginat:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingSession","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"session"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSDraggingSession","text":"NSDraggingSession","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"willBeginAt"},{"text":" ","kind":"text"},{"text":"screenPoint","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"type":"text","text":"Inherited from "},{"code":"NSDraggingSource.draggingSession(_:willBeginAt:)","type":"codeVoice"},{"type":"text","text":"."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:willBeginAt:)","interfaceLanguage":"swift"},"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)draggingSession:willBeginAtPoint:","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingSession","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:objc(cs)NSDraggingSession","text":"NSDraggingSession","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"willBeginAt","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSPoint","preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier"},{"kind":"text","text":")"}],"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","title":"draggingSession(_:willBeginAt:)","symbolKind":"method"},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:willBeginAt:)":{"url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:willbeginat:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draggingSession"},{"kind":"text","text":"("},{"text":"NSDraggingSession","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"text":", ","kind":"text"},{"text":"willBeginAt","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":")"}],"kind":"symbol","type":"topic","title":"draggingSession(_:willBeginAt:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:willBeginAt:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/draggingupdated(_:).json b/data/documentation/codeedittextview/textview/draggingupdated(_:).json
new file mode 100644
index 000000000..d21a38d48
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/draggingupdated(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"draggingUpdated","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDragOperation","text":"NSDragOperation"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingUpdated(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)draggingUpdated:","title":"draggingUpdated(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"draggingUpdated","kind":"identifier"},{"text":"(","kind":"text"},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo"},{"text":") -> ","kind":"text"},{"text":"NSDragOperation","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDragOperation"}],"symbolKind":"method"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/draggingupdated(_:)"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingUpdated(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"draggingUpdated","kind":"identifier"},{"kind":"text","text":"("},{"text":"any","kind":"keyword"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation"}],"title":"draggingUpdated(_:)","url":"\/documentation\/codeedittextview\/textview\/draggingupdated(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingUpdated(_:)","type":"topic","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/draw(_:).json b/data/documentation/codeedittextview/textview/draw(_:).json
new file mode 100644
index 000000000..2e60b7f5e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/draw(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/draw(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"roleHeading":"Instance Method","extendedModule":"CodeEditTextView","symbolKind":"method","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)drawRect:","role":"symbol","title":"draw(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"draw","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"NSRect","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}]},"sections":[],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draw(_:)"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draw"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"dirtyRect","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draw(_:)":{"title":"draw(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"draw","kind":"identifier"},{"kind":"text","text":"("},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"},{"text":")","kind":"text"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/draw(_:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draw(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/edgeinsets.json b/data/documentation/codeedittextview/textview/edgeinsets.json
new file mode 100644
index 000000000..f6bc77c67
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/edgeinsets.json
@@ -0,0 +1 @@
+{"metadata":{"title":"edgeInsets","roleHeading":"Instance Property","symbolKind":"property","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"edgeInsets"},{"kind":"text","text":": "},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"externalID":"s:16CodeEditTextView0cD0C10edgeInsetsAA014HorizontalEdgeF0Vvp","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets"},"schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"edgeInsets"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","text":"HorizontalEdgeInsets","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"content":[{"level":2,"anchor":"discussion","type":"heading","text":"Discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"To further inset the text from the edge, without modifying how selections are inset, use "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textInsets","isActive":true,"type":"reference"}]}],"kind":"content"}],"abstract":[{"type":"text","text":"The edge insets for the text view. This value insets every piece of drawable content in the view, including"},{"type":"text","text":" "},{"type":"text","text":"selection rects."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/edgeinsets"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/edgeInsets":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/edgeinsets","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"edgeInsets"},{"text":": ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"abstract":[{"type":"text","text":"The edge insets for the text view. This value insets every piece of drawable content in the view, including"},{"text":" ","type":"text"},{"type":"text","text":"selection rects."}],"title":"edgeInsets"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textInsets":{"abstract":[{"type":"text","text":"Insets just drawn text from the horizontal edges. This is in addition to the insets in "},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets"},{"type":"text","text":", but does"},{"text":" ","type":"text"},{"text":"not apply to other drawn content.","type":"text"}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textInsets","type":"topic","url":"\/documentation\/codeedittextview\/textview\/textinsets","title":"textInsets","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textInsets"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/editselections(callback:).json b/data/documentation/codeedittextview/textview/editselections(callback:).json
new file mode 100644
index 000000000..8157543ad
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/editselections(callback:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/editSelections(callback:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/editselections(callback:)"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"editSelections"},{"text":"(","kind":"text"},{"text":"callback","kind":"externalParam"},{"kind":"text","text":": ("},{"kind":"typeIdentifier","text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"text":", ","kind":"text"},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","kind":"typeIdentifier","text":"TextSelectionManager"},{"kind":"text","text":"."},{"text":"TextSelection","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:s4Voida","text":"Void","kind":"typeIdentifier"},{"text":")","kind":"text"}],"extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0cD0C14editSelections8callbackyyAC_AA0C16SelectionManagerC0cH0CtXE_tF","title":"editSelections(callback:)","symbolKind":"method"},"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"text":"Iterates over all text selections in the ","type":"text"},{"type":"codeVoice","code":"TextView"},{"text":" and applies the provided callback.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"editSelections"},{"kind":"text","text":"("},{"text":"callback","kind":"externalParam"},{"kind":"text","text":": ("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","kind":"typeIdentifier","text":"TextView","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"},{"kind":"text","text":", "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","text":"TextSelectionManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager"},{"text":".","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"content":[{"text":"Discussion","anchor":"discussion","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"text":"This method is typically used when you need to perform an operation on each text selection in the editor,","type":"text"},{"text":" ","type":"text"},{"text":"such as adjusting indentation, or other selection-based operations. The callback","type":"text"},{"type":"text","text":" "},{"type":"text","text":"is executed for each selection, and you can modify the selection or perform related tasks."}]},{"type":"unorderedList","items":[{"content":[{"inlineContent":[{"text":"callback: A closure that will be executed for each selection in the ","type":"text"},{"code":"TextView","type":"codeVoice"},{"text":". It takes two parameters:","type":"text"},{"type":"text","text":" "},{"type":"text","text":"a "},{"type":"codeVoice","code":"TextView"},{"type":"text","text":" instance, allowing access to the view’s properties and methods and a"},{"type":"text","text":" "},{"code":"TextSelectionManager.TextSelection","type":"codeVoice"},{"type":"text","text":" representing the current selection to operate on."}],"type":"paragraph"}]}]},{"style":"note","content":[{"inlineContent":[{"type":"text","text":"The selections are iterated in reverse order, so modifications to earlier selections won’t affect later"},{"type":"text","text":" "},{"text":"ones. The method automatically calls ","type":"text"},{"code":"notifyAfterEdit()","type":"codeVoice"},{"type":"text","text":" on the "},{"type":"codeVoice","code":"selectionManager"},{"type":"text","text":" after all"},{"type":"text","text":" "},{"type":"text","text":"selections are processed."}],"type":"paragraph"}],"type":"aside","name":"Note"}],"kind":"content"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager/TextSelection":{"role":"symbol","navigatorTitle":[{"text":"TextSelection","kind":"identifier"}],"url":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager\/TextSelection","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextSelection","kind":"identifier"}],"abstract":[],"title":"TextSelectionManager.TextSelection"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/editSelections(callback:)":{"title":"editSelections(callback:)","kind":"symbol","type":"topic","abstract":[{"text":"Iterates over all text selections in the ","type":"text"},{"code":"TextView","type":"codeVoice"},{"type":"text","text":" and applies the provided callback."}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"editSelections"},{"text":"(","kind":"text"},{"text":"callback","kind":"externalParam"},{"kind":"text","text":": ("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","kind":"typeIdentifier","text":"TextView"},{"kind":"text","text":", "},{"text":"TextSelectionManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager"},{"kind":"text","text":"."},{"preciseIdentifier":"s:16CodeEditTextView0C16SelectionManagerC0cE0C","text":"TextSelection","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:s4Voida","text":"Void"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/editselections(callback:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/editSelections(callback:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/emphasismanager.json b/data/documentation/codeedittextview/textview/emphasismanager.json
new file mode 100644
index 000000000..8a17c47f2
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/emphasismanager.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/emphasisManager","interfaceLanguage":"swift"},"abstract":[{"text":"Manages emphasized text ranges in the text view","type":"text"}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"emphasisManager","kind":"identifier"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","kind":"typeIdentifier","text":"EmphasisManager","preciseIdentifier":"s:16CodeEditTextView15EmphasisManagerC"},{"text":"?","kind":"text"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/emphasismanager"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"symbolKind":"property","roleHeading":"Instance Property","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"emphasisManager","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView15EmphasisManagerC","text":"EmphasisManager","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C15emphasisManagerAA08EmphasisF0CSgvp","title":"emphasisManager"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/EmphasisManager":{"type":"topic","kind":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"EmphasisManager"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/EmphasisManager","url":"\/documentation\/codeedittextview\/emphasismanager","title":"EmphasisManager","abstract":[{"type":"text","text":"Manages text emphases within a text view, supporting multiple styles and groups."}],"role":"symbol","navigatorTitle":[{"text":"EmphasisManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/emphasisManager":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/emphasismanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/emphasisManager","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"emphasisManager","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"EmphasisManager","preciseIdentifier":"s:16CodeEditTextView15EmphasisManagerC"},{"text":"?","kind":"text"}],"abstract":[{"text":"Manages emphasized text ranges in the text view","type":"text"}],"title":"emphasisManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/estimatedlineheight().json b/data/documentation/codeedittextview/textview/estimatedlineheight().json
new file mode 100644
index 000000000..c3f108530
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/estimatedlineheight().json
@@ -0,0 +1 @@
+{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"estimatedLineHeight","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"TextSelectionManagerDelegate.estimatedLineHeight()"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/estimatedlineheight()"]}],"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"s:16CodeEditTextView0cD0C19estimatedLineHeight14CoreFoundation7CGFloatVyF","title":"estimatedLineHeight()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}],"roleHeading":"Instance Method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/estimatedLineHeight()","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/estimatedLineHeight()":{"abstract":[],"type":"topic","title":"estimatedLineHeight()","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/estimatedlineheight()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/estimatedLineHeight()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/firstrect(forcharacterrange:actualrange:).json b/data/documentation/codeedittextview/textview/firstrect(forcharacterrange:actualrange:).json
new file mode 100644
index 000000000..9c484be3c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/firstrect(forcharacterrange:actualrange:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"firstRect","kind":"identifier"},{"kind":"text","text":"("},{"text":"forCharacterRange","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"text":"actualRange","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSRangePointer","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRangePointer"},{"text":"?) -> ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}],"platforms":["macOS"]}],"kind":"declarations"},{"parameters":[{"name":"range","content":[{"inlineContent":[{"type":"text","text":"The character range whose boundary rectangle is returned."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"If non-NULL, contains the character range corresponding to the returned area if it was"},{"text":" ","type":"text"},{"type":"text","text":"adjusted, for example, to a grapheme cluster boundary or characters in the first line fragment."}],"type":"paragraph"}],"name":"actualRange"}],"kind":"parameters"},{"content":[{"type":"heading","level":2,"text":"Return Value","anchor":"return-value"},{"inlineContent":[{"type":"text","text":"The boundary rectangle for the given range of characters, in "},{"type":"emphasis","inlineContent":[{"type":"text","text":"screen"}]},{"text":" coordinates.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"The rectangle’s size value can be negative if the text flows to the left."}],"type":"paragraph"}],"kind":"content"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/firstRect(forCharacterRange:actualRange:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/firstrect(forcharacterrange:actualrange:)"]}],"sections":[],"metadata":{"roleHeading":"Instance Method","extendedModule":"CodeEditTextView","symbolKind":"method","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)firstRectForCharacterRange:actualRange:","role":"symbol","title":"firstRect(forCharacterRange:actualRange:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"firstRect"},{"kind":"text","text":"("},{"text":"forCharacterRange","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"actualRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRangePointer","text":"NSRangePointer"},{"text":"?) -> ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}]},"abstract":[{"text":"Returns the first logical boundary rectangle for characters in the given range.","type":"text"}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/firstRect(forCharacterRange:actualRange:)":{"abstract":[{"text":"Returns the first logical boundary rectangle for characters in the given range.","type":"text"}],"title":"firstRect(forCharacterRange:actualRange:)","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textview\/firstrect(forcharacterrange:actualrange:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/firstRect(forCharacterRange:actualRange:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"firstRect","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"forCharacterRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"actualRange"},{"kind":"text","text":": "},{"text":"NSRangePointer","preciseIdentifier":"c:@T@NSRangePointer","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/flagschanged(with:).json b/data/documentation/codeedittextview/textview/flagschanged(with:).json
new file mode 100644
index 000000000..c9293c2d4
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/flagschanged(with:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)flagsChanged:","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flagsChanged","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent","kind":"typeIdentifier"},{"kind":"text","text":")"}],"roleHeading":"Instance Method","title":"flagsChanged(with:)","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/flagschanged(with:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"flagsChanged"},{"kind":"text","text":"("},{"kind":"externalParam","text":"with"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"event"},{"kind":"text","text":": "},{"text":"NSEvent","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent"},{"kind":"text","text":")"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/flagsChanged(with:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/flagsChanged(with:)":{"title":"flagsChanged(with:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/flagsChanged(with:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"flagsChanged","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier","text":"NSEvent"},{"kind":"text","text":")"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/flagschanged(with:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/font.json b/data/documentation/codeedittextview/textview/font.json
new file mode 100644
index 000000000..0e145a2d3
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/font.json
@@ -0,0 +1 @@
+{"metadata":{"title":"font","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"font"},{"text":": ","kind":"text"},{"text":"NSFont","preciseIdentifier":"c:objc(cs)NSFont","kind":"typeIdentifier"}],"externalID":"s:16CodeEditTextView0cD0C4fontSo6NSFontCvp","symbolKind":"property","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"font"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont","text":"NSFont"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"]}]},{"content":[{"text":"Discussion","level":2,"anchor":"discussion","type":"heading"},{"type":"aside","name":"Note","style":"note","content":[{"inlineContent":[{"text":"Setting the font for the text view will update the font as the user types. To change the font for the","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"entire view, update the "},{"type":"codeVoice","code":"font"},{"text":" attribute in ","type":"text"},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","type":"reference"},{"type":"text","text":"."}],"type":"paragraph"}]}],"kind":"content"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/font","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/font"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"text":"The default font of the text view.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/font":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/font","title":"font","type":"topic","abstract":[{"type":"text","text":"The default font of the text view."}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"font","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont","text":"NSFont"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/font"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textStorage":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textstorage","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":"!","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","type":"topic","abstract":[{"type":"text","text":"The text storage object for the text view."}],"title":"textStorage","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/fractionofdistancethroughglyph(for:).json b/data/documentation/codeedittextview/textview/fractionofdistancethroughglyph(for:).json
new file mode 100644
index 000000000..86590ca7c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/fractionofdistancethroughglyph(for:).json
@@ -0,0 +1 @@
+{"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"type":"text","text":"Returns the fraction of the distance from the left side of the character to the right side that a given point"},{"type":"text","text":" "},{"type":"text","text":"lies."}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"fractionOfDistanceThroughGlyph","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"point"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint","text":"NSPoint"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"parameters":[{"name":"point","content":[{"inlineContent":[{"text":"The point to test.","type":"text"}],"type":"paragraph"}]}],"kind":"parameters"},{"content":[{"level":2,"type":"heading","text":"Return Value","anchor":"return-value"},{"type":"paragraph","inlineContent":[{"text":"The fraction of the distance aPoint is through the glyph in which it lies. May be 0 or 1 if aPoint","type":"text"},{"type":"text","text":" "},{"type":"text","text":"is not within the bounding rectangle of a glyph (0 if the point is to the left or above the glyph;"},{"type":"text","text":" "},{"text":"1 if it’s to the right or below).","type":"text"}]}],"kind":"content"},{"kind":"content","content":[{"type":"heading","anchor":"discussion","level":2,"text":"Discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"For purposes such as dragging out a selection or placing the insertion point, a partial percentage less than or"},{"type":"text","text":" "},{"type":"text","text":"equal to 0.5 indicates that aPoint should be considered as falling before the glyph; a partial percentage"},{"type":"text","text":" "},{"type":"text","text":"greater than 0.5 indicates that it should be considered as falling after the glyph. If the nearest glyph doesn’t"},{"text":" ","type":"text"},{"type":"text","text":"lie under aPoint at all (for example, if aPoint is beyond the beginning or end of a line), this ratio is 0 or 1."}]},{"type":"paragraph","inlineContent":[{"text":"For example, if the glyph stream contains the glyphs “A” and “b”, with the width of “A” being 13 points, and","type":"text"},{"type":"text","text":" "},{"type":"text","text":"aPoint is 8 points from the left side of “A”, then the fraction of the distance is 8\/13, or 0.615. In this"},{"text":" ","type":"text"},{"text":"case, the aPoint should be considered as falling between “A” and “b” for purposes such as dragging out a","type":"text"},{"type":"text","text":" "},{"type":"text","text":"selection or placing the insertion point."}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/fractionOfDistanceThroughGlyph(for:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/fractionofdistancethroughglyph(for:)"]}],"metadata":{"title":"fractionOfDistanceThroughGlyph(for:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"fractionOfDistanceThroughGlyph","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier","text":"NSPoint"},{"text":") -> ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)fractionOfDistanceThroughGlyphForPoint:","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/fractionOfDistanceThroughGlyph(for:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/fractionOfDistanceThroughGlyph(for:)","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"fractionOfDistanceThroughGlyph","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSPoint","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":") -> "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/fractionofdistancethroughglyph(for:)","title":"fractionOfDistanceThroughGlyph(for:)","abstract":[{"type":"text","text":"Returns the fraction of the distance from the left side of the character to the right side that a given point"},{"type":"text","text":" "},{"type":"text","text":"lies."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/hasmarkedtext().json b/data/documentation/codeedittextview/textview/hasmarkedtext().json
new file mode 100644
index 000000000..460db6cd6
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/hasmarkedtext().json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/hasmarkedtext()"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hasMarkedText","kind":"identifier"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"},{"content":[{"text":"Return Value","type":"heading","anchor":"return-value","level":2},{"inlineContent":[{"text":"True if the receiver has marked text; otherwise false.","type":"text"}],"type":"paragraph"}],"kind":"content"},{"kind":"content","content":[{"type":"heading","text":"Discussion","anchor":"discussion","level":2},{"inlineContent":[{"text":"The text view itself may call this method to determine whether there currently is marked text.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"NSTextView, for example, disables the Edit > Copy menu item when this method returns true."}],"type":"paragraph"}]}],"metadata":{"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)hasMarkedText","modules":[{"name":"CodeEditTextView"}],"role":"symbol","extendedModule":"CodeEditTextView","title":"hasMarkedText()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"hasMarkedText"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"roleHeading":"Instance Method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hasMarkedText()","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"type":"text","text":"Returns a Boolean value indicating whether the receiver has marked text."}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/hasMarkedText()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hasMarkedText()","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/hasmarkedtext()","title":"hasMarkedText()","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"hasMarkedText"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"abstract":[{"text":"Returns a Boolean value indicating whether the receiver has marked text.","type":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/hittest(_:).json b/data/documentation/codeedittextview/textview/hittest(_:).json
new file mode 100644
index 000000000..fb0c11227
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/hittest(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"hitTest","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"point","kind":"internalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","kind":"typeIdentifier","text":"NSPoint"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"name":"point","content":[{"inlineContent":[{"text":"The point to find.","type":"text"}],"type":"paragraph"}]}],"kind":"parameters"},{"content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"type":"paragraph","inlineContent":[{"text":"A view at the given point, if any.","type":"text"}]}],"kind":"content"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/hittest(_:)"]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hitTest(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"hitTest"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint","text":"NSPoint"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView","text":"NSView"},{"text":"?","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)TextView(im)hitTest:","title":"hitTest(_:)","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"abstract":[{"type":"text","text":"Returns the responding view for a given point."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/hitTest(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hitTest(_:)","title":"hitTest(_:)","url":"\/documentation\/codeedittextview\/textview\/hittest(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"hitTest","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint","text":"NSPoint"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"Returns the responding view for a given point."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/init(coder:).json b/data/documentation/codeedittextview/textview/init(coder:).json
new file mode 100644
index 000000000..d1a026050
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/init(coder:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","fragments":[{"kind":"identifier","text":"init"},{"text":"?(","kind":"text"},{"text":"coder","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSCoder","preciseIdentifier":"c:objc(cs)NSCoder","kind":"typeIdentifier"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@M@CodeEditTextView@objc(cs)TextView(im)initWithCoder:","title":"init(coder:)","symbolKind":"init","roleHeading":"Initializer"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"required"},{"text":" ","kind":"text"},{"kind":"keyword","text":"init"},{"text":"?(","kind":"text"},{"text":"coder","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSCoder","text":"NSCoder"},{"kind":"text","text":")"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(coder:)"},"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/init(coder:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/init(coder:)":{"kind":"symbol","title":"init(coder:)","url":"\/documentation\/codeedittextview\/textview\/init(coder:)","abstract":[],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(coder:)","fragments":[{"kind":"identifier","text":"init"},{"text":"?(","kind":"text"},{"text":"coder","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSCoder","text":"NSCoder","kind":"typeIdentifier"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:).json b/data/documentation/codeedittextview/textview/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:).json
new file mode 100644
index 000000000..11c815e49
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"title":"init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)","fragments":[{"kind":"identifier","text":"init"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"string"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"font"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont","text":"NSFont"},{"kind":"text","text":", "},{"text":"textColor","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"lineHeightMultiplier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"wrapLines"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"isEditable","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"text":"isSelectable","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"letterSpacing","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sd","kind":"typeIdentifier","text":"Double"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"useSystemCursor"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"delegate"},{"text":": ","kind":"text"},{"text":"TextViewDelegate","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP"},{"kind":"text","text":"?)"}],"externalID":"s:16CodeEditTextView0cD0C6string4font9textColor20lineHeightMultiplier9wrapLines10isEditable0N10Selectable13letterSpacing15useSystemCursor8delegateACSS_So6NSFontCSo7NSColorC14CoreFoundation7CGFloatVS3bSdSbAA0cD8Delegate_pSgtcfc","roleHeading":"Initializer","modules":[{"name":"CodeEditTextView"}],"symbolKind":"init","role":"symbol"},"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","abstract":[{"type":"text","text":"Initializes the text view."}],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"text":"string","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"font","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSFont","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont"},{"kind":"text","text":" = .monospacedSystemFont(ofSize: 12, weight: .regular), "},{"text":"textColor","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"},{"kind":"text","text":" = .labelColor, "},{"text":"lineHeightMultiplier","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":" = 1.0, ","kind":"text"},{"kind":"externalParam","text":"wrapLines"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":" = true, ","kind":"text"},{"text":"isEditable","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":" = true, ","kind":"text"},{"text":"isSelectable","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":" = true, ","kind":"text"},{"text":"letterSpacing","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Double","preciseIdentifier":"s:Sd"},{"text":" = 1.0, ","kind":"text"},{"kind":"externalParam","text":"useSystemCursor"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":" = false, ","kind":"text"},{"text":"delegate","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"TextViewDelegate","preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"},{"kind":"text","text":"? = nil)"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"},{"parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The contents of the text view.","type":"text"}]}],"name":"string"},{"content":[{"type":"paragraph","inlineContent":[{"text":"The default font.","type":"text"}]}],"name":"font"},{"content":[{"type":"paragraph","inlineContent":[{"text":"The default text color.","type":"text"}]}],"name":"textColor"},{"name":"lineHeightMultiplier","content":[{"type":"paragraph","inlineContent":[{"text":"The multiplier to use for line heights.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Determines how the view will wrap lines to the viewport."}]}],"name":"wrapLines"},{"content":[{"inlineContent":[{"type":"text","text":"Determines if the view is editable."}],"type":"paragraph"}],"name":"isEditable"},{"name":"isSelectable","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Determines if the view is selectable."}]}]},{"name":"letterSpacing","content":[{"inlineContent":[{"type":"text","text":"Sets the letter spacing on the view."}],"type":"paragraph"}]},{"name":"useSystemCursor","content":[{"type":"paragraph","inlineContent":[{"text":"Set to true to use the system cursor. Only available in macOS >= 14.","type":"text"}]}]},{"name":"delegate","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The text view’s delegate."}]}]}],"kind":"parameters"}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:)","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"string"},{"kind":"text","text":": "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":", ","kind":"text"},{"text":"font","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSFont","text":"NSFont"},{"kind":"text","text":", "},{"text":"textColor","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor","text":"NSColor"},{"kind":"text","text":", "},{"text":"lineHeightMultiplier","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"kind":"text","text":", "},{"kind":"externalParam","text":"wrapLines"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"isEditable"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":", ","kind":"text"},{"text":"isSelectable","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"letterSpacing","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Double","preciseIdentifier":"s:Sd"},{"kind":"text","text":", "},{"text":"useSystemCursor","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"delegate"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0cD8DelegateP","text":"TextViewDelegate"},{"text":"?)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)","type":"topic","abstract":[{"text":"Initializes the text view.","type":"text"}],"title":"init(string:font:textColor:lineHeightMultiplier:wrapLines:isEditable:isSelectable:letterSpacing:useSystemCursor:delegate:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/insertnewline(_:).json b/data/documentation/codeedittextview/textview/insertnewline(_:).json
new file mode 100644
index 000000000..72cd27bc8
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/insertnewline(_:).json
@@ -0,0 +1 @@
+{"metadata":{"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)insertNewline:","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"insertNewline","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"insertNewline(_:)","symbolKind":"method"},"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"insertNewline","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertNewline(_:)"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/insertnewline(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertNewline(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/insertnewline(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"insertNewline","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertNewline(_:)","type":"topic","abstract":[],"title":"insertNewline(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/inserttab(_:).json b/data/documentation/codeedittextview/textview/inserttab(_:).json
new file mode 100644
index 000000000..e47522fdd
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/inserttab(_:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"insertTab"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)insertTab:","extendedModule":"CodeEditTextView","role":"symbol","title":"insertTab(_:)","modules":[{"name":"CodeEditTextView"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertTab(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/inserttab(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertTab"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertTab(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"insertTab","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"insertTab(_:)","url":"\/documentation\/codeedittextview\/textview\/inserttab(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertTab(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/inserttext(_:).json b/data/documentation/codeedittextview/textview/inserttext(_:).json
new file mode 100644
index 000000000..f3e2ac4ec
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/inserttext(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertText"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":")","kind":"text"}],"roleHeading":"Instance Method","title":"insertText(_:)","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)insertText:","symbolKind":"method"},"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"insertText","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"insertString"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/inserttext(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertText(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:)","title":"insertText(_:)","url":"\/documentation\/codeedittextview\/textview\/inserttext(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertText"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":")"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/inserttext(_:replacementrange:).json b/data/documentation/codeedittextview/textview/inserttext(_:replacementrange:).json
new file mode 100644
index 000000000..02f94ec41
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/inserttext(_:replacementrange:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"insertText","kind":"identifier"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"replacementRange"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":")"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)insertText:replacementRange:","extendedModule":"CodeEditTextView","role":"symbol","title":"insertText(_:replacementRange:)","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:replacementRange:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/inserttext(_:replacementrange:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","abstract":[{"type":"text","text":"Inserts the given string into the receiver, replacing the specified content."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertText"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"string"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":", ","kind":"text"},{"text":"replacementRange","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":")"}]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"name":"string","content":[{"type":"paragraph","inlineContent":[{"text":"The text to insert, either an NSString or NSAttributedString instance.","type":"text"}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The range of content to replace in the receiver’s text storage."}]}],"name":"replacementRange"}]},{"kind":"content","content":[{"text":"Discussion","type":"heading","level":2,"anchor":"discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Programmatic modification of the text is best done by operating on the text storage directly."},{"type":"text","text":" "},{"type":"text","text":"Because this method pertains to the actions of the user, the text view must be editable for the"},{"type":"text","text":" "},{"type":"text","text":"insertion to work."}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertText(_:replacementRange:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:replacementRange:)","url":"\/documentation\/codeedittextview\/textview\/inserttext(_:replacementrange:)","title":"insertText(_:replacementRange:)","type":"topic","abstract":[{"text":"Inserts the given string into the receiver, replacing the specified content.","type":"text"}],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"insertText","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":", "},{"kind":"externalParam","text":"replacementRange"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/isaccessibilityelement().json b/data/documentation/codeedittextview/textview/isaccessibilityelement().json
new file mode 100644
index 000000000..921021491
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/isaccessibilityelement().json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/isaccessibilityelement()"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityElement()","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"isAccessibilityElement"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}]}],"kind":"symbol","metadata":{"symbolKind":"method","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)isAccessibilityElement","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"isAccessibilityElement","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"roleHeading":"Instance Method","title":"isAccessibilityElement()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isAccessibilityElement()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityElement()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/isaccessibilityelement()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"isAccessibilityElement"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"isAccessibilityElement()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/isaccessibilityenabled().json b/data/documentation/codeedittextview/textview/isaccessibilityenabled().json
new file mode 100644
index 000000000..40196539c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/isaccessibilityenabled().json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"isAccessibilityEnabled","kind":"identifier"},{"text":"() -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"languages":["swift"]}]}],"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textview\/isaccessibilityenabled()"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityEnabled()"},"sections":[],"metadata":{"title":"isAccessibilityEnabled()","role":"symbol","roleHeading":"Instance Method","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)isAccessibilityEnabled","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isAccessibilityEnabled","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isAccessibilityEnabled()":{"url":"\/documentation\/codeedittextview\/textview\/isaccessibilityenabled()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityEnabled()","title":"isAccessibilityEnabled()","type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"isAccessibilityEnabled","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/isaccessibilityfocused().json b/data/documentation/codeedittextview/textview/isaccessibilityfocused().json
new file mode 100644
index 000000000..f100bfde4
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/isaccessibilityfocused().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"isAccessibilityFocused"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)isAccessibilityFocused","title":"isAccessibilityFocused()","roleHeading":"Instance Method"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isAccessibilityFocused"},{"kind":"text","text":"() -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityFocused()","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/isaccessibilityfocused()"]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isAccessibilityFocused()":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/isaccessibilityfocused()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isAccessibilityFocused()","title":"isAccessibilityFocused()","role":"symbol","type":"topic","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isAccessibilityFocused"},{"kind":"text","text":"() -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/iscompatiblewithresponsivescrolling.json b/data/documentation/codeedittextview/textview/iscompatiblewithresponsivescrolling.json
new file mode 100644
index 000000000..3db0976f8
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/iscompatiblewithresponsivescrolling.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/iscompatiblewithresponsivescrolling"]}],"kind":"symbol","sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isCompatibleWithResponsiveScrolling"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"symbolKind":"property","roleHeading":"Type Property","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"isCompatibleWithResponsiveScrolling"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(cpy)compatibleWithResponsiveScrolling","title":"isCompatibleWithResponsiveScrolling"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isCompatibleWithResponsiveScrolling"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isCompatibleWithResponsiveScrolling":{"fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isCompatibleWithResponsiveScrolling","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/iscompatiblewithresponsivescrolling","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isCompatibleWithResponsiveScrolling","type":"topic","abstract":[],"title":"isCompatibleWithResponsiveScrolling","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/iseditable.json b/data/documentation/codeedittextview/textview/iseditable.json
new file mode 100644
index 000000000..9e906a38a
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/iseditable.json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"Determines if the text view’s content can be edited.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isEditable"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"]}]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"isEditable"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"modules":[{"name":"CodeEditTextView"}],"title":"isEditable","role":"symbol","externalID":"s:16CodeEditTextView0cD0C10isEditableSbvp","roleHeading":"Instance Property","symbolKind":"property"},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isEditable","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/iseditable"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isEditable":{"title":"isEditable","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isEditable","type":"topic","abstract":[{"text":"Determines if the text view’s content can be edited.","type":"text"}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"isEditable","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/iseditable"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/isflipped.json b/data/documentation/codeedittextview/textview/isflipped.json
new file mode 100644
index 000000000..62b10a8bb
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/isflipped.json
@@ -0,0 +1 @@
+{"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(py)flipped","title":"isFlipped","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"isFlipped","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"extendedModule":"CodeEditTextView"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/isflipped"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isFlipped"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isFlipped","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isFlipped":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"isFlipped","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"url":"\/documentation\/codeedittextview\/textview\/isflipped","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isFlipped","type":"topic","abstract":[],"title":"isFlipped","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/isselectable.json b/data/documentation/codeedittextview/textview/isselectable.json
new file mode 100644
index 000000000..045e15f38
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/isselectable.json
@@ -0,0 +1 @@
+{"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isSelectable","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/isselectable"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Determines if the text view responds to selection events, such as clicks."}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C12isSelectableSbvp","symbolKind":"property","title":"isSelectable","roleHeading":"Instance Property","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"isSelectable","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isSelectable","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/isSelectable":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isSelectable"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"isSelectable","url":"\/documentation\/codeedittextview\/textview\/isselectable","kind":"symbol","abstract":[{"type":"text","text":"Determines if the text view responds to selection events, such as clicks."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/isSelectable","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/kern.json b/data/documentation/codeedittextview/textview/kern.json
new file mode 100644
index 000000000..9f2c85967
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/kern.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"kern","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}]}]},{"content":[{"level":2,"type":"heading","text":"Discussion","anchor":"discussion"},{"name":"Note","type":"aside","style":"note","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Setting the kern for the text view will update the kern as the user types. To change the"},{"type":"text","text":" "},{"text":"kern for the entire view, update the ","type":"text"},{"code":"kern","type":"codeVoice"},{"type":"text","text":" attribute in "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","isActive":true,"type":"reference"},{"type":"text","text":"."}]}]}],"kind":"content"}],"kind":"symbol","abstract":[{"type":"text","text":"The kern to use for characters. Defaults to "},{"code":"0.0","type":"codeVoice"},{"type":"text","text":" and is updated when "},{"code":"letterSpacing","type":"codeVoice"},{"text":" is set.","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/kern"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/kern","interfaceLanguage":"swift"},"metadata":{"title":"kern","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"kern"},{"kind":"text","text":": "},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier","text":"CGFloat"}],"externalID":"s:16CodeEditTextView0cD0C4kern14CoreFoundation7CGFloatVvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textStorage":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textstorage","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":"!","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","type":"topic","abstract":[{"type":"text","text":"The text storage object for the text view."}],"title":"textStorage","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/kern":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/kern","kind":"symbol","title":"kern","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"kern","kind":"identifier"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/kern","abstract":[{"type":"text","text":"The kern to use for characters. Defaults to "},{"code":"0.0","type":"codeVoice"},{"text":" and is updated when ","type":"text"},{"type":"codeVoice","code":"letterSpacing"},{"type":"text","text":" is set."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/keydown(with:).json b/data/documentation/codeedittextview/textview/keydown(with:).json
new file mode 100644
index 000000000..b2475e2f6
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/keydown(with:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"keyDown","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"text":")","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)keyDown:","extendedModule":"CodeEditTextView","role":"symbol","title":"keyDown(with:)","modules":[{"name":"CodeEditTextView"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/keyDown(with:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/keydown(with:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"keyDown","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"with"},{"text":" ","kind":"text"},{"text":"event","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"text":")","kind":"text"}],"languages":["swift"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/keyDown(with:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"keyDown","kind":"identifier"},{"kind":"text","text":"("},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"keyDown(with:)","url":"\/documentation\/codeedittextview\/textview\/keydown(with:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/keyDown(with:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/layout().json b/data/documentation/codeedittextview/textview/layout().json
new file mode 100644
index 000000000..56bb8d719
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/layout().json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layout()","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"layout","kind":"identifier"},{"kind":"text","text":"()"}],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/layout()"]}],"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"layout","kind":"identifier"},{"kind":"text","text":"()"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)layout","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"title":"layout()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layout()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layout()","title":"layout()","url":"\/documentation\/codeedittextview\/textview\/layout()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"layout","kind":"identifier"},{"kind":"text","text":"()"}],"abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/layoutmanager.json b/data/documentation/codeedittextview/textview/layoutmanager.json
new file mode 100644
index 000000000..472399a0b
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/layoutmanager.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManager"},{"kind":"text","text":": "},{"text":"TextLayoutManager","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager"},{"text":"! { get }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/layoutmanager"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManager"},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"layoutManager","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManager"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager","text":"TextLayoutManager"},{"kind":"text","text":"!"}],"externalID":"s:16CodeEditTextView0cD0C13layoutManagerAA0c6LayoutF0CSgvp","roleHeading":"Instance Property","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","abstract":[{"type":"text","text":"The layout manager for the text view."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLayoutManager":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLayoutManager","url":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","navigatorTitle":[{"text":"TextLayoutManager","kind":"identifier"}],"type":"topic","abstract":[{"type":"text","text":"The text layout manager manages laying out lines in a code document."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"text":"TextLayoutManager","kind":"identifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManager":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"layoutManager","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextLayoutManager","text":"TextLayoutManager"},{"text":"!","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/layoutmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManager","type":"topic","abstract":[{"text":"The layout manager for the text view.","type":"text"}],"title":"layoutManager","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/layoutmanagerheightdidupdate(newheight:).json b/data/documentation/codeedittextview/textview/layoutmanagerheightdidupdate(newheight:).json
new file mode 100644
index 000000000..956cd1f42
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/layoutmanagerheightdidupdate(newheight:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","title":"layoutManagerHeightDidUpdate(newHeight:)","externalID":"s:16CodeEditTextView0cD0C28layoutManagerHeightDidUpdate03newG0y14CoreFoundation7CGFloatV_tF","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"layoutManagerHeightDidUpdate","kind":"identifier"},{"kind":"text","text":"("},{"text":"newHeight","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}]},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/layoutmanagerheightdidupdate(newheight:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"layoutManagerHeightDidUpdate","kind":"identifier"},{"text":"(","kind":"text"},{"text":"newHeight","kind":"externalParam"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"TextLayoutManagerDelegate.layoutManagerHeightDidUpdate(newHeight:)","type":"codeVoice"},{"type":"text","text":"."}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerHeightDidUpdate(newHeight:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerHeightDidUpdate(newHeight:)":{"kind":"symbol","title":"layoutManagerHeightDidUpdate(newHeight:)","role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"layoutManagerHeightDidUpdate","kind":"identifier"},{"text":"(","kind":"text"},{"text":"newHeight","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerHeightDidUpdate(newHeight:)","url":"\/documentation\/codeedittextview\/textview\/layoutmanagerheightdidupdate(newheight:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/layoutmanagermaxwidthdidchange(newwidth:).json b/data/documentation/codeedittextview/textview/layoutmanagermaxwidthdidchange(newwidth:).json
new file mode 100644
index 000000000..44ba2e30b
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/layoutmanagermaxwidthdidchange(newwidth:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"type":"text","text":"Inherited from "},{"code":"TextLayoutManagerDelegate.layoutManagerMaxWidthDidChange(newWidth:)","type":"codeVoice"},{"text":".","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerMaxWidthDidChange(newWidth:)"},"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","title":"layoutManagerMaxWidthDidChange(newWidth:)","externalID":"s:16CodeEditTextView0cD0C30layoutManagerMaxWidthDidChange03newH0y14CoreFoundation7CGFloatV_tF","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"layoutManagerMaxWidthDidChange"},{"kind":"text","text":"("},{"text":"newWidth","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"kind":"text","text":")"}],"symbolKind":"method"},"sections":[],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"layoutManagerMaxWidthDidChange","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"newWidth"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"text":")","kind":"text"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/layoutmanagermaxwidthdidchange(newwidth:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerMaxWidthDidChange(newWidth:)":{"abstract":[],"type":"topic","title":"layoutManagerMaxWidthDidChange(newWidth:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"layoutManagerMaxWidthDidChange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"newWidth"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/layoutmanagermaxwidthdidchange(newwidth:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerMaxWidthDidChange(newWidth:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/layoutmanagertypingattributes().json b/data/documentation/codeedittextview/textview/layoutmanagertypingattributes().json
new file mode 100644
index 000000000..a37fb722e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/layoutmanagertypingattributes().json
@@ -0,0 +1 @@
+{"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","role":"symbol","externalID":"s:16CodeEditTextView0cD0C29layoutManagerTypingAttributesSDySo21NSAttributedStringKeyaypGyF","symbolKind":"method","title":"layoutManagerTypingAttributes()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerTypingAttributes"},{"text":"() -> [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"text":".","kind":"text"},{"preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"]","kind":"text"}],"extendedModule":"CodeEditTextView"},"abstract":[{"type":"text","text":"Inherited from "},{"code":"TextLayoutManagerDelegate.layoutManagerTypingAttributes()","type":"codeVoice"},{"type":"text","text":"."}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"layoutManagerTypingAttributes","kind":"identifier"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"]","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/layoutmanagertypingattributes()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerTypingAttributes()"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerTypingAttributes()":{"title":"layoutManagerTypingAttributes()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"layoutManagerTypingAttributes","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"},{"text":".","kind":"text"},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"text":"Any","kind":"keyword"},{"kind":"text","text":"]"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/layoutmanagertypingattributes()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerTypingAttributes()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/layoutmanageryadjustment(_:).json b/data/documentation/codeedittextview/textview/layoutmanageryadjustment(_:).json
new file mode 100644
index 000000000..32459da29
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/layoutmanageryadjustment(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerYAdjustment"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":")"}],"symbolKind":"method","title":"layoutManagerYAdjustment(_:)","extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0cD0C24layoutManagerYAdjustmentyy14CoreFoundation7CGFloatVF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method"},"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"layoutManagerYAdjustment"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"yAdjustment","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"},{"kind":"text","text":")"}],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/layoutmanageryadjustment(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerYAdjustment(_:)"},"sections":[],"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"TextLayoutManagerDelegate.layoutManagerYAdjustment(_:)"},{"type":"text","text":"."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerYAdjustment(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textview\/layoutmanageryadjustment(_:)","title":"layoutManagerYAdjustment(_:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerYAdjustment(_:)","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"layoutManagerYAdjustment","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/letterspacing.json b/data/documentation/codeedittextview/textview/letterspacing.json
new file mode 100644
index 000000000..f511abfbb
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/letterspacing.json
@@ -0,0 +1 @@
+{"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/letterspacing"]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/letterSpacing","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"letterSpacing","kind":"identifier"},{"kind":"text","text":": "},{"text":"Double","preciseIdentifier":"s:Sd","kind":"typeIdentifier"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}]}]}],"metadata":{"title":"letterSpacing","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C13letterSpacingSdvp","role":"symbol","symbolKind":"property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"letterSpacing"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sd","text":"Double"}]},"abstract":[{"text":"A multiplier that determines the amount of space between characters. ","type":"text"},{"code":"1.0","type":"codeVoice"},{"type":"text","text":" indicates no space,"},{"type":"text","text":" "},{"type":"codeVoice","code":"2.0"},{"text":" indicates one character of space between other characters.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/letterSpacing":{"abstract":[{"type":"text","text":"A multiplier that determines the amount of space between characters. "},{"type":"codeVoice","code":"1.0"},{"type":"text","text":" indicates no space,"},{"type":"text","text":" "},{"type":"codeVoice","code":"2.0"},{"type":"text","text":" indicates one character of space between other characters."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/letterSpacing","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/letterspacing","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"letterSpacing","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sd","text":"Double","kind":"typeIdentifier"}],"title":"letterSpacing"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/linebreakstrategy.json b/data/documentation/codeedittextview/textview/linebreakstrategy.json
new file mode 100644
index 000000000..812bccbb3
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/linebreakstrategy.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/linebreakstrategy"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineBreakStrategy","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"type":"text","text":"The strategy to use when breaking lines. Defaults to "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"reference"},{"text":".","type":"text"}],"metadata":{"symbolKind":"property","externalID":"s:16CodeEditTextView0cD0C17lineBreakStrategyAA04LinefG0Ovp","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"lineBreakStrategy"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO","text":"LineBreakStrategy","kind":"typeIdentifier"}],"title":"lineBreakStrategy","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"lineBreakStrategy","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"LineBreakStrategy","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy":{"kind":"symbol","fragments":[{"text":"enum","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"LineBreakStrategy"}],"navigatorTitle":[{"text":"LineBreakStrategy","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy","abstract":[{"type":"text","text":"Options for breaking lines when they cannot fit in the viewport."}],"title":"LineBreakStrategy","type":"topic"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/lineBreakStrategy":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"lineBreakStrategy","kind":"identifier"},{"kind":"text","text":": "},{"text":"LineBreakStrategy","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView17LineBreakStrategyO"}],"type":"topic","url":"\/documentation\/codeedittextview\/textview\/linebreakstrategy","role":"symbol","kind":"symbol","title":"lineBreakStrategy","abstract":[{"type":"text","text":"The strategy to use when breaking lines. Defaults to "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","isActive":true},{"text":".","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineBreakStrategy"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineBreakStrategy/word":{"abstract":[{"type":"text","text":"Break lines at word boundaries when possible."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineBreakStrategy\/word","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/linebreakstrategy\/word","kind":"symbol","fragments":[{"kind":"keyword","text":"case"},{"text":" ","kind":"text"},{"text":"word","kind":"identifier"}],"title":"LineBreakStrategy.word"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/lineheight.json b/data/documentation/codeedittextview/textview/lineheight.json
new file mode 100644
index 000000000..8c1751db5
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/lineheight.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Property","externalID":"s:16CodeEditTextView0cD0C10lineHeight14CoreFoundation7CGFloatVvp","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","title":"lineHeight","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineHeight","kind":"identifier"},{"kind":"text","text":": "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineHeight","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"lineHeight","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"The line height as a multiple of the font’s line height. 1.0 represents no change in height.","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/lineheight"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/lineHeight":{"title":"lineHeight","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/lineHeight","type":"topic","abstract":[{"type":"text","text":"The line height as a multiple of the font’s line height. 1.0 represents no change in height."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineHeight"},{"text":": ","kind":"text"},{"text":"CGFloat","kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/lineheight"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/markedrange().json b/data/documentation/codeedittextview/textview/markedrange().json
new file mode 100644
index 000000000..be267537a
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/markedrange().json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"markedRange","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}],"platforms":["macOS"],"languages":["swift"]}]},{"content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"type":"paragraph","inlineContent":[{"text":"The range of marked text or {NSNotFound, 0} if there is no marked range.","type":"text"}]}],"kind":"content"},{"kind":"content","content":[{"text":"Discussion","type":"heading","anchor":"discussion","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"The returned range measures from the start of the receiver’s text storage. The return value’s location is"},{"type":"text","text":" "},{"type":"codeVoice","code":"NSNotFound"},{"type":"text","text":" and its length is "},{"code":"0","type":"codeVoice"},{"type":"text","text":" if and only if "},{"code":"hasMarkedText()","type":"codeVoice"},{"text":" returns false.","type":"text"}]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedRange()","interfaceLanguage":"swift"},"sections":[],"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)markedRange","title":"markedRange()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"markedRange","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"roleHeading":"Instance Method"},"abstract":[{"type":"text","text":"Returns the range of the marked text."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/markedrange()"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/markedRange()":{"abstract":[{"text":"Returns the range of the marked text.","type":"text"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedRange()","role":"symbol","kind":"symbol","title":"markedRange()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"markedRange"},{"text":"() -> ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/markedrange()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/markedtextattributes.json b/data/documentation/codeedittextview/textview/markedtextattributes.json
new file mode 100644
index 000000000..73ffd43e9
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/markedtextattributes.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedTextAttributes","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The attributes used to render marked text."},{"type":"text","text":" "},{"type":"text","text":"Defaults to a single underline."}],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"markedTextAttributes"},{"text":": [","kind":"text"},{"text":"NSAttributedString","preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"] { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/markedtextattributes"]}],"metadata":{"title":"markedTextAttributes","externalID":"s:16CodeEditTextView0cD0C06markedC10AttributesSDySo21NSAttributedStringKeyaypGvp","symbolKind":"property","role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"markedTextAttributes","kind":"identifier"},{"kind":"text","text":": ["},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"},{"text":".","kind":"text"},{"preciseIdentifier":"c:@T@NSAttributedStringKey","text":"Key","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"]"}]},"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/markedTextAttributes":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedTextAttributes","title":"markedTextAttributes","type":"topic","abstract":[{"type":"text","text":"The attributes used to render marked text."},{"type":"text","text":" "},{"text":"Defaults to a single underline.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"markedTextAttributes"},{"text":": [","kind":"text"},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"]","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/markedtextattributes"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/menu(for:).json b/data/documentation/codeedittextview/textview/menu(for:).json
new file mode 100644
index 000000000..6c0d1ec9a
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/menu(for:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/menu(for:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"menu","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"for"},{"text":" ","kind":"text"},{"text":"event","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"kind":"text","text":") -> "},{"text":"NSMenu","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSMenu"},{"text":"?","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)menuForEvent:","title":"menu(for:)","symbolKind":"method","role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"menu","kind":"identifier"},{"text":"(","kind":"text"},{"text":"for","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"NSMenu","preciseIdentifier":"c:objc(cs)NSMenu","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textview\/menu(for:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/menu(for:)":{"title":"menu(for:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/menu(for:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"menu","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier","text":"NSEvent"},{"kind":"text","text":") -> "},{"preciseIdentifier":"c:objc(cs)NSMenu","text":"NSMenu","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/menu(for:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/mousedown(with:).json b/data/documentation/codeedittextview/textview/mousedown(with:).json
new file mode 100644
index 000000000..608931899
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/mousedown(with:).json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/mousedown(with:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"mouseDown","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"event","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"kind":"text","text":")"}]}]}],"metadata":{"title":"mouseDown(with:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"mouseDown","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"kind":"text","text":")"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)mouseDown:","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","extendedModule":"CodeEditTextView","role":"symbol"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDown(with:)","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/mouseDown(with:)":{"url":"\/documentation\/codeedittextview\/textview\/mousedown(with:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDown(with:)","title":"mouseDown(with:)","type":"topic","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"mouseDown","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"kind":"text","text":")"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/mousedragged(with:).json b/data/documentation/codeedittextview/textview/mousedragged(with:).json
new file mode 100644
index 000000000..52272804d
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/mousedragged(with:).json
@@ -0,0 +1 @@
+{"kind":"symbol","metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"mouseDragged","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSEvent","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent"},{"text":")","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)mouseDragged:","extendedModule":"CodeEditTextView","title":"mouseDragged(with:)","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"mouseDragged","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"event"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier","text":"NSEvent"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/mousedragged(with:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDragged(with:)"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/mouseDragged(with:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"mouseDragged","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"text":"NSEvent","preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"mouseDragged(with:)","url":"\/documentation\/codeedittextview\/textview\/mousedragged(with:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseDragged(with:)","type":"topic","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/mouseup(with:).json b/data/documentation/codeedittextview/textview/mouseup(with:).json
new file mode 100644
index 000000000..92991f18b
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/mouseup(with:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"mouseUp"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSEvent","preciseIdentifier":"c:objc(cs)NSEvent"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)mouseUp:","title":"mouseUp(with:)"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseUp(with:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/mouseup(with:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"mouseUp","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":" "},{"text":"event","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSEvent","preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/mouseUp(with:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/mouseUp(with:)","title":"mouseUp(with:)","url":"\/documentation\/codeedittextview\/textview\/mouseup(with:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mouseUp"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSEvent","kind":"typeIdentifier","text":"NSEvent"},{"text":")","kind":"text"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movedown(_:).json b/data/documentation/codeedittextview/textview/movedown(_:).json
new file mode 100644
index 000000000..6fd24e60e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movedown(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"type":"text","text":"Moves the cursors down one character."}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDown(_:)","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveDown","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movedown(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveDown:","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveDown"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"symbolKind":"method","title":"moveDown(_:)","extendedModule":"CodeEditTextView","role":"symbol"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveDown(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveDown","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"url":"\/documentation\/codeedittextview\/textview\/movedown(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDown(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors down one character."}],"title":"moveDown(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movedownandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movedownandmodifyselection(_:).json
new file mode 100644
index 000000000..1f8796eed
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movedownandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDownAndModifySelection(_:)"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveDownAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveDownAndModifySelection:","extendedModule":"CodeEditTextView","role":"symbol","title":"moveDownAndModifySelection(_:)","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveDownAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movedownandmodifyselection(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"Moves the cursors down one character extending the current selection.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveDownAndModifySelection(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveDownAndModifySelection(_:)","title":"moveDownAndModifySelection(_:)","url":"\/documentation\/codeedittextview\/textview\/movedownandmodifyselection(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveDownAndModifySelection","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"abstract":[{"type":"text","text":"Moves the cursors down one character extending the current selection."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/moveleft(_:).json b/data/documentation/codeedittextview/textview/moveleft(_:).json
new file mode 100644
index 000000000..7478a0817
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/moveleft(_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeft(_:)","interfaceLanguage":"swift"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveLeft"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveLeft:","extendedModule":"CodeEditTextView","role":"symbol","title":"moveLeft(_:)","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveLeft"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/moveleft(_:)"]}],"abstract":[{"text":"Moves the cursors left one character.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveLeft(_:)":{"title":"moveLeft(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeft(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors left one character."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveLeft","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/moveleft(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/moveleftandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/moveleftandmodifyselection(_:).json
new file mode 100644
index 000000000..0cd5775db
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/moveleftandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/moveleftandmodifyselection(_:)"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"type":"text","text":"Moves the cursors left one character extending the current selection."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeftAndModifySelection(_:)"},"metadata":{"title":"moveLeftAndModifySelection(_:)","extendedModule":"CodeEditTextView","symbolKind":"method","role":"symbol","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveLeftAndModifySelection"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"roleHeading":"Instance Method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveLeftAndModifySelection:"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveLeftAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveLeftAndModifySelection(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveLeftAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/moveleftandmodifyselection(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveLeftAndModifySelection(_:)","type":"topic","abstract":[{"text":"Moves the cursors left one character extending the current selection.","type":"text"}],"title":"moveLeftAndModifySelection(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/moveright(_:).json b/data/documentation/codeedittextview/textview/moveright(_:).json
new file mode 100644
index 000000000..1719ecf38
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/moveright(_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRight(_:)","interfaceLanguage":"swift"},"abstract":[{"text":"Moves the cursors right one character.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveRight"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}]}]}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/moveright(_:)"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveRight:","extendedModule":"CodeEditTextView","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveRight"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"moveRight(_:)","symbolKind":"method"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveRight(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveRight"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"title":"moveRight(_:)","url":"\/documentation\/codeedittextview\/textview\/moveright(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors right one character.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRight(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/moverightandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/moverightandmodifyselection(_:).json
new file mode 100644
index 000000000..048773bc0
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/moverightandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"kind":"symbol","metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveRightAndModifySelection:","title":"moveRightAndModifySelection(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveRightAndModifySelection","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"roleHeading":"Instance Method"},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRightAndModifySelection(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"type":"text","text":"Moves the cursors right one character extending the current selection."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/moverightandmodifyselection(_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveRightAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveRightAndModifySelection(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveRightAndModifySelection(_:)","kind":"symbol","title":"moveRightAndModifySelection(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveRightAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/moverightandmodifyselection(_:)","abstract":[{"type":"text","text":"Moves the cursors right one character extending the current selection."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetobeginningofdocument(_:).json b/data/documentation/codeedittextview/textview/movetobeginningofdocument(_:).json
new file mode 100644
index 000000000..d8e6447ee
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetobeginningofdocument(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movetobeginningofdocument(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveToBeginningOfDocument"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}]}]}],"abstract":[{"text":"Moves the cursors to the beginning of the document.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocument(_:)"},"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToBeginningOfDocument:","title":"moveToBeginningOfDocument(_:)","symbolKind":"method","role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveToBeginningOfDocument","kind":"identifier"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfDocument(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocument(_:)","kind":"symbol","title":"moveToBeginningOfDocument(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToBeginningOfDocument","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"url":"\/documentation\/codeedittextview\/textview\/movetobeginningofdocument(_:)","abstract":[{"text":"Moves the cursors to the beginning of the document.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetobeginningofdocumentandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movetobeginningofdocumentandmodifyselection(_:).json
new file mode 100644
index 000000000..a293846a1
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetobeginningofdocumentandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"abstract":[{"text":"Moves the cursors to the beginning of the document extending the current selection.","type":"text"}],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetobeginningofdocumentandmodifyselection(_:)"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToBeginningOfDocumentAndModifySelection"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"extendedModule":"CodeEditTextView","title":"moveToBeginningOfDocumentAndModifySelection(_:)","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToBeginningOfDocumentAndModifySelection:","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToBeginningOfDocumentAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocumentAndModifySelection(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfDocumentAndModifySelection(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToBeginningOfDocumentAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/movetobeginningofdocumentandmodifyselection(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfDocumentAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the beginning of the document extending the current selection."}],"title":"moveToBeginningOfDocumentAndModifySelection(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetobeginningofparagraph(_:).json b/data/documentation/codeedittextview/textview/movetobeginningofparagraph(_:).json
new file mode 100644
index 000000000..3f38d7d9f
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetobeginningofparagraph(_:).json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraph(_:)","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToBeginningOfParagraph","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"metadata":{"title":"moveToBeginningOfParagraph(_:)","role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveToBeginningOfParagraph"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToBeginningOfParagraph:","extendedModule":"CodeEditTextView"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movetobeginningofparagraph(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"type":"text","text":"Moves the cursors to the beginning of the line, if pressed again selects the next line up."}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfParagraph(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToBeginningOfParagraph","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/movetobeginningofparagraph(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraph(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the beginning of the line, if pressed again selects the next line up."}],"title":"moveToBeginningOfParagraph(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetobeginningofparagraphandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movetobeginningofparagraphandmodifyselection(_:).json
new file mode 100644
index 000000000..60f8b4578
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetobeginningofparagraphandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","extendedModule":"CodeEditTextView","role":"symbol","roleHeading":"Instance Method","title":"moveToBeginningOfParagraphAndModifySelection(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToBeginningOfParagraphAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToBeginningOfParagraphAndModifySelection:"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveToBeginningOfParagraphAndModifySelection"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"type":"text","text":"Moves the cursors to the beginning of the line, if pressed again selects the next line up extending the current"},{"type":"text","text":" "},{"text":"selection.","type":"text"}],"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetobeginningofparagraphandmodifyselection(_:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraphAndModifySelection(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToBeginningOfParagraphAndModifySelection(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToBeginningOfParagraphAndModifySelection"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"moveToBeginningOfParagraphAndModifySelection(_:)","url":"\/documentation\/codeedittextview\/textview\/movetobeginningofparagraphandmodifyselection(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors to the beginning of the line, if pressed again selects the next line up extending the current","type":"text"},{"type":"text","text":" "},{"text":"selection.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToBeginningOfParagraphAndModifySelection(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetoendofdocument(_:).json b/data/documentation/codeedittextview/textview/movetoendofdocument(_:).json
new file mode 100644
index 000000000..10823ba89
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetoendofdocument(_:).json
@@ -0,0 +1 @@
+{"metadata":{"extendedModule":"CodeEditTextView","role":"symbol","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToEndOfDocument:","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveToEndOfDocument","kind":"identifier"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"roleHeading":"Instance Method","title":"moveToEndOfDocument(_:)","modules":[{"name":"CodeEditTextView"}]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocument(_:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","abstract":[{"type":"text","text":"Moves the cursors to the end of the document."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToEndOfDocument","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}]}]}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movetoendofdocument(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfDocument(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocument(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the end of the document."}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoendofdocument(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToEndOfDocument","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"moveToEndOfDocument(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetoendofdocumentandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movetoendofdocumentandmodifyselection(_:).json
new file mode 100644
index 000000000..37218bd4c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetoendofdocumentandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","title":"moveToEndOfDocumentAndModifySelection(_:)","extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToEndOfDocumentAndModifySelection:","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToEndOfDocumentAndModifySelection"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method"},"abstract":[{"type":"text","text":"Moves the cursors to the end of the document extending the current selection."}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocumentAndModifySelection(_:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetoendofdocumentandmodifyselection(_:)"]}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveToEndOfDocumentAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfDocumentAndModifySelection(_:)":{"title":"moveToEndOfDocumentAndModifySelection(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfDocumentAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the end of the document extending the current selection."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToEndOfDocumentAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoendofdocumentandmodifyselection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetoendofparagraph(_:).json b/data/documentation/codeedittextview/textview/movetoendofparagraph(_:).json
new file mode 100644
index 000000000..62f135f58
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetoendofparagraph(_:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToEndOfParagraph","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToEndOfParagraph:","roleHeading":"Instance Method","title":"moveToEndOfParagraph(_:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraph(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetoendofparagraph(_:)"]}],"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","abstract":[{"type":"text","text":"Moves the cursors to the end of the line, if pressed again selects the next line up."}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToEndOfParagraph","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfParagraph(_:)":{"title":"moveToEndOfParagraph(_:)","kind":"symbol","type":"topic","abstract":[{"text":"Moves the cursors to the end of the line, if pressed again selects the next line up.","type":"text"}],"role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToEndOfParagraph"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/movetoendofparagraph(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraph(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetoendofparagraphandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movetoendofparagraphandmodifyselection(_:).json
new file mode 100644
index 000000000..df590f5d2
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetoendofparagraphandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraphAndModifySelection(_:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetoendofparagraphandmodifyselection(_:)"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToEndOfParagraphAndModifySelection:","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","title":"moveToEndOfParagraphAndModifySelection(_:)","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToEndOfParagraphAndModifySelection"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"Moves the cursors to the end of the line, if pressed again selects the next line up extending the current"},{"type":"text","text":" "},{"type":"text","text":"selection."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToEndOfParagraphAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToEndOfParagraphAndModifySelection(_:)":{"title":"moveToEndOfParagraphAndModifySelection(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToEndOfParagraphAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors to the end of the line, if pressed again selects the next line up extending the current"},{"text":" ","type":"text"},{"text":"selection.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToEndOfParagraphAndModifySelection","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoendofparagraphandmodifyselection(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetoleftendofline(_:).json b/data/documentation/codeedittextview/textview/movetoleftendofline(_:).json
new file mode 100644
index 000000000..5f3635004
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetoleftendofline(_:).json
@@ -0,0 +1 @@
+{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveToLeftEndOfLine"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLine(_:)"},"abstract":[{"type":"text","text":"Moves the cursors left to the end of the line."}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movetoleftendofline(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToLeftEndOfLine:","title":"moveToLeftEndOfLine(_:)","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToLeftEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"extendedModule":"CodeEditTextView"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToLeftEndOfLine(_:)":{"url":"\/documentation\/codeedittextview\/textview\/movetoleftendofline(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors left to the end of the line.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLine(_:)","title":"moveToLeftEndOfLine(_:)","type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToLeftEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetoleftendoflineandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movetoleftendoflineandmodifyselection(_:).json
new file mode 100644
index 000000000..bd1a09ef8
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetoleftendoflineandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"text":"Moves the cursors left to the end of the line extending the current selection.","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLineAndModifySelection(_:)","interfaceLanguage":"swift"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToLeftEndOfLineAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"metadata":{"title":"moveToLeftEndOfLineAndModifySelection(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveToLeftEndOfLineAndModifySelection"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToLeftEndOfLineAndModifySelection:","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetoleftendoflineandmodifyselection(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToLeftEndOfLineAndModifySelection(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToLeftEndOfLineAndModifySelection(_:)","title":"moveToLeftEndOfLineAndModifySelection(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveToLeftEndOfLineAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"kind":"symbol","type":"topic","abstract":[{"text":"Moves the cursors left to the end of the line extending the current selection.","type":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetoleftendoflineandmodifyselection(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetorightendofline(_:).json b/data/documentation/codeedittextview/textview/movetorightendofline(_:).json
new file mode 100644
index 000000000..3508e6a43
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetorightendofline(_:).json
@@ -0,0 +1 @@
+{"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToRightEndOfLine","kind":"identifier"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToRightEndOfLine:","title":"moveToRightEndOfLine(_:)","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetorightendofline(_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToRightEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLine(_:)"},"kind":"symbol","sections":[],"abstract":[{"type":"text","text":"Moves the cursors right to the end of the line."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToRightEndOfLine(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"moveToRightEndOfLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"moveToRightEndOfLine(_:)","url":"\/documentation\/codeedittextview\/textview\/movetorightendofline(_:)","kind":"symbol","abstract":[{"text":"Moves the cursors right to the end of the line.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLine(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movetorightendoflineandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movetorightendoflineandmodifyselection(_:).json
new file mode 100644
index 000000000..96f4eeb81
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movetorightendoflineandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveToRightEndOfLineAndModifySelection","kind":"identifier"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveToRightEndOfLineAndModifySelection:","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","roleHeading":"Instance Method","title":"moveToRightEndOfLineAndModifySelection(_:)","symbolKind":"method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLineAndModifySelection(_:)","interfaceLanguage":"swift"},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"abstract":[{"text":"Moves the cursors right to the end of the line extending the current selection.","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveToRightEndOfLineAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movetorightendoflineandmodifyselection(_:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveToRightEndOfLineAndModifySelection(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/movetorightendoflineandmodifyselection(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveToRightEndOfLineAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveToRightEndOfLineAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors right to the end of the line extending the current selection."}],"title":"moveToRightEndOfLineAndModifySelection(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/moveup(_:).json b/data/documentation/codeedittextview/textview/moveup(_:).json
new file mode 100644
index 000000000..77883e1d0
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/moveup(_:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"moveUp(_:)","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"moveUp","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveUp:","symbolKind":"method","roleHeading":"Instance Method"},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUp(_:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveUp","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"Moves the cursors up one character.","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/moveup(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveUp(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUp(_:)","title":"moveUp(_:)","type":"topic","abstract":[{"text":"Moves the cursors up one character.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveUp"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/moveup(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/moveupandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/moveupandmodifyselection(_:).json
new file mode 100644
index 000000000..8e5d7d9c7
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/moveupandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveUpAndModifySelection"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/moveupandmodifyselection(_:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUpAndModifySelection(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"moveUpAndModifySelection(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveUpAndModifySelection"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveUpAndModifySelection:","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"kind":"symbol","abstract":[{"text":"Moves the cursors up one character extending the current selection.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveUpAndModifySelection(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveUpAndModifySelection(_:)","url":"\/documentation\/codeedittextview\/textview\/moveupandmodifyselection(_:)","title":"moveUpAndModifySelection(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveUpAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"abstract":[{"type":"text","text":"Moves the cursors up one character extending the current selection."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movewordleft(_:).json b/data/documentation/codeedittextview/textview/movewordleft(_:).json
new file mode 100644
index 000000000..976a9080d
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movewordleft(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movewordleft(_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveWordLeft"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}]}]}],"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveWordLeft"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"symbolKind":"method","role":"symbol","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveWordLeft:","modules":[{"name":"CodeEditTextView"}],"title":"moveWordLeft(_:)","roleHeading":"Instance Method","extendedModule":"CodeEditTextView"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeft(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Moves the cursors left one word."}],"sections":[],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordLeft(_:)":{"abstract":[{"type":"text","text":"Moves the cursors left one word."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeft(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movewordleft(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveWordLeft"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"title":"moveWordLeft(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movewordleftandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movewordleftandmodifyselection(_:).json
new file mode 100644
index 000000000..954250d3a
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movewordleftandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"text":"Moves the cursors left one word extending the current selection.","type":"text"}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveWordLeftAndModifySelection"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movewordleftandmodifyselection(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveWordLeftAndModifySelection:","role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","title":"moveWordLeftAndModifySelection(_:)","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveWordLeftAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeftAndModifySelection(_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordLeftAndModifySelection(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveWordLeftAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"type":"topic","url":"\/documentation\/codeedittextview\/textview\/movewordleftandmodifyselection(_:)","role":"symbol","kind":"symbol","title":"moveWordLeftAndModifySelection(_:)","abstract":[{"text":"Moves the cursors left one word extending the current selection.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordLeftAndModifySelection(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movewordright(_:).json b/data/documentation/codeedittextview/textview/movewordright(_:).json
new file mode 100644
index 000000000..720ac4a28
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movewordright(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/movewordright(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"Moves the cursors right one word."}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRight(_:)"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"moveWordRight(_:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveWordRight","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveWordRight:","roleHeading":"Instance Method","extendedModule":"CodeEditTextView","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveWordRight","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordRight(_:)":{"title":"moveWordRight(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRight(_:)","type":"topic","abstract":[{"text":"Moves the cursors right one word.","type":"text"}],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"moveWordRight","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/movewordright(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/movewordrightandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/movewordrightandmodifyselection(_:).json
new file mode 100644
index 000000000..27b7ceda1
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/movewordrightandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"moveWordRightAndModifySelection"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/movewordrightandmodifyselection(_:)"]}],"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","title":"moveWordRightAndModifySelection(_:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"moveWordRightAndModifySelection"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)moveWordRightAndModifySelection:"},"abstract":[{"text":"Moves the cursors right one word extending the current selection.","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRightAndModifySelection(_:)","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/moveWordRightAndModifySelection(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/movewordrightandmodifyselection(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"moveWordRightAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/moveWordRightAndModifySelection(_:)","type":"topic","abstract":[{"type":"text","text":"Moves the cursors right one word extending the current selection."}],"title":"moveWordRightAndModifySelection(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/needspaneltobecomekey.json b/data/documentation/codeedittextview/textview/needspaneltobecomekey.json
new file mode 100644
index 000000000..33529594e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/needspaneltobecomekey.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"needsPanelToBecomeKey","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}]}],"kind":"declarations"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"title":"needsPanelToBecomeKey","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(py)needsPanelToBecomeKey","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"needsPanelToBecomeKey"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"extendedModule":"CodeEditTextView"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/needsPanelToBecomeKey"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/needspaneltobecomekey"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/needsPanelToBecomeKey":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/needsPanelToBecomeKey","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/needspaneltobecomekey","kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"needsPanelToBecomeKey","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"needsPanelToBecomeKey"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/nsdraggingsource-implementations.json b/data/documentation/codeedittextview/textview/nsdraggingsource-implementations.json
new file mode 100644
index 000000000..6269de516
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/nsdraggingsource-implementations.json
@@ -0,0 +1 @@
+{"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:endedAt:operation:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:movedTo:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:sourceOperationMaskFor:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:willBeginAt:)"],"anchor":"Instance-Methods","title":"Instance Methods"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/nsdraggingsource-implementations"]}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"article","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"roleHeading":"API Collection","role":"collectionGroup","title":"NSDraggingSource Implementations","modules":[{"name":"CodeEditTextView"}]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/NSDraggingSource-Implementations","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:sourceOperationMaskFor:)":{"url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:sourceoperationmaskfor:)","abstract":[],"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draggingSession"},{"kind":"text","text":"("},{"text":"NSDraggingSession","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"kind":"text","text":", "},{"kind":"externalParam","text":"sourceOperationMaskFor"},{"kind":"text","text":": "},{"text":"NSDraggingContext","kind":"typeIdentifier","preciseIdentifier":"c:@E@NSDraggingContext"},{"text":") -> ","kind":"text"},{"text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation","kind":"typeIdentifier"}],"kind":"symbol","type":"topic","title":"draggingSession(_:sourceOperationMaskFor:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:sourceOperationMaskFor:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:endedAt:operation:)":{"role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"draggingSession"},{"text":"(","kind":"text"},{"text":"NSDraggingSession","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"text":", ","kind":"text"},{"text":"endedAt","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSPoint","text":"NSPoint","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"operation","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSDragOperation","preciseIdentifier":"c:@E@NSDragOperation"},{"text":")","kind":"text"}],"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:endedAt:operation:)","kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:endedat:operation:)","title":"draggingSession(_:endedAt:operation:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:movedTo:)":{"url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:movedto:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:movedTo:)","abstract":[{"text":"Updates the text view about a dragging session. The text view will update the ","type":"text"},{"code":"TextView\/draggingCursorView","type":"codeVoice"},{"text":" ","type":"text"},{"type":"text","text":"cursor to match the drop destination depending on where the drag is on the text view."}],"type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"draggingSession","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession","text":"NSDraggingSession"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"movedTo"},{"text":": ","kind":"text"},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"text":")","kind":"text"}],"title":"draggingSession(_:movedTo:)","role":"symbol","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/draggingSession(_:willBeginAt:)":{"url":"\/documentation\/codeedittextview\/textview\/draggingsession(_:willbeginat:)","abstract":[],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"draggingSession"},{"kind":"text","text":"("},{"text":"NSDraggingSession","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSDraggingSession"},{"text":", ","kind":"text"},{"text":"willBeginAt","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":")"}],"kind":"symbol","type":"topic","title":"draggingSession(_:willBeginAt:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/draggingSession(_:willBeginAt:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/nstextinputclient-implementations.json b/data/documentation/codeedittextview/textview/nstextinputclient-implementations.json
new file mode 100644
index 000000000..74033dca7
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/nstextinputclient-implementations.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/nstextinputclient-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/NSTextInputClient-Implementations","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"role":"collectionGroup","roleHeading":"API Collection","title":"NSTextInputClient Implementations","modules":[{"name":"CodeEditTextView"}]},"topicSections":[{"title":"Instance Methods","generated":true,"anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedString()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedSubstring(forProposedRange:actualRange:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/baselineDeltaForCharacter(at:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/characterIndex(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/firstRect(forCharacterRange:actualRange:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/fractionOfDistanceThroughGlyph(for:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hasMarkedText()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:replacementRange:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedRange()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectedRange()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setMarkedText(_:selectedRange:replacementRange:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/unmarkText()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/validAttributesForMarkedText()"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"article","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/firstRect(forCharacterRange:actualRange:)":{"abstract":[{"text":"Returns the first logical boundary rectangle for characters in the given range.","type":"text"}],"title":"firstRect(forCharacterRange:actualRange:)","kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textview\/firstrect(forcharacterrange:actualrange:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/firstRect(forCharacterRange:actualRange:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"firstRect","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"forCharacterRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"actualRange"},{"kind":"text","text":": "},{"text":"NSRangePointer","preciseIdentifier":"c:@T@NSRangePointer","kind":"typeIdentifier"},{"kind":"text","text":"?) -> "},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/unmarkText()":{"type":"topic","kind":"symbol","abstract":[{"text":"Unmarks the marked text.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/unmarkText()","url":"\/documentation\/codeedittextview\/textview\/unmarktext()","role":"symbol","title":"unmarkText()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"unmarkText"},{"kind":"text","text":"()"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/attributedSubstring(forProposedRange:actualRange:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedSubstring(forProposedRange:actualRange:)","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/attributedsubstring(forproposedrange:actualrange:)","title":"attributedSubstring(forProposedRange:actualRange:)","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"attributedSubstring"},{"kind":"text","text":"("},{"text":"forProposedRange","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"actualRange"},{"text":": ","kind":"text"},{"text":"NSRangePointer","preciseIdentifier":"c:@T@NSRangePointer","kind":"typeIdentifier"},{"text":"?) -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"text":"?","kind":"text"}],"abstract":[{"type":"text","text":"Returns an attributed string derived from the given range in the receiver’s text storage."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/characterIndex(for:)":{"type":"topic","abstract":[{"type":"text","text":"Returns the index of the character whose bounding rectangle includes the given point."}],"url":"\/documentation\/codeedittextview\/textview\/characterindex(for:)","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/characterIndex(for:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"characterIndex","kind":"identifier"},{"kind":"text","text":"("},{"text":"for","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSPoint","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSPoint"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Si","text":"Int","kind":"typeIdentifier"}],"title":"characterIndex(for:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/attributedString()":{"url":"\/documentation\/codeedittextview\/textview\/attributedstring()","type":"topic","abstract":[{"type":"text","text":"Returns an attributed string representing the receiver’s text storage."}],"title":"attributedString()","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/attributedString()","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"attributedString"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/hasMarkedText()":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/hasMarkedText()","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/hasmarkedtext()","title":"hasMarkedText()","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"hasMarkedText"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"abstract":[{"text":"Returns a Boolean value indicating whether the receiver has marked text.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/baselineDeltaForCharacter(at:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"baselineDeltaForCharacter","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"at"},{"kind":"text","text":": "},{"text":"Int","preciseIdentifier":"s:Si","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"abstract":[{"text":"Returns the baseline position of a given character relative to the origin of rectangle returned by","type":"text"},{"type":"text","text":" "},{"type":"codeVoice","code":"firstRect(forCharacterRange:actualRange:)"},{"type":"text","text":"."}],"url":"\/documentation\/codeedittextview\/textview\/baselinedeltaforcharacter(at:)","title":"baselineDeltaForCharacter(at:)","kind":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/baselineDeltaForCharacter(at:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/markedRange()":{"abstract":[{"text":"Returns the range of the marked text.","type":"text"}],"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/markedRange()","role":"symbol","kind":"symbol","title":"markedRange()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"markedRange"},{"text":"() -> ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/markedrange()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertText(_:replacementRange:)":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:replacementRange:)","url":"\/documentation\/codeedittextview\/textview\/inserttext(_:replacementrange:)","title":"insertText(_:replacementRange:)","type":"topic","abstract":[{"text":"Inserts the given string into the receiver, replacing the specified content.","type":"text"}],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"insertText","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":", "},{"kind":"externalParam","text":"replacementRange"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/fractionOfDistanceThroughGlyph(for:)":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/fractionOfDistanceThroughGlyph(for:)","role":"symbol","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"fractionOfDistanceThroughGlyph","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"for"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSPoint","preciseIdentifier":"c:@T@NSPoint"},{"kind":"text","text":") -> "},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/fractionofdistancethroughglyph(for:)","title":"fractionOfDistanceThroughGlyph(for:)","abstract":[{"type":"text","text":"Returns the fraction of the distance from the left side of the character to the right side that a given point"},{"type":"text","text":" "},{"type":"text","text":"lies."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/validAttributesForMarkedText()":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/validattributesformarkedtext()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"validAttributesForMarkedText","kind":"identifier"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"text":".","kind":"text"},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/validAttributesForMarkedText()","title":"validAttributesForMarkedText()","abstract":[{"type":"text","text":"Returns an array of attribute names recognized by the receiver."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectedRange()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectedRange()","url":"\/documentation\/codeedittextview\/textview\/selectedrange()","title":"selectedRange()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"selectedRange"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"abstract":[{"type":"text","text":"Returns the range of selected text."},{"type":"text","text":" "},{"text":"The returned range measures from the start of the receiver’s text storage, that is, from 0 to the document","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"length."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setMarkedText(_:selectedRange:replacementRange:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/setmarkedtext(_:selectedrange:replacementrange:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setMarkedText"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":", "},{"kind":"externalParam","text":"selectedRange"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"replacementRange"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setMarkedText(_:selectedRange:replacementRange:)","title":"setMarkedText(_:selectedRange:replacementRange:)","abstract":[{"text":"Sets up marked text for a marking session. See ","type":"text"},{"code":"MarkedTextManager","type":"codeVoice"},{"type":"text","text":" for more details."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/overscrollamount.json b/data/documentation/codeedittextview/textview/overscrollamount.json
new file mode 100644
index 000000000..dfb3561a6
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/overscrollamount.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/overscrollamount"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","symbolKind":"property","externalID":"s:16CodeEditTextView0cD0C16overscrollAmount14CoreFoundation7CGFloatVvp","title":"overscrollAmount","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"overscrollAmount","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat","kind":"typeIdentifier"}]},"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"overscrollAmount"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" "},{"text":"set","kind":"keyword"},{"kind":"text","text":" }"}],"platforms":["macOS"]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"The amount of extra space to add when overscroll is enabled, as a percentage of the viewport height"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/overscrollAmount","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/overscrollAmount":{"kind":"symbol","title":"overscrollAmount","url":"\/documentation\/codeedittextview\/textview\/overscrollamount","abstract":[{"type":"text","text":"The amount of extra space to add when overscroll is enabled, as a percentage of the viewport height"}],"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/overscrollAmount","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"overscrollAmount","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/pagedown(_:).json b/data/documentation/codeedittextview/textview/pagedown(_:).json
new file mode 100644
index 000000000..9cde5933b
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/pagedown(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"pageDown"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDown(_:)"},"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"pageDown"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)pageDown:","extendedModule":"CodeEditTextView","title":"pageDown(_:)","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/pagedown(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageDown(_:)":{"url":"\/documentation\/codeedittextview\/textview\/pagedown(_:)","role":"symbol","title":"pageDown(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDown(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"pageDown","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/pagedownandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/pagedownandmodifyselection(_:).json
new file mode 100644
index 000000000..28b0c9615
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/pagedownandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDownAndModifySelection(_:)"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"pageDownAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)pageDownAndModifySelection:","extendedModule":"CodeEditTextView","role":"symbol","title":"pageDownAndModifySelection(_:)","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"pageDownAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}]}],"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/pagedownandmodifyselection(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageDownAndModifySelection(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageDownAndModifySelection(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/pagedownandmodifyselection(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"pageDownAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"title":"pageDownAndModifySelection(_:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/pageup(_:).json b/data/documentation/codeedittextview/textview/pageup(_:).json
new file mode 100644
index 000000000..8f75606b6
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/pageup(_:).json
@@ -0,0 +1 @@
+{"metadata":{"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)pageUp:","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"pageUp","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"role":"symbol","roleHeading":"Instance Method","title":"pageUp(_:)"},"sections":[],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"pageUp"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/pageup(_:)"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUp(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageUp(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"pageUp","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"title":"pageUp(_:)","url":"\/documentation\/codeedittextview\/textview\/pageup(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUp(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/pageupandmodifyselection(_:).json b/data/documentation/codeedittextview/textview/pageupandmodifyselection(_:).json
new file mode 100644
index 000000000..280a4d857
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/pageupandmodifyselection(_:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"pageUpAndModifySelection"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)pageUpAndModifySelection:","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"title":"pageUpAndModifySelection(_:)"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUpAndModifySelection(_:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/pageupandmodifyselection(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"pageUpAndModifySelection"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/pageUpAndModifySelection(_:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/pageUpAndModifySelection(_:)","title":"pageUpAndModifySelection(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"pageUpAndModifySelection","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/pageupandmodifyselection(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/paste(_:).json b/data/documentation/codeedittextview/textview/paste(_:).json
new file mode 100644
index 000000000..cac8fdb9a
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/paste(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/paste(_:)","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@objc"},{"text":" ","kind":"text"},{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"paste"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/paste(_:)"]}],"metadata":{"title":"paste(_:)","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","roleHeading":"Instance Method","symbolKind":"method","role":"symbol","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)paste:","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"paste"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta"},{"text":")","kind":"text"}]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/paste(_:)":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/paste(_:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/paste(_:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"paste"},{"kind":"text","text":"("},{"text":"AnyObject","preciseIdentifier":"s:s9AnyObjecta","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"paste(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/performdragoperation(_:).json b/data/documentation/codeedittextview/textview/performdragoperation(_:).json
new file mode 100644
index 000000000..ec5a504e8
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/performdragoperation(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performDragOperation(_:)","interfaceLanguage":"swift"},"sections":[],"metadata":{"extendedModule":"CodeEditTextView","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"performDragOperation","kind":"identifier"},{"text":"(","kind":"text"},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"text":"NSDraggingInfo","kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSDraggingInfo"},{"kind":"text","text":") -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","role":"symbol","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)performDragOperation:","title":"performDragOperation(_:)"},"abstract":[{"type":"text","text":"Performs the final drop operation."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"performDragOperation"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"any","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSDraggingInfo","text":"NSDraggingInfo"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}]},{"kind":"parameters","parameters":[{"name":"sender","content":[{"type":"paragraph","inlineContent":[{"text":"The dragging info to use.","type":"text"}]}]}]},{"kind":"content","content":[{"text":"Return Value","level":2,"anchor":"return-value","type":"heading"},{"inlineContent":[{"type":"text","text":""},{"code":"true","type":"codeVoice"},{"text":", if the drag was accepted.","type":"text"}],"type":"paragraph"}]},{"kind":"content","content":[{"type":"heading","level":2,"anchor":"discussion","text":"Discussion"},{"type":"paragraph","inlineContent":[{"text":"This method accepts a number of items from the dragging info’s pasteboard, and cuts them into the","type":"text"},{"text":" ","type":"text"},{"text":"destination determined by the ","type":"text"},{"type":"codeVoice","code":"TextView\/draggingCursorView"},{"type":"text","text":"."}]},{"type":"paragraph","inlineContent":[{"text":"If the app’s current event has the ","type":"text"},{"type":"codeVoice","code":"option"},{"text":" key pressed, this will only paste the text from the pasteboard,","type":"text"},{"type":"text","text":" "},{"text":"and not remove the original dragged text.","type":"text"}]}]}],"schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/performdragoperation(_:)"]}],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/performDragOperation(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"performDragOperation","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"any"},{"text":" ","kind":"text"},{"text":"NSDraggingInfo","preciseIdentifier":"c:objc(pl)NSDraggingInfo","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"performDragOperation(_:)","url":"\/documentation\/codeedittextview\/textview\/performdragoperation(_:)","kind":"symbol","abstract":[{"type":"text","text":"Performs the final drop operation."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performDragOperation(_:)","type":"topic","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/performkeyequivalent(with:).json b/data/documentation/codeedittextview/textview/performkeyequivalent(with:).json
new file mode 100644
index 000000000..827050238
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/performkeyequivalent(with:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/performkeyequivalent(with:)"]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performKeyEquivalent(with:)"},"metadata":{"title":"performKeyEquivalent(with:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"performKeyEquivalent","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSEvent","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)performKeyEquivalent:","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"role":"symbol"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"performKeyEquivalent"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"event","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSEvent","preciseIdentifier":"c:objc(cs)NSEvent"},{"kind":"text","text":") -> "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/performKeyEquivalent(with:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"performKeyEquivalent","kind":"identifier"},{"text":"(","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSEvent","text":"NSEvent"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/performkeyequivalent(with:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/performKeyEquivalent(with:)","type":"topic","abstract":[],"title":"performKeyEquivalent(with:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/preparecontent(in:).json b/data/documentation/codeedittextview/textview/preparecontent(in:).json
new file mode 100644
index 000000000..9ede618f4
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/preparecontent(in:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)prepareContentInRect:","title":"prepareContent(in:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareContent"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/preparecontent(in:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareContent"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"text":" ","kind":"text"},{"text":"rect","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"},{"kind":"text","text":")"}]}]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/prepareContent(in:)","interfaceLanguage":"swift"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/prepareContent(in:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/prepareContent(in:)","title":"prepareContent(in:)","url":"\/documentation\/codeedittextview\/textview\/preparecontent(in:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"prepareContent"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRect","kind":"typeIdentifier","text":"NSRect"},{"kind":"text","text":")"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/removestoragedelegate(_:).json b/data/documentation/codeedittextview/textview/removestoragedelegate(_:).json
new file mode 100644
index 000000000..83ca4f2ae
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/removestoragedelegate(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/removestoragedelegate(_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"removeStorageDelegate","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"delegate"},{"kind":"text","text":": "},{"text":"NSTextStorageDelegate","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/removeStorageDelegate(_:)","interfaceLanguage":"swift"},"metadata":{"role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"removeStorageDelegate"},{"text":"(","kind":"text"},{"text":"NSTextStorageDelegate","kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate"},{"kind":"text","text":")"}],"extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0cD0C21removeStorageDelegateyySo06NSTextfG0_pF","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","title":"removeStorageDelegate(_:)"},"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/removeStorageDelegate(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/removeStorageDelegate(_:)","kind":"symbol","title":"removeStorageDelegate(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"removeStorageDelegate"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(pl)NSTextStorageDelegate","text":"NSTextStorageDelegate"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/removestoragedelegate(_:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-2kupp.json b/data/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-2kupp.json
new file mode 100644
index 000000000..bba3fa6fa
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-2kupp.json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"replaceCharacters"},{"text":"(","kind":"text"},{"text":"in","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"range"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"string"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"skipUpdateSelection"},{"kind":"text","text":": "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":" = false)","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"},{"parameters":[{"name":"range","content":[{"inlineContent":[{"type":"text","text":"The range to replace."}],"type":"paragraph"}]},{"name":"string","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The string to insert in the range."}]}]},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Skips the selection update step"}]}],"name":"skipUpdateSelection"}],"kind":"parameters"}],"abstract":[{"text":"Replace the characters in a range with a new string.","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-2kupp"]}],"metadata":{"title":"replaceCharacters(in:with:skipUpdateSelection:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"replaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":", ","kind":"text"},{"text":"skipUpdateSelection","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C17replaceCharacters2in4with19skipUpdateSelectionySo8_NSRangeV_SSSbtF","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-2kupp"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/replaceCharacters(in:with:skipUpdateSelection:)-2kupp":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"replaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"skipUpdateSelection","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":")","kind":"text"}],"title":"replaceCharacters(in:with:skipUpdateSelection:)","url":"\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-2kupp","kind":"symbol","abstract":[{"text":"Replace the characters in a range with a new string.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-2kupp","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-476w4.json b/data/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-476w4.json
new file mode 100644
index 000000000..8f7d8ff51
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-476w4.json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"replaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": [","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":"], ","kind":"text"},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":", "},{"text":"skipUpdateSelection","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C17replaceCharacters2in4with19skipUpdateSelectionySaySo8_NSRangeVG_SSSbtF","extendedModule":"CodeEditTextView","role":"symbol","title":"replaceCharacters(in:with:skipUpdateSelection:)","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-476w4"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-476w4"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","abstract":[{"type":"text","text":"Replace the characters in the given ranges with the given string."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"replaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"in"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"ranges"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":"], "},{"kind":"externalParam","text":"with"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"string"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"skipUpdateSelection","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":" = false)","kind":"text"}],"platforms":["macOS"]}]},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The ranges to replace","type":"text"}]}],"name":"ranges"},{"name":"string","content":[{"inlineContent":[{"text":"The string to insert in the ranges.","type":"text"}],"type":"paragraph"}]},{"name":"skipUpdateSelection","content":[{"type":"paragraph","inlineContent":[{"text":"Skips the selection update step","type":"text"}]}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/replaceCharacters(in:with:skipUpdateSelection:)-476w4":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-476w4","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/replaceCharacters(in:with:skipUpdateSelection:)-476w4","title":"replaceCharacters(in:with:skipUpdateSelection:)","type":"topic","abstract":[{"type":"text","text":"Replace the characters in the given ranges with the given string."}],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"replaceCharacters","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":"], "},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":", ","kind":"text"},{"text":"skipUpdateSelection","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":")"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/resetcursorrects().json b/data/documentation/codeedittextview/textview/resetcursorrects().json
new file mode 100644
index 000000000..e7c5f7e0e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/resetcursorrects().json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/resetcursorrects()"]}],"kind":"symbol","metadata":{"title":"resetCursorRects()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"resetCursorRects","kind":"identifier"},{"kind":"text","text":"()"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)resetCursorRects","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resetCursorRects()"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"resetCursorRects"},{"text":"()","kind":"text"}],"languages":["swift"]}]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/resetCursorRects()":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"resetCursorRects","kind":"identifier"},{"text":"()","kind":"text"}],"title":"resetCursorRects()","url":"\/documentation\/codeedittextview\/textview\/resetcursorrects()","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resetCursorRects()","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/resignfirstresponder().json b/data/documentation/codeedittextview/textview/resignfirstresponder().json
new file mode 100644
index 000000000..c0494e376
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/resignfirstresponder().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"resignFirstResponder"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)resignFirstResponder","extendedModule":"CodeEditTextView","role":"symbol","title":"resignFirstResponder()","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"resignFirstResponder"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resignFirstResponder()"},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textview\/resignfirstresponder()"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/resignFirstResponder()":{"abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/resignFirstResponder()","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/resignfirstresponder()","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"resignFirstResponder"},{"text":"() -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"resignFirstResponder()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/scrollselectiontovisible().json b/data/documentation/codeedittextview/textview/scrollselectiontovisible().json
new file mode 100644
index 000000000..3a0eccf65
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/scrollselectiontovisible().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"scrollSelectionToVisible","kind":"identifier"},{"kind":"text","text":"()"}],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollSelectionToVisible()","interfaceLanguage":"swift"},"abstract":[{"text":"Scrolls the upmost selection to the visible rect if ","type":"text"},{"type":"codeVoice","code":"scrollView"},{"text":" is not ","type":"text"},{"code":"nil","type":"codeVoice"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/scrollselectiontovisible()"]}],"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"scrollSelectionToVisible"},{"text":"()","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C24scrollSelectionToVisibleyyF","roleHeading":"Instance Method","symbolKind":"method","extendedModule":"CodeEditTextView","role":"symbol","title":"scrollSelectionToVisible()"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/scrollSelectionToVisible()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollSelectionToVisible()","title":"scrollSelectionToVisible()","url":"\/documentation\/codeedittextview\/textview\/scrollselectiontovisible()","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"scrollSelectionToVisible"},{"text":"()","kind":"text"}],"abstract":[{"type":"text","text":"Scrolls the upmost selection to the visible rect if "},{"code":"scrollView","type":"codeVoice"},{"type":"text","text":" is not "},{"type":"codeVoice","code":"nil"},{"type":"text","text":"."}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/scrolltorange(_:center:).json b/data/documentation/codeedittextview/textview/scrolltorange(_:center:).json
new file mode 100644
index 000000000..aeb0d3de9
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/scrolltorange(_:center:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","metadata":{"roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C13scrollToRange_6centerySo8_NSRangeV_SbtF","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"scrollToRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":", "},{"text":"center","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":")"}],"symbolKind":"method","title":"scrollToRange(_:center:)","extendedModule":"CodeEditTextView","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollToRange(_:center:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/scrolltorange(_:center:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"scrollToRange"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"text":", ","kind":"text"},{"text":"center","kind":"externalParam"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":" = true)","kind":"text"}],"platforms":["macOS"]}]},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The range to scroll to.","type":"text"}]}],"name":"range"},{"name":"center","content":[{"inlineContent":[{"text":"A flag that determines if the range should be centered in the view. Defaults to ","type":"text"},{"type":"codeVoice","code":"true"},{"type":"text","text":"."}],"type":"paragraph"}]}]},{"kind":"content","content":[{"level":2,"type":"heading","anchor":"discussion","text":"Discussion"},{"type":"paragraph","inlineContent":[{"text":"If ","type":"text"},{"type":"codeVoice","code":"center"},{"type":"text","text":" is "},{"code":"true","type":"codeVoice"},{"type":"text","text":", the range will be centered in the visible area."},{"type":"text","text":" "},{"text":"If ","type":"text"},{"type":"codeVoice","code":"center"},{"text":" is ","type":"text"},{"type":"codeVoice","code":"false"},{"type":"text","text":", the range will be aligned at the top-left of the view."}]}]}],"sections":[],"abstract":[{"type":"text","text":"Scrolls the view to the specified range."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/scrollToRange(_:center:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/scrollToRange(_:center:)","title":"scrollToRange(_:center:)","type":"topic","abstract":[{"type":"text","text":"Scrolls the view to the specified range."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"scrollToRange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"text":"center","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"kind":"text","text":")"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/scrolltorange(_:center:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/selectall(_:).json b/data/documentation/codeedittextview/textview/selectall(_:).json
new file mode 100644
index 000000000..43143600e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/selectall(_:).json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"selectAll"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)selectAll:","title":"selectAll(_:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectAll(_:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"selectAll","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"sender"},{"text":": ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"languages":["swift"]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/selectall(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectAll(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectAll","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"url":"\/documentation\/codeedittextview\/textview\/selectall(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectAll(_:)","type":"topic","abstract":[],"title":"selectAll(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/selectcolumns(betweenpointa:pointb:).json b/data/documentation/codeedittextview/textview/selectcolumns(betweenpointa:pointb:).json
new file mode 100644
index 000000000..f980ba2c5
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/selectcolumns(betweenpointa:pointb:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/selectcolumns(betweenpointa:pointb:)"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectColumns","kind":"identifier"},{"text":"(","kind":"text"},{"text":"betweenPointA","kind":"externalParam"},{"kind":"text","text":" "},{"text":"pointA","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@S@CGPoint","text":"CGPoint","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"pointB","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@S@CGPoint","text":"CGPoint","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"content":[{"inlineContent":[{"text":"The first point.","type":"text"}],"type":"paragraph"}],"name":"pointA"},{"content":[{"inlineContent":[{"text":"The second point.","type":"text"}],"type":"paragraph"}],"name":"pointB"}],"kind":"parameters"},{"content":[{"anchor":"discussion","type":"heading","level":2,"text":"Discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"This method will automatically determine a valid region from the provided two points."}]}],"kind":"content"}],"abstract":[{"text":"Set the user’s selection to a square region in the editor.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectColumns(betweenPointA:pointB:)","interfaceLanguage":"swift"},"metadata":{"externalID":"s:16CodeEditTextView0cD0C13selectColumns13betweenPointA6pointBySo7CGPointV_AHtF","role":"symbol","extendedModule":"CodeEditTextView","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"selectColumns"},{"text":"(","kind":"text"},{"text":"betweenPointA","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"CGPoint","preciseIdentifier":"c:@S@CGPoint"},{"text":", ","kind":"text"},{"text":"pointB","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGPoint","preciseIdentifier":"c:@S@CGPoint"},{"kind":"text","text":")"}],"title":"selectColumns(betweenPointA:pointB:)","modules":[{"name":"CodeEditTextView"}]},"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectColumns(betweenPointA:pointB:)":{"abstract":[{"type":"text","text":"Set the user’s selection to a square region in the editor."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectColumns(betweenPointA:pointB:)","type":"topic","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/selectcolumns(betweenpointa:pointb:)","kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"selectColumns","kind":"identifier"},{"kind":"text","text":"("},{"text":"betweenPointA","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@S@CGPoint","kind":"typeIdentifier","text":"CGPoint"},{"kind":"text","text":", "},{"text":"pointB","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@S@CGPoint","kind":"typeIdentifier","text":"CGPoint"},{"text":")","kind":"text"}],"title":"selectColumns(betweenPointA:pointB:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/selectedrange().json b/data/documentation/codeedittextview/textview/selectedrange().json
new file mode 100644
index 000000000..a71407c3e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/selectedrange().json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"selectedRange","kind":"identifier"},{"kind":"text","text":"() -> "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}]},{"content":[{"type":"heading","anchor":"return-value","text":"Return Value","level":2},{"inlineContent":[{"text":"The range of selected text or {NSNotFound, 0} if there is no selection.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/selectedrange()"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectedRange()"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"selectedRange()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"selectedRange"},{"kind":"text","text":"() -> "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"}],"extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)selectedRange","roleHeading":"Instance Method","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"kind":"symbol","abstract":[{"text":"Returns the range of selected text.","type":"text"},{"type":"text","text":" "},{"text":"The returned range measures from the start of the receiver’s text storage, that is, from 0 to the document","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"length."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectedRange()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectedRange()","url":"\/documentation\/codeedittextview\/textview\/selectedrange()","title":"selectedRange()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"selectedRange"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"}],"abstract":[{"type":"text","text":"Returns the range of selected text."},{"type":"text","text":" "},{"text":"The returned range measures from the start of the receiver’s text storage, that is, from 0 to the document","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"length."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/selectionmanager.json b/data/documentation/codeedittextview/textview/selectionmanager.json
new file mode 100644
index 000000000..eda77459f
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/selectionmanager.json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"The selection manager for the text view."}],"metadata":{"symbolKind":"property","externalID":"s:16CodeEditTextView0cD0C16selectionManagerAA0c9SelectionF0CSgvp","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"selectionManager"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextSelectionManager","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager"},{"text":"!","kind":"text"}],"role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","title":"selectionManager"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectionManager"},"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectionManager","kind":"identifier"},{"text":": ","kind":"text"},{"text":"TextSelectionManager","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager"},{"kind":"text","text":"! { get }"}],"languages":["swift"]}],"kind":"declarations"}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/selectionmanager"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectionManager":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"selectionManager","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextSelectionManager","text":"TextSelectionManager","kind":"typeIdentifier"},{"text":"!","kind":"text"}],"title":"selectionManager","url":"\/documentation\/codeedittextview\/textview\/selectionmanager","kind":"symbol","abstract":[{"text":"The selection manager for the text view.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectionManager","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextSelectionManager":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextSelectionManager"}],"url":"\/documentation\/codeedittextview\/textselectionmanager","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextSelectionManager","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"TextSelectionManager","kind":"identifier"}],"abstract":[{"type":"text","text":"Manages an array of text selections representing cursors (0-length ranges) and selections (>0-length ranges)."}],"title":"TextSelectionManager"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/selectline(_:).json b/data/documentation/codeedittextview/textview/selectline(_:).json
new file mode 100644
index 000000000..479f5d4ea
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/selectline(_:).json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectLine(_:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)selectLine:","extendedModule":"CodeEditTextView","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"selectLine","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"roleHeading":"Instance Method","title":"selectLine(_:)"},"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectLine","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/selectline(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectLine(_:)":{"title":"selectLine(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectLine(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"selectLine","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/selectline(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/selectword(_:).json b/data/documentation/codeedittextview/textview/selectword(_:).json
new file mode 100644
index 000000000..808d15a2d
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/selectword(_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectWord(_:)"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"selectWord","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"sender"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/selectword(_:)"]}],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"selectWord","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?)"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)selectWord:","title":"selectWord(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/selectWord(_:)":{"title":"selectWord(_:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/selectWord(_:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"selectWord","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/selectword(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/setaccessibilityfocused(_:).json b/data/documentation/codeedittextview/textview/setaccessibilityfocused(_:).json
new file mode 100644
index 000000000..7bfcc522e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/setaccessibilityfocused(_:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","metadata":{"symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)setAccessibilityFocused:","modules":[{"name":"CodeEditTextView"}],"title":"setAccessibilityFocused(_:)","roleHeading":"Instance Method","extendedModule":"CodeEditTextView","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setAccessibilityFocused"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"},{"text":")","kind":"text"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setAccessibilityFocused","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"text":"accessibilityFocused","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityFocused(_:)","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/setaccessibilityfocused(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilityFocused(_:)":{"url":"\/documentation\/codeedittextview\/textview\/setaccessibilityfocused(_:)","role":"symbol","title":"setAccessibilityFocused(_:)","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityFocused(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setAccessibilityFocused","kind":"identifier"},{"text":"(","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"},{"kind":"text","text":")"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/setaccessibilityselectedtextrange(_:).json b/data/documentation/codeedittextview/textview/setaccessibilityselectedtextrange(_:).json
new file mode 100644
index 000000000..3d7e1d54f
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/setaccessibilityselectedtextrange(_:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setAccessibilitySelectedTextRange","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"accessibilitySelectedTextRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":")","kind":"text"}],"languages":["swift"]}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRange(_:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)setAccessibilitySelectedTextRange:","modules":[{"name":"CodeEditTextView"}],"title":"setAccessibilitySelectedTextRange(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setAccessibilitySelectedTextRange"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":")"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextrange(_:)"]}],"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilitySelectedTextRange(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setAccessibilitySelectedTextRange","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":")"}],"title":"setAccessibilitySelectedTextRange(_:)","url":"\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextrange(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRange(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/setaccessibilityselectedtextranges(_:).json b/data/documentation/codeedittextview/textview/setaccessibilityselectedtextranges(_:).json
new file mode 100644
index 000000000..f57f1720f
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/setaccessibilityselectedtextranges(_:).json
@@ -0,0 +1 @@
+{"metadata":{"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)setAccessibilitySelectedTextRanges:","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setAccessibilitySelectedTextRanges","kind":"identifier"},{"kind":"text","text":"(["},{"kind":"typeIdentifier","text":"NSValue","preciseIdentifier":"c:objc(cs)NSValue"},{"text":"]?)","kind":"text"}],"roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","symbolKind":"method","title":"setAccessibilitySelectedTextRanges(_:)"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setAccessibilitySelectedTextRanges"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"accessibilitySelectedTextRanges","kind":"internalParam"},{"kind":"text","text":": ["},{"text":"NSValue","preciseIdentifier":"c:objc(cs)NSValue","kind":"typeIdentifier"},{"kind":"text","text":"]?)"}]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRanges(_:)"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextranges(_:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilitySelectedTextRanges(_:)":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setAccessibilitySelectedTextRanges"},{"text":"([","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSValue","kind":"typeIdentifier","text":"NSValue"},{"kind":"text","text":"]?)"}],"title":"setAccessibilitySelectedTextRanges(_:)","url":"\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextranges(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilitySelectedTextRanges(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/setaccessibilityvalue(_:).json b/data/documentation/codeedittextview/textview/setaccessibilityvalue(_:).json
new file mode 100644
index 000000000..f4cff5592
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/setaccessibilityvalue(_:).json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/setaccessibilityvalue(_:)"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityValue(_:)","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"setAccessibilityValue(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setAccessibilityValue","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)setAccessibilityValue:","roleHeading":"Instance Method","extendedModule":"CodeEditTextView","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setAccessibilityValue","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"accessibilityValue"},{"text":": ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}]}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setAccessibilityValue(_:)":{"url":"\/documentation\/codeedittextview\/textview\/setaccessibilityvalue(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setAccessibilityValue(_:)","title":"setAccessibilityValue(_:)","type":"topic","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setAccessibilityValue","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/setmarkedtext(_:selectedrange:replacementrange:).json b/data/documentation/codeedittextview/textview/setmarkedtext(_:selectedrange:replacementrange:).json
new file mode 100644
index 000000000..69e03c929
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/setmarkedtext(_:selectedrange:replacementrange:).json
@@ -0,0 +1 @@
+{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"setMarkedText","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"string","kind":"internalParam"},{"kind":"text","text":": "},{"text":"Any","kind":"keyword"},{"kind":"text","text":", "},{"kind":"externalParam","text":"selectedRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"replacementRange"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"name":"string","content":[{"type":"paragraph","inlineContent":[{"text":"The string to insert. Can be either an NSString or NSAttributedString instance.","type":"text"}]}]},{"name":"selectedRange","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The range to set as the selection, computed from the beginning of the inserted string."}]}]},{"content":[{"inlineContent":[{"type":"text","text":"The range to replace, computed from the beginning of the marked text."}],"type":"paragraph"}],"name":"replacementRange"}],"kind":"parameters"},{"content":[{"level":2,"text":"Discussion","type":"heading","anchor":"discussion"},{"type":"paragraph","inlineContent":[{"text":"Decides whether or not to insert\/replace text. Then updates the current marked ranges and updates cursor","type":"text"},{"text":" ","type":"text"},{"text":"positions.","type":"text"}]}],"kind":"content"}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setMarkedText(_:selectedRange:replacementRange:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"role":"symbol","title":"setMarkedText(_:selectedRange:replacementRange:)","extendedModule":"CodeEditTextView","symbolKind":"method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)setMarkedText:selectedRange:replacementRange:","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"setMarkedText","kind":"identifier"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"selectedRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier","text":"NSRange"},{"kind":"text","text":", "},{"text":"replacementRange","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/setmarkedtext(_:selectedrange:replacementrange:)"]}],"abstract":[{"text":"Sets up marked text for a marking session. See ","type":"text"},{"type":"codeVoice","code":"MarkedTextManager"},{"text":" for more details.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setMarkedText(_:selectedRange:replacementRange:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/setmarkedtext(_:selectedrange:replacementrange:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setMarkedText"},{"text":"(","kind":"text"},{"kind":"keyword","text":"Any"},{"kind":"text","text":", "},{"kind":"externalParam","text":"selectedRange"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"replacementRange"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setMarkedText(_:selectedRange:replacementRange:)","title":"setMarkedText(_:selectedRange:replacementRange:)","abstract":[{"text":"Sets up marked text for a marking session. See ","type":"text"},{"code":"MarkedTextManager","type":"codeVoice"},{"type":"text","text":" for more details."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/setneedsdisplay().json b/data/documentation/codeedittextview/textview/setneedsdisplay().json
new file mode 100644
index 000000000..aa982c881
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/setneedsdisplay().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"setNeedsDisplay","kind":"identifier"},{"text":"()","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"abstract":[{"text":"Inherited from ","type":"text"},{"code":"TextSelectionManagerDelegate.setNeedsDisplay()","type":"codeVoice"},{"text":".","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/setneedsdisplay()"]}],"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setNeedsDisplay"},{"text":"()","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C15setNeedsDisplayyyF","extendedModule":"CodeEditTextView","role":"symbol","title":"setNeedsDisplay()","modules":[{"name":"CodeEditTextView"}]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setNeedsDisplay()","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setNeedsDisplay()":{"abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textview\/setneedsdisplay()","title":"setNeedsDisplay()","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setNeedsDisplay()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setNeedsDisplay"},{"kind":"text","text":"()"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/settext(_:).json b/data/documentation/codeedittextview/textview/settext(_:).json
new file mode 100644
index 000000000..61f1a933c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/settext(_:).json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Sets the text view’s text to a new value."}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setText","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"text","kind":"internalParam"},{"kind":"text","text":": "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"The new contents of the text view.","type":"text"}]}],"name":"text"}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/settext(_:)"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"role":"symbol","title":"setText(_:)","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setText"},{"text":"(","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"symbolKind":"method","extendedModule":"CodeEditTextView","externalID":"s:16CodeEditTextView0cD0C03setC0yySSF"},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setText(_:)"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setText(_:)":{"kind":"symbol","abstract":[{"type":"text","text":"Sets the text view’s text to a new value."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setText(_:)","role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setText"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/settext(_:)","title":"setText(_:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/settextstorage(_:).json b/data/documentation/codeedittextview/textview/settextstorage(_:).json
new file mode 100644
index 000000000..11a19c3ea
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/settextstorage(_:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/settextstorage(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setTextStorage(_:)"},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setTextStorage"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"textStorage"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"text":")","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]},{"parameters":[{"name":"textStorage","content":[{"inlineContent":[{"text":"The new text storage to use.","type":"text"}],"type":"paragraph"}]}],"kind":"parameters"}],"metadata":{"title":"setTextStorage(_:)","externalID":"s:16CodeEditTextView0cD0C03setC7StorageyySo06NSTextF0CF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","symbolKind":"method","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setTextStorage"},{"text":"(","kind":"text"},{"text":"NSTextStorage","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage"},{"kind":"text","text":")"}],"extendedModule":"CodeEditTextView"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"abstract":[{"text":"Set a new text storage object for the view.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setTextStorage(_:)":{"role":"symbol","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setTextStorage(_:)","kind":"symbol","title":"setTextStorage(_:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setTextStorage"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage","kind":"typeIdentifier"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/settextstorage(_:)","abstract":[{"type":"text","text":"Set a new text storage object for the view."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/setundomanager(_:).json b/data/documentation/codeedittextview/textview/setundomanager(_:).json
new file mode 100644
index 000000000..807cb4c5c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/setundomanager(_:).json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"extendedModule":"CodeEditTextView","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"setUndoManager"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)CEUndoManager","text":"CEUndoManager","kind":"typeIdentifier"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C14setUndoManageryyAA06CEUndoG0CF","roleHeading":"Instance Method","title":"setUndoManager(_:)"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setUndoManager(_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/setundomanager(_:)"]}],"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"setUndoManager","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"newManager","kind":"internalParam"},{"kind":"text","text":": "},{"text":"CEUndoManager","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)CEUndoManager"},{"text":")","kind":"text"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setUndoManager(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setUndoManager"},{"text":"(","kind":"text"},{"text":"CEUndoManager","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)CEUndoManager"},{"kind":"text","text":")"}],"title":"setUndoManager(_:)","url":"\/documentation\/codeedittextview\/textview\/setundomanager(_:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setUndoManager(_:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CEUndoManager":{"kind":"symbol","url":"\/documentation\/codeedittextview\/ceundomanager","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"CEUndoManager","kind":"identifier"}],"navigatorTitle":[{"text":"CEUndoManager","kind":"identifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CEUndoManager","type":"topic","abstract":[{"text":"Maintains a history of edits applied to the editor and allows for undo\/redo actions using those edits.","type":"text"}],"title":"CEUndoManager","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/string.json b/data/documentation/codeedittextview/textview/string.json
new file mode 100644
index 000000000..6830da525
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/string.json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"string","kind":"identifier"},{"kind":"text","text":": "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C6stringSSvp","title":"string","roleHeading":"Instance Property","symbolKind":"property","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"string"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/string"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/string","interfaceLanguage":"swift"},"sections":[],"abstract":[{"type":"text","text":"The string for the text view."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/string":{"title":"string","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/string","type":"topic","abstract":[{"type":"text","text":"The string for the text view."}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"string","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/string"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textcolor.json b/data/documentation/codeedittextview/textview/textcolor.json
new file mode 100644
index 000000000..bd25d1e26
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textcolor.json
@@ -0,0 +1 @@
+{"abstract":[{"text":"The text color of the text view.","type":"text"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"textColor"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSColor","kind":"typeIdentifier","text":"NSColor"},{"kind":"text","text":" { "},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]},{"kind":"content","content":[{"text":"Discussion","anchor":"discussion","level":2,"type":"heading"},{"name":"Note","style":"note","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Setting the text color for the text view will update the text color as the user types. To change the"},{"type":"text","text":" "},{"type":"text","text":"text color for the entire view, update the "},{"code":"foregroundColor","type":"codeVoice"},{"type":"text","text":" attribute in "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","type":"reference"},{"type":"text","text":"."}]}],"type":"aside"}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/textcolor"]}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"externalID":"s:16CodeEditTextView0cD0C9textColorSo7NSColorCvp","title":"textColor","symbolKind":"property","role":"symbol","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textColor"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSColor","preciseIdentifier":"c:objc(cs)NSColor"}]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textColor","interfaceLanguage":"swift"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textStorage":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textstorage","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":"!","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","type":"topic","abstract":[{"type":"text","text":"The text storage object for the text view."}],"title":"textStorage","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textColor":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textColor","title":"textColor","type":"topic","url":"\/documentation\/codeedittextview\/textview\/textcolor","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"textColor"},{"text":": ","kind":"text"},{"text":"NSColor","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSColor"}],"abstract":[{"type":"text","text":"The text color of the text view."}],"role":"symbol","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textdidchangenotification.json b/data/documentation/codeedittextview/textview/textdidchangenotification.json
new file mode 100644
index 000000000..36b56ef8c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textdidchangenotification.json
@@ -0,0 +1 @@
+{"sections":[],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/textdidchangenotification"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"textDidChangeNotification","roleHeading":"Type Property","externalID":"s:16CodeEditTextView0cD0C25textDidChangeNotificationSo18NSNotificationNameavpZ","symbolKind":"property","fragments":[{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"textDidChangeNotification","kind":"identifier"},{"kind":"text","text":": "},{"text":"Notification","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV4Namea","text":"Name"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textDidChangeNotification"},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","text":"MainActor","preciseIdentifier":"s:ScM"},{"text":" ","kind":"text"},{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textDidChangeNotification","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Notification","preciseIdentifier":"s:10Foundation12NotificationV"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV4Namea","text":"Name"}]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textDidChangeNotification":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textdidchangenotification","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textDidChangeNotification","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV","text":"Notification"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV4Namea","text":"Name"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textDidChangeNotification","type":"topic","abstract":[],"title":"textDidChangeNotification","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textinsets.json b/data/documentation/codeedittextview/textview/textinsets.json
new file mode 100644
index 000000000..0ebe7c456
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textinsets.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"textInsets","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","text":"HorizontalEdgeInsets","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"]}]}],"abstract":[{"type":"text","text":"Insets just drawn text from the horizontal edges. This is in addition to the insets in "},{"type":"reference","isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets"},{"text":", but does","type":"text"},{"text":" ","type":"text"},{"text":"not apply to other drawn content.","type":"text"}],"metadata":{"externalID":"s:16CodeEditTextView0cD0C10textInsetsAA014HorizontalEdgeF0Vvp","title":"textInsets","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"textInsets","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","kind":"typeIdentifier","text":"HorizontalEdgeInsets"}],"roleHeading":"Instance Property","symbolKind":"property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/textinsets"]}],"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textInsets"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textInsets":{"abstract":[{"type":"text","text":"Insets just drawn text from the horizontal edges. This is in addition to the insets in "},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets"},{"type":"text","text":", but does"},{"text":" ","type":"text"},{"text":"not apply to other drawn content.","type":"text"}],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textInsets","type":"topic","url":"\/documentation\/codeedittextview\/textview\/textinsets","title":"textInsets","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textInsets"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV","text":"HorizontalEdgeInsets","kind":"typeIdentifier"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/edgeInsets":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/edgeinsets","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/edgeInsets","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"edgeInsets"},{"text":": ","kind":"text"},{"text":"HorizontalEdgeInsets","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView20HorizontalEdgeInsetsV"}],"abstract":[{"type":"text","text":"The edge insets for the text view. This value insets every piece of drawable content in the view, including"},{"text":" ","type":"text"},{"type":"text","text":"selection rects."}],"title":"edgeInsets"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/HorizontalEdgeInsets":{"abstract":[],"kind":"symbol","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/HorizontalEdgeInsets","type":"topic","url":"\/documentation\/codeedittextview\/horizontaledgeinsets","title":"HorizontalEdgeInsets","navigatorTitle":[{"text":"HorizontalEdgeInsets","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"HorizontalEdgeInsets"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textlayoutmanagerdelegate-implementations.json b/data/documentation/codeedittextview/textview/textlayoutmanagerdelegate-implementations.json
new file mode 100644
index 000000000..93878616c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textlayoutmanagerdelegate-implementations.json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"major":0,"patch":0},"topicSections":[{"anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleRect"],"generated":true,"title":"Instance Properties"},{"generated":true,"title":"Instance Methods","anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerHeightDidUpdate(newHeight:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerMaxWidthDidChange(newWidth:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerTypingAttributes()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerYAdjustment(_:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textViewportSize()"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"API Collection","title":"TextLayoutManagerDelegate Implementations","role":"collectionGroup"},"kind":"article","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/TextLayoutManagerDelegate-Implementations","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/textlayoutmanagerdelegate-implementations"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerYAdjustment(_:)":{"abstract":[],"url":"\/documentation\/codeedittextview\/textview\/layoutmanageryadjustment(_:)","title":"layoutManagerYAdjustment(_:)","type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerYAdjustment(_:)","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"layoutManagerYAdjustment","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:14CoreFoundation7CGFloatV","text":"CGFloat"},{"kind":"text","text":")"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerMaxWidthDidChange(newWidth:)":{"abstract":[],"type":"topic","title":"layoutManagerMaxWidthDidChange(newWidth:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"layoutManagerMaxWidthDidChange","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"newWidth"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"},{"text":")","kind":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/layoutmanagermaxwidthdidchange(newwidth:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerMaxWidthDidChange(newWidth:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/visibleRect":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleRect","abstract":[],"type":"topic","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"visibleRect","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"}],"title":"visibleRect","url":"\/documentation\/codeedittextview\/textview\/visiblerect"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textViewportSize()":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textViewportSize","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"c:@S@CGSize","text":"CGSize","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textViewportSize()","abstract":[],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textviewportsize()","type":"topic","title":"textViewportSize()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerTypingAttributes()":{"title":"layoutManagerTypingAttributes()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"layoutManagerTypingAttributes","kind":"identifier"},{"text":"() -> [","kind":"text"},{"text":"NSAttributedString","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString"},{"text":".","kind":"text"},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"kind":"text","text":" : "},{"text":"Any","kind":"keyword"},{"kind":"text","text":"]"}],"type":"topic","kind":"symbol","abstract":[],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/layoutmanagertypingattributes()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerTypingAttributes()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/layoutManagerHeightDidUpdate(newHeight:)":{"kind":"symbol","title":"layoutManagerHeightDidUpdate(newHeight:)","role":"symbol","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"layoutManagerHeightDidUpdate","kind":"identifier"},{"text":"(","kind":"text"},{"text":"newHeight","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV","kind":"typeIdentifier"},{"text":")","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/layoutManagerHeightDidUpdate(newHeight:)","url":"\/documentation\/codeedittextview\/textview\/layoutmanagerheightdidupdate(newheight:)","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textselectionmanagerdelegate-implementations.json b/data/documentation/codeedittextview/textview/textselectionmanagerdelegate-implementations.json
new file mode 100644
index 000000000..b89560ab8
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textselectionmanagerdelegate-implementations.json
@@ -0,0 +1 @@
+{"topicSections":[{"anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleTextRange"],"title":"Instance Properties","generated":true},{"title":"Instance Methods","anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/estimatedLineHeight()","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setNeedsDisplay()"],"generated":true}],"kind":"article","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/textselectionmanagerdelegate-implementations"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/TextSelectionManagerDelegate-Implementations"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"collectionGroup","roleHeading":"API Collection","title":"TextSelectionManagerDelegate Implementations"},"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/estimatedLineHeight()":{"abstract":[],"type":"topic","title":"estimatedLineHeight()","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/estimatedlineheight()","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"estimatedLineHeight"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"CGFloat","preciseIdentifier":"s:14CoreFoundation7CGFloatV"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/estimatedLineHeight()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/setNeedsDisplay()":{"abstract":[],"kind":"symbol","type":"topic","url":"\/documentation\/codeedittextview\/textview\/setneedsdisplay()","title":"setNeedsDisplay()","role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/setNeedsDisplay()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"setNeedsDisplay"},{"kind":"text","text":"()"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/visibleTextRange":{"abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"visibleTextRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":"?","kind":"text"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/visibletextrange","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleTextRange","title":"visibleTextRange"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textstorage.json b/data/documentation/codeedittextview/textview/textstorage.json
new file mode 100644
index 000000000..f0dffbea0
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textstorage.json
@@ -0,0 +1 @@
+{"metadata":{"role":"symbol","symbolKind":"property","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","title":"textStorage","externalID":"s:16CodeEditTextView0cD0C11textStorageSo06NSTextF0CSgvp","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"textStorage"},{"text":": ","kind":"text"},{"text":"NSTextStorage","preciseIdentifier":"c:objc(cs)NSTextStorage","kind":"typeIdentifier"},{"text":"!","kind":"text"}]},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/textstorage"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSTextStorage","kind":"typeIdentifier","text":"NSTextStorage"},{"kind":"text","text":"! { get }"}]}]},{"kind":"content","content":[{"level":2,"text":"Discussion","type":"heading","anchor":"discussion"},{"content":[{"inlineContent":[{"text":"Do not update the text storage object directly. Doing so will very likely break the text view’s","type":"text"},{"type":"text","text":" "},{"text":"layout system. Use methods like ","type":"text"},{"type":"codeVoice","code":"TextView\/replaceCharacters(in:with:)-58mt7"},{"text":" or","type":"text"},{"text":" ","type":"text"},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:)","isActive":true},{"type":"text","text":" to modify content."}],"type":"paragraph"}],"style":"warning","name":"Warning","type":"aside"}]}],"abstract":[{"type":"text","text":"The text storage object for the text view."}],"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/insertText(_:)":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/insertText(_:)","title":"insertText(_:)","url":"\/documentation\/codeedittextview\/textview\/inserttext(_:)","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"insertText"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":")"}],"abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textStorage":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textstorage","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textStorage","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSTextStorage","text":"NSTextStorage"},{"text":"!","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textStorage","type":"topic","abstract":[{"type":"text","text":"The text storage object for the text view."}],"title":"textStorage","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textviewportsize().json b/data/documentation/codeedittextview/textview/textviewportsize().json
new file mode 100644
index 000000000..7c58a8fb2
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textviewportsize().json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textViewportSize()","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"textViewportSize"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGSize","text":"CGSize"}],"languages":["swift"]}]}],"kind":"symbol","abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"TextLayoutManagerDelegate.textViewportSize()"},{"type":"text","text":"."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"sections":[],"metadata":{"symbolKind":"method","roleHeading":"Instance Method","role":"symbol","extendedModule":"CodeEditTextView","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textViewportSize"},{"text":"() -> ","kind":"text"},{"kind":"typeIdentifier","text":"CGSize","preciseIdentifier":"c:@S@CGSize"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD0C16textViewportSizeSo6CGSizeVyF","title":"textViewportSize()"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/textviewportsize()"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textViewportSize()":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textViewportSize","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"c:@S@CGSize","text":"CGSize","kind":"typeIdentifier"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textViewportSize()","abstract":[],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/textviewportsize()","type":"topic","title":"textViewportSize()","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/textwillchangenotification.json b/data/documentation/codeedittextview/textview/textwillchangenotification.json
new file mode 100644
index 000000000..706d94f22
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/textwillchangenotification.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/textwillchangenotification"]}],"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textWillChangeNotification","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"text":"static","kind":"keyword"},{"kind":"text","text":" "},{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textWillChangeNotification"},{"kind":"text","text":": "},{"text":"Notification","preciseIdentifier":"s:10Foundation12NotificationV","kind":"typeIdentifier"},{"kind":"text","text":"."},{"preciseIdentifier":"s:10Foundation12NotificationV4Namea","text":"Name","kind":"typeIdentifier"}],"platforms":["macOS"]}],"kind":"declarations"}],"metadata":{"roleHeading":"Type Property","externalID":"s:16CodeEditTextView0cD0C26textWillChangeNotificationSo18NSNotificationNameavpZ","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"textWillChangeNotification","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"textWillChangeNotification","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV","text":"Notification"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV4Namea","text":"Name"}],"symbolKind":"property"},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/textWillChangeNotification":{"url":"\/documentation\/codeedittextview\/textview\/textwillchangenotification","role":"symbol","title":"textWillChangeNotification","type":"topic","abstract":[],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/textWillChangeNotification","fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"textWillChangeNotification","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Notification","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation12NotificationV"},{"text":".","kind":"text"},{"preciseIdentifier":"s:10Foundation12NotificationV4Namea","kind":"typeIdentifier","text":"Name"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/typingattributes.json b/data/documentation/codeedittextview/textview/typingattributes.json
new file mode 100644
index 000000000..3dc6d1f6e
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/typingattributes.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/typingAttributes","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"abstract":[{"type":"text","text":"The attributes to apply to inserted text."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","kind":"attribute","preciseIdentifier":"s:ScM"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"typingAttributes"},{"text":": [","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier","text":"NSAttributedString"},{"text":".","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSAttributedStringKey"},{"text":" : ","kind":"text"},{"kind":"keyword","text":"Any"},{"text":"] { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/typingattributes"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"typingAttributes","kind":"identifier"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"NSAttributedString","preciseIdentifier":"c:objc(cs)NSAttributedString"},{"text":".","kind":"text"},{"preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier","text":"Key"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"]","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C16typingAttributesSDySo21NSAttributedStringKeyaypGvp","symbolKind":"property","title":"typingAttributes","role":"symbol"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/typingAttributes":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/typingAttributes","title":"typingAttributes","type":"topic","abstract":[{"text":"The attributes to apply to inserted text.","type":"text"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"typingAttributes","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"Any","kind":"keyword"},{"kind":"text","text":"]"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/typingattributes"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/undomanager.json b/data/documentation/codeedittextview/textview/undomanager.json
new file mode 100644
index 000000000..0f97fe2e7
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/undomanager.json
@@ -0,0 +1 @@
+{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/undoManager"},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/undomanager"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"undoManager","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSUndoManager","text":"UndoManager","kind":"typeIdentifier"},{"text":"? { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" }","kind":"text"}]}],"kind":"declarations"}],"kind":"symbol","metadata":{"title":"undoManager","role":"symbol","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"undoManager","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSUndoManager","kind":"typeIdentifier","text":"UndoManager"},{"text":"?","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(py)undoManager","extendedModule":"CodeEditTextView"},"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/undoManager":{"title":"undoManager","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/undoManager","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"undoManager","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"UndoManager","preciseIdentifier":"c:objc(cs)NSUndoManager"},{"kind":"text","text":"?"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/undomanager"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/unmarktext().json b/data/documentation/codeedittextview/textview/unmarktext().json
new file mode 100644
index 000000000..567a433ce
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/unmarktext().json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"unmarkText","kind":"identifier"},{"kind":"text","text":"()"}],"platforms":["macOS"],"languages":["swift"]}]},{"content":[{"level":2,"type":"heading","text":"Discussion","anchor":"discussion"},{"inlineContent":[{"text":"The receiver removes any marking from pending input text and disposes of the marked text as it wishes.","type":"text"},{"text":" ","type":"text"},{"type":"text","text":"The text view should accept the marked text as if it had been inserted normally."},{"text":" ","type":"text"},{"text":"If there is no marked text, the invocation of this method has no effect.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/unmarktext()"]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/unmarkText()","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"unmarkText()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"unmarkText"},{"text":"()","kind":"text"}],"extendedModule":"CodeEditTextView","roleHeading":"Instance Method","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)unmarkText","symbolKind":"method"},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","abstract":[{"text":"Unmarks the marked text.","type":"text"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/unmarkText()":{"type":"topic","kind":"symbol","abstract":[{"text":"Unmarks the marked text.","type":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/unmarkText()","url":"\/documentation\/codeedittextview\/textview\/unmarktext()","role":"symbol","title":"unmarkText()","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"unmarkText"},{"kind":"text","text":"()"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/updatedviewport(_:).json b/data/documentation/codeedittextview/textview/updatedviewport(_:).json
new file mode 100644
index 000000000..8a7ca98f5
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/updatedviewport(_:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"updatedViewport","kind":"identifier"},{"text":"(","kind":"text"},{"text":"CGRect","kind":"typeIdentifier","preciseIdentifier":"c:@S@CGRect"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C15updatedViewportyySo6CGRectVF","extendedModule":"CodeEditTextView","role":"symbol","title":"updatedViewport(_:)","modules":[{"name":"CodeEditTextView"}]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/updatedviewport(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"updatedViewport"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"newRect"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"CGRect","preciseIdentifier":"c:@S@CGRect"},{"text":")","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updatedViewport(_:)","interfaceLanguage":"swift"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/updatedViewport(_:)":{"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/updatedviewport(_:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"updatedViewport","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"c:@S@CGRect","text":"CGRect"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updatedViewport(_:)","type":"topic","abstract":[],"title":"updatedViewport(_:)","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/updateframeifneeded().json b/data/documentation/codeedittextview/textview/updateframeifneeded().json
new file mode 100644
index 000000000..c2c9c1950
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/updateframeifneeded().json
@@ -0,0 +1 @@
+{"abstract":[{"type":"text","text":"Updates the view’s frame if needed depending on wrapping lines, a new maximum width, or changed available size."}],"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"updateFrameIfNeeded","kind":"identifier"},{"kind":"text","text":"() -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol","externalID":"s:16CodeEditTextView0cD0C19updateFrameIfNeededSbyF","title":"updateFrameIfNeeded()","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Method","symbolKind":"method","extendedModule":"CodeEditTextView"},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@discardableResult"},{"text":" ","kind":"text"},{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"updateFrameIfNeeded"},{"kind":"text","text":"() -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}]},{"content":[{"text":"Return Value","anchor":"return-value","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"text":"Whether or not the view was updated.","type":"text"}]}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/updateframeifneeded()"]}],"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updateFrameIfNeeded()"},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/updateFrameIfNeeded()":{"type":"topic","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/updateFrameIfNeeded()","title":"updateFrameIfNeeded()","url":"\/documentation\/codeedittextview\/textview\/updateframeifneeded()","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"updateFrameIfNeeded","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"abstract":[{"type":"text","text":"Updates the view’s frame if needed depending on wrapping lines, a new maximum width, or changed available size."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/usesystemcursor.json b/data/documentation/codeedittextview/textview/usesystemcursor.json
new file mode 100644
index 000000000..65288faf4
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/usesystemcursor.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"text":" ","kind":"text"},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"useSystemCursor","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"text":" ","kind":"text"},{"kind":"keyword","text":"set"},{"text":" }","kind":"text"}]}],"kind":"declarations"},{"kind":"content","content":[{"anchor":"discussion","level":2,"type":"heading","text":"Discussion"},{"style":"important","content":[{"type":"paragraph","inlineContent":[{"text":"Only available after macOS 14.","type":"text"}]}],"name":"Important","type":"aside"}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/usesystemcursor"]}],"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"type":"text","text":"Determines if the text view uses the macOS system cursor or a "},{"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","isActive":true},{"text":" for cursors.","type":"text"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/useSystemCursor","interfaceLanguage":"swift"},"metadata":{"role":"symbol","symbolKind":"property","title":"useSystemCursor","externalID":"s:16CodeEditTextView0cD0C15useSystemCursorSbvp","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"useSystemCursor","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/useSystemCursor":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"useSystemCursor","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/codeedittextview\/textview\/usesystemcursor","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/useSystemCursor","type":"topic","abstract":[{"type":"text","text":"Determines if the text view uses the macOS system cursor or a "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","type":"reference","isActive":true},{"type":"text","text":" for cursors."}],"title":"useSystemCursor","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/CursorView":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/CursorView","title":"CursorView","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"CursorView"}],"navigatorTitle":[{"kind":"identifier","text":"CursorView"}],"abstract":[{"type":"text","text":"Animates a cursor. Will sync animation with any other cursor views."}],"role":"symbol","url":"\/documentation\/codeedittextview\/cursorview","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/validattributesformarkedtext().json b/data/documentation/codeedittextview/textview/validattributesformarkedtext().json
new file mode 100644
index 000000000..86c65c587
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/validattributesformarkedtext().json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"validAttributesForMarkedText"},{"kind":"text","text":"() -> ["},{"text":"NSAttributedString","preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey"},{"kind":"text","text":"]"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)validAttributesForMarkedText","extendedModule":"CodeEditTextView","role":"symbol","title":"validAttributesForMarkedText()","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"kind":"text","text":" "},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"validAttributesForMarkedText","kind":"identifier"},{"kind":"text","text":"() -> ["},{"preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier","text":"NSAttributedString"},{"text":".","kind":"text"},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"},{"content":[{"text":"Return Value","type":"heading","level":2,"anchor":"return-value"},{"type":"paragraph","inlineContent":[{"text":"An array of NSString objects representing names for the supported attributes.","type":"text"}]}],"kind":"content"},{"content":[{"type":"heading","text":"Discussion","anchor":"discussion","level":2},{"inlineContent":[{"text":"Returns an empty array if no attributes are supported. See NSAttributedString Application Kit Additions","type":"text"},{"text":" ","type":"text"},{"text":"Reference for the set of string constants representing standard attributes.","type":"text"}],"type":"paragraph"}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/validattributesformarkedtext()"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/validAttributesForMarkedText()"},"sections":[],"abstract":[{"type":"text","text":"Returns an array of attribute names recognized by the receiver."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/validAttributesForMarkedText()":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textview\/validattributesformarkedtext()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"validAttributesForMarkedText","kind":"identifier"},{"kind":"text","text":"() -> ["},{"kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString"},{"text":".","kind":"text"},{"text":"Key","preciseIdentifier":"c:@T@NSAttributedStringKey","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/validAttributesForMarkedText()","title":"validAttributesForMarkedText()","abstract":[{"type":"text","text":"Returns an array of attribute names recognized by the receiver."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/viewdidendliveresize().json b/data/documentation/codeedittextview/textview/viewdidendliveresize().json
new file mode 100644
index 000000000..46012a03c
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/viewdidendliveresize().json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"viewDidEndLiveResize","kind":"identifier"},{"text":"()","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)viewDidEndLiveResize","extendedModule":"CodeEditTextView","role":"symbol","title":"viewDidEndLiveResize()","modules":[{"name":"CodeEditTextView"}]},"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/viewdidendliveresize()"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"viewDidEndLiveResize"},{"kind":"text","text":"()"}]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewDidEndLiveResize()"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/viewDidEndLiveResize()":{"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/viewdidendliveresize()","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewDidEndLiveResize()","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"viewDidEndLiveResize"},{"kind":"text","text":"()"}],"abstract":[],"title":"viewDidEndLiveResize()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/viewwillmove(tosuperview:).json b/data/documentation/codeedittextview/textview/viewwillmove(tosuperview:).json
new file mode 100644
index 000000000..242b3cfbb
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/viewwillmove(tosuperview:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toSuperview:)"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"viewWillMove","kind":"identifier"},{"kind":"text","text":"("},{"text":"toSuperview","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"newSuperview","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"text":"?)","kind":"text"}],"platforms":["macOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/viewwillmove(tosuperview:)"]}],"metadata":{"title":"viewWillMove(toSuperview:)","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"viewWillMove"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"toSuperview"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSView","preciseIdentifier":"c:objc(cs)NSView"},{"text":"?)","kind":"text"}],"role":"symbol","extendedModule":"CodeEditTextView","externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)viewWillMoveToSuperview:","symbolKind":"method","roleHeading":"Instance Method"},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/viewWillMove(toSuperview:)":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toSuperview:)","title":"viewWillMove(toSuperview:)","type":"topic","abstract":[],"kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"viewWillMove"},{"text":"(","kind":"text"},{"text":"toSuperview","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSView","text":"NSView","kind":"typeIdentifier"},{"kind":"text","text":"?)"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/viewwillmove(tosuperview:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/viewwillmove(towindow:).json b/data/documentation/codeedittextview/textview/viewwillmove(towindow:).json
new file mode 100644
index 000000000..c1b74c6f6
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/viewwillmove(towindow:).json
@@ -0,0 +1 @@
+{"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"viewWillMove","kind":"identifier"},{"text":"(","kind":"text"},{"text":"toWindow","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSWindow","text":"NSWindow","kind":"typeIdentifier"},{"text":"?)","kind":"text"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)viewWillMoveToWindow:","extendedModule":"CodeEditTextView","role":"symbol","title":"viewWillMove(toWindow:)","modules":[{"name":"CodeEditTextView"}]},"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"text":" ","kind":"text"},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"viewWillMove"},{"kind":"text","text":"("},{"text":"toWindow","kind":"externalParam"},{"kind":"text","text":" "},{"text":"newWindow","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"NSWindow","preciseIdentifier":"c:objc(cs)NSWindow","kind":"typeIdentifier"},{"kind":"text","text":"?)"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toWindow:)","interfaceLanguage":"swift"},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/textview\/viewwillmove(towindow:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/viewWillMove(toWindow:)":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"viewWillMove"},{"kind":"text","text":"("},{"text":"toWindow","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:objc(cs)NSWindow","text":"NSWindow","kind":"typeIdentifier"},{"text":"?)","kind":"text"}],"title":"viewWillMove(toWindow:)","url":"\/documentation\/codeedittextview\/textview\/viewwillmove(towindow:)","kind":"symbol","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/viewWillMove(toWindow:)","type":"topic","role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/visiblerect.json b/data/documentation/codeedittextview/textview/visiblerect.json
new file mode 100644
index 000000000..1b08c4bfd
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/visiblerect.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"@","kind":"attribute"},{"text":"MainActor","preciseIdentifier":"s:ScM","kind":"attribute"},{"kind":"text","text":" "},{"kind":"keyword","text":"override"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"visibleRect","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"},{"text":" { ","kind":"text"},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"metadata":{"modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(py)visibleRect","symbolKind":"property","extendedModule":"CodeEditTextView","title":"visibleRect","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"visibleRect","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRect","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect"}],"roleHeading":"Instance Property","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleRect","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"text":"Inherited from ","type":"text"},{"type":"codeVoice","code":"TextLayoutManagerDelegate.visibleRect"},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/visiblerect"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/visibleRect":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleRect","abstract":[],"type":"topic","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"visibleRect","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRect","text":"NSRect"}],"title":"visibleRect","url":"\/documentation\/codeedittextview\/textview\/visiblerect"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/visibletextrange.json b/data/documentation/codeedittextview/textview/visibletextrange.json
new file mode 100644
index 000000000..3079daa23
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/visibletextrange.json
@@ -0,0 +1 @@
+{"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"kind":"symbol","identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleTextRange","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/visibletextrange"]}],"metadata":{"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Instance Property","title":"visibleTextRange","symbolKind":"property","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"visibleTextRange","kind":"identifier"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":"?","kind":"text"}],"externalID":"s:16CodeEditTextView0cD0C07visibleC5RangeSo8_NSRangeVSgvp"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"TextSelectionManagerDelegate.visibleTextRange"},{"type":"text","text":"."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","kind":"attribute","text":"MainActor"},{"kind":"text","text":" "},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"visibleTextRange","kind":"identifier"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":"? { "},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"platforms":["macOS"]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/visibleTextRange":{"abstract":[],"type":"topic","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"visibleTextRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":"?","kind":"text"}],"kind":"symbol","url":"\/documentation\/codeedittextview\/textview\/visibletextrange","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/visibleTextRange","title":"visibleTextRange"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/wraplines.json b/data/documentation/codeedittextview/textview/wraplines.json
new file mode 100644
index 000000000..4dba9d79b
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/wraplines.json
@@ -0,0 +1 @@
+{"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"attribute","text":"@"},{"preciseIdentifier":"s:ScM","text":"MainActor","kind":"attribute"},{"text":" ","kind":"text"},{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"wrapLines","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" ","kind":"text"},{"text":"set","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"]}]}],"abstract":[{"text":"Whether or not the editor should wrap lines","type":"text"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textview\/wraplines"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"wrapLines","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"wrapLines"},{"kind":"text","text":": "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"externalID":"s:16CodeEditTextView0cD0C9wrapLinesSbvp","symbolKind":"property","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/wrapLines"},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/wrapLines":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/wrapLines","title":"wrapLines","type":"topic","abstract":[{"type":"text","text":"Whether or not the editor should wrap lines"}],"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrapLines"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"role":"symbol","url":"\/documentation\/codeedittextview\/textview\/wraplines"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textview/yank(_:).json b/data/documentation/codeedittextview/textview/yank(_:).json
new file mode 100644
index 000000000..6d9d46390
--- /dev/null
+++ b/data/documentation/codeedittextview/textview/yank(_:).json
@@ -0,0 +1 @@
+{"metadata":{"extendedModule":"CodeEditTextView","modules":[{"name":"CodeEditTextView"}],"externalID":"c:@CM@CodeEditTextView@objc(cs)TextView(im)yank:","role":"symbol","roleHeading":"Instance Method","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"yank","kind":"identifier"},{"kind":"text","text":"("},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"title":"yank(_:)","symbolKind":"method"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textview\/yank(_:)"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"@","kind":"attribute"},{"kind":"attribute","preciseIdentifier":"s:ScM","text":"MainActor"},{"kind":"text","text":" "},{"text":"override","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"yank"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"sender","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"text":"?)","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/yank(_:)"},"kind":"symbol","sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView/yank(_:)":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"yank"},{"text":"(","kind":"text"},{"text":"Any","kind":"keyword"},{"text":"?)","kind":"text"}],"url":"\/documentation\/codeedittextview\/textview\/yank(_:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView\/yank(_:)","type":"topic","abstract":[],"title":"yank(_:)","role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textviewdelegate.json b/data/documentation/codeedittextview/textviewdelegate.json
new file mode 100644
index 000000000..1fcc2832a
--- /dev/null
+++ b/data/documentation/codeedittextview/textviewdelegate.json
@@ -0,0 +1 @@
+{"sections":[],"metadata":{"navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextViewDelegate"}],"modules":[{"name":"CodeEditTextView"}],"title":"TextViewDelegate","role":"symbol","externalID":"s:16CodeEditTextView0cD8DelegateP","symbolKind":"protocol","roleHeading":"Protocol"},"topicSections":[{"generated":true,"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)"],"title":"Instance Methods","anchor":"Instance-Methods"}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextViewDelegate","kind":"identifier"},{"text":" : AnyObject","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textviewdelegate"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:shouldReplaceContentsIn:with:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:shouldreplacecontentsin:with:)","required":true,"defaultImplementations":1,"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"shouldReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"textView(_:shouldReplaceContentsIn:with:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:willReplaceContentsIn:with:)":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"willReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"type":"topic","kind":"symbol","required":true,"defaultImplementations":1,"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:willreplacecontentsin:with:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)","title":"textView(_:willReplaceContentsIn:with:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:didReplaceContentsIn:with:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:didreplacecontentsin:with:)","required":true,"defaultImplementations":1,"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"didReplaceContentsIn"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}],"title":"textView(_:didReplaceContentsIn:with:)","kind":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)-5kxu6.json b/data/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)-5kxu6.json
new file mode 100644
index 000000000..c7429743a
--- /dev/null
+++ b/data/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)-5kxu6.json
@@ -0,0 +1 @@
+{"metadata":{"symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"text":"(","kind":"text"},{"text":"TextView","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"didReplaceContentsIn"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"extendedModule":"CodeEditTextView","role":"symbol","roleHeading":"Instance Method","title":"textView(_:didReplaceContentsIn:with:)","modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD8DelegatePAAE04textD0_20didReplaceContentsIn4withyAA0cD0C_So8_NSRangeVSStF"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"]]},"sections":[],"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"text":"textView","kind":"internalParam"},{"kind":"text","text":": "},{"text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"},{"kind":"text","text":", "},{"text":"didReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"string"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}],"languages":["swift"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)-5kxu6"},"variants":[{"paths":["\/documentation\/codeedittextview\/textviewdelegate\/textview(_:didreplacecontentsin:with:)-5kxu6"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:didReplaceContentsIn:with:)-5kxu6":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:didreplacecontentsin:with:)-5kxu6","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"kind":"text","text":", "},{"text":"didReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)-5kxu6","title":"textView(_:didReplaceContentsIn:with:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:).json b/data/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:).json
new file mode 100644
index 000000000..0191eebf1
--- /dev/null
+++ b/data/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"textView(_:didReplaceContentsIn:with:)","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"textView"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView"},{"kind":"text","text":", "},{"text":"didReplaceContentsIn","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"externalID":"s:16CodeEditTextView0cD8DelegateP04textD0_20didReplaceContentsIn4withyAA0cD0C_So8_NSRangeVSStF","symbolKind":"method","required":true,"roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"textView","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"TextView","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"kind":"text","text":", "},{"text":"didReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"range"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":" "},{"kind":"internalParam","text":"string"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}]}],"kind":"declarations"}],"defaultImplementationsSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)-5kxu6"],"anchor":"TextViewDelegate-Implementations","title":"TextViewDelegate Implementations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textviewdelegate\/textview(_:didreplacecontentsin:with:)"]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:didReplaceContentsIn:with:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:didreplacecontentsin:with:)","required":true,"defaultImplementations":1,"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"text":"(","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"didReplaceContentsIn"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"with"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}],"title":"textView(_:didReplaceContentsIn:with:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:didReplaceContentsIn:with:)-5kxu6":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:didreplacecontentsin:with:)-5kxu6","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"kind":"text","text":", "},{"text":"didReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:didReplaceContentsIn:with:)-5kxu6","title":"textView(_:didReplaceContentsIn:with:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)-30pij.json b/data/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)-30pij.json
new file mode 100644
index 000000000..638dde132
--- /dev/null
+++ b/data/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)-30pij.json
@@ -0,0 +1 @@
+{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textviewdelegate\/textview(_:shouldreplacecontentsin:with:)-30pij"]}],"metadata":{"externalID":"s:16CodeEditTextView0cD8DelegatePAAE04textD0_23shouldReplaceContentsIn4withSbAA0cD0C_So8_NSRangeVSStF","title":"textView(_:shouldReplaceContentsIn:with:)","symbolKind":"method","role":"symbol","extendedModule":"CodeEditTextView","roleHeading":"Instance Method","modules":[{"name":"CodeEditTextView"}],"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"text":"TextView","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"text":", ","kind":"text"},{"text":"shouldReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"textView","kind":"internalParam"},{"kind":"text","text":": "},{"text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView"},{"kind":"text","text":", "},{"kind":"externalParam","text":"shouldReplaceContentsIn"},{"text":" ","kind":"text"},{"text":"range","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"with"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"string"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"]]},"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)-30pij","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:shouldReplaceContentsIn:with:)-30pij":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:shouldreplacecontentsin:with:)-30pij","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"shouldReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)-30pij","title":"textView(_:shouldReplaceContentsIn:with:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:).json b/data/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:).json
new file mode 100644
index 000000000..2c2eb280a
--- /dev/null
+++ b/data/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"textView(_:shouldReplaceContentsIn:with:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"shouldReplaceContentsIn"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"externalID":"s:16CodeEditTextView0cD8DelegateP04textD0_23shouldReplaceContentsIn4withSbAA0cD0C_So8_NSRangeVSStF","symbolKind":"method","required":true,"roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"defaultImplementationsSections":[{"anchor":"TextViewDelegate-Implementations","title":"TextViewDelegate Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)-30pij"]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textviewdelegate\/textview(_:shouldreplacecontentsin:with:)"]}],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"text":"(","kind":"text"},{"text":"_","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"textView","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"shouldReplaceContentsIn"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"with"},{"kind":"text","text":" "},{"text":"string","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:shouldReplaceContentsIn:with:)":{"type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:shouldreplacecontentsin:with:)","required":true,"defaultImplementations":1,"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"shouldReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"title":"textView(_:shouldReplaceContentsIn:with:)","kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:shouldReplaceContentsIn:with:)-30pij":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:shouldreplacecontentsin:with:)-30pij","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"shouldReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"NSRange","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:shouldReplaceContentsIn:with:)-30pij","title":"textView(_:shouldReplaceContentsIn:with:)","abstract":[]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)-3xvva.json b/data/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)-3xvva.json
new file mode 100644
index 000000000..a29b01783
--- /dev/null
+++ b/data/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)-3xvva.json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"]]},"kind":"symbol","primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"textView"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","text":"TextView"},{"kind":"text","text":", "},{"kind":"externalParam","text":"willReplaceContentsIn"},{"kind":"text","text":" "},{"text":"range","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"with"},{"kind":"text","text":" "},{"kind":"internalParam","text":"string"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":")","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/textviewdelegate\/textview(_:willreplacecontentsin:with:)-3xvva"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)-3xvva","interfaceLanguage":"swift"},"sections":[],"metadata":{"extendedModule":"CodeEditTextView","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"textView"},{"text":"(","kind":"text"},{"text":"TextView","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"willReplaceContentsIn","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":")","kind":"text"}],"modules":[{"name":"CodeEditTextView"}],"externalID":"s:16CodeEditTextView0cD8DelegatePAAE04textD0_21willReplaceContentsIn4withyAA0cD0C_So8_NSRangeVSStF","title":"textView(_:willReplaceContentsIn:with:)","roleHeading":"Instance Method","symbolKind":"method","role":"symbol"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:willReplaceContentsIn:with:)-3xvva":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)-3xvva","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"kind":"text","text":"("},{"text":"TextView","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"kind":"text","text":", "},{"kind":"externalParam","text":"willReplaceContentsIn"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:willreplacecontentsin:with:)-3xvva","title":"textView(_:willReplaceContentsIn:with:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:).json b/data/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:).json
new file mode 100644
index 000000000..faa24ddc6
--- /dev/null
+++ b/data/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:).json
@@ -0,0 +1 @@
+{"defaultImplementationsSections":[{"title":"TextViewDelegate Implementations","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)-3xvva"],"anchor":"TextViewDelegate-Implementations"}],"variants":[{"paths":["\/documentation\/codeedittextview\/textviewdelegate\/textview(_:willreplacecontentsin:with:)"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"text":"textView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"_"},{"text":" ","kind":"text"},{"kind":"internalParam","text":"textView"},{"kind":"text","text":": "},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"willReplaceContentsIn"},{"text":" ","kind":"text"},{"text":"range","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"with"},{"kind":"text","text":" "},{"text":"string","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"text":")","kind":"text"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","metadata":{"modules":[{"name":"CodeEditTextView"}],"required":true,"role":"symbol","externalID":"s:16CodeEditTextView0cD8DelegateP04textD0_21willReplaceContentsIn4withyAA0cD0C_So8_NSRangeVSStF","symbolKind":"method","title":"textView(_:willReplaceContentsIn:with:)","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"textView","kind":"identifier"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"willReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"with"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"kind":"text","text":")"}],"roleHeading":"Instance Method"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:willReplaceContentsIn:with:)-3xvva":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)-3xvva","role":"symbol","kind":"symbol","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"kind":"text","text":"("},{"text":"TextView","kind":"typeIdentifier","preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView"},{"kind":"text","text":", "},{"kind":"externalParam","text":"willReplaceContentsIn"},{"text":": ","kind":"text"},{"text":"NSRange","preciseIdentifier":"c:@T@NSRange","kind":"typeIdentifier"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":")","kind":"text"}],"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:willreplacecontentsin:with:)-3xvva","title":"textView(_:willReplaceContentsIn:with:)","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate":{"role":"symbol","fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"TextViewDelegate","kind":"identifier"}],"type":"topic","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextViewDelegate"}],"url":"\/documentation\/codeedittextview\/textviewdelegate","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate","title":"TextViewDelegate"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextViewDelegate/textView(_:willReplaceContentsIn:with:)":{"role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"textView"},{"kind":"text","text":"("},{"preciseIdentifier":"c:@M@CodeEditTextView@objc(cs)TextView","text":"TextView","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"willReplaceContentsIn","kind":"externalParam"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"text":"with","kind":"externalParam"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":")","kind":"text"}],"type":"topic","kind":"symbol","required":true,"defaultImplementations":1,"url":"\/documentation\/codeedittextview\/textviewdelegate\/textview(_:willreplacecontentsin:with:)","abstract":[],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextViewDelegate\/textView(_:willReplaceContentsIn:with:)","title":"textView(_:willReplaceContentsIn:with:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextView":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"TextView"}],"url":"\/documentation\/codeedittextview\/textview","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextView","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextView","kind":"identifier"}],"abstract":[{"type":"text","text":"A view that draws and handles user interactions with text."},{"text":" ","type":"text"},{"type":"text","text":"Optimized for line-based documents, does not attempt to have feature parity with "},{"type":"codeVoice","code":"NSTextView"},{"type":"text","text":"."}],"title":"TextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/typesetter.json b/data/documentation/codeedittextview/typesetter.json
new file mode 100644
index 000000000..5da8fb033
--- /dev/null
+++ b/data/documentation/codeedittextview/typesetter.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","interfaceLanguage":"swift"},"topicSections":[{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/init()"],"title":"Initializers","generated":true,"anchor":"Initializers"},{"anchor":"Instance-Properties","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/documentRange","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/lineFragments"],"title":"Instance Properties","generated":true},{"title":"Instance Methods","anchor":"Instance-Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/typeset(_:documentRange:displayData:markedRanges:attachments:)"],"generated":true}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"final"},{"kind":"text","text":" "},{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"Typesetter","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]},{"content":[{"text":"Overview","anchor":"overview","level":2,"type":"heading"},{"type":"paragraph","inlineContent":[{"type":"text","text":"This class has one primary method: "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/typeset(_:documentRange:displayData:markedRanges:attachments:)","isActive":true,"type":"reference"},{"type":"text","text":", which"},{"text":" ","type":"text"},{"text":"performs the typesetting algorithm and breaks content into runs using attachments.","type":"text"}]},{"inlineContent":[{"text":"To retrieve the line fragments generated by this class, access the ","type":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/lineFragments","isActive":true,"type":"reference"},{"type":"text","text":" property."}],"type":"paragraph"}],"kind":"content"}],"metadata":{"title":"Typesetter","externalID":"s:16CodeEditTextView10TypesetterC","symbolKind":"class","role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Class","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Typesetter"}],"navigatorTitle":[{"kind":"identifier","text":"Typesetter"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/typesetter"]}],"sections":[],"abstract":[{"text":"The ","type":"text"},{"type":"codeVoice","code":"Typesetter"},{"text":" is responsible for producing text fragments from a document range. It transforms a text line","type":"text"},{"type":"text","text":" "},{"type":"text","text":"and attachments into a sequence of "},{"type":"codeVoice","code":"LineFragment"},{"type":"text","text":"s, which reflect the visual structure of the text line."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/lineFragments":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/lineFragments","url":"\/documentation\/codeedittextview\/typesetter\/linefragments","title":"lineFragments","kind":"symbol","abstract":[],"type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"lineFragments","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/documentRange":{"abstract":[],"title":"documentRange","url":"\/documentation\/codeedittextview\/typesetter\/documentrange","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/documentRange","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"documentRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/init()":{"title":"init()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/init()","fragments":[{"kind":"identifier","text":"init"},{"text":"()","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/typesetter\/init()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/typeset(_:documentRange:displayData:markedRanges:attachments:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/typesetter\/typeset(_:documentrange:displaydata:markedranges:attachments:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/typeset(_:documentRange:displayData:markedRanges:attachments:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"typeset"},{"kind":"text","text":"("},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"documentRange"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"displayData"},{"kind":"text","text":": "},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV","text":"DisplayData"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"MarkedRanges","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV"},{"text":"?, ","kind":"text"},{"text":"attachments","kind":"externalParam"},{"text":": [","kind":"text"},{"text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier"},{"kind":"text","text":"])"}],"abstract":[],"title":"typeset(_:documentRange:displayData:markedRanges:attachments:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","title":"Typesetter","type":"topic","navigatorTitle":[{"text":"Typesetter","kind":"identifier"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Typesetter"}],"url":"\/documentation\/codeedittextview\/typesetter","abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Typesetter"},{"text":" is responsible for producing text fragments from a document range. It transforms a text line","type":"text"},{"type":"text","text":" "},{"type":"text","text":"and attachments into a sequence of "},{"code":"LineFragment","type":"codeVoice"},{"type":"text","text":"s, which reflect the visual structure of the text line."}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/typesetter/documentrange.json b/data/documentation/codeedittextview/typesetter/documentrange.json
new file mode 100644
index 000000000..2de7ecbf2
--- /dev/null
+++ b/data/documentation/codeedittextview/typesetter/documentrange.json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"documentRange"},{"text":": ","kind":"text"},{"preciseIdentifier":"c:@T@NSRange","text":"NSRange","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter"]]},"metadata":{"externalID":"s:16CodeEditTextView10TypesetterC13documentRangeSo8_NSRangeVSgvp","symbolKind":"property","roleHeading":"Instance Property","modules":[{"name":"CodeEditTextView"}],"title":"documentRange","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"documentRange","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":"?","kind":"text"}],"role":"symbol"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/documentRange"},"variants":[{"paths":["\/documentation\/codeedittextview\/typesetter\/documentrange"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","schemaVersion":{"major":0,"patch":0,"minor":3},"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","title":"Typesetter","type":"topic","navigatorTitle":[{"text":"Typesetter","kind":"identifier"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Typesetter"}],"url":"\/documentation\/codeedittextview\/typesetter","abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Typesetter"},{"text":" is responsible for producing text fragments from a document range. It transforms a text line","type":"text"},{"type":"text","text":" "},{"type":"text","text":"and attachments into a sequence of "},{"code":"LineFragment","type":"codeVoice"},{"type":"text","text":"s, which reflect the visual structure of the text line."}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/documentRange":{"abstract":[],"title":"documentRange","url":"\/documentation\/codeedittextview\/typesetter\/documentrange","type":"topic","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/documentRange","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"documentRange"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":"?","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/typesetter/init().json b/data/documentation/codeedittextview/typesetter/init().json
new file mode 100644
index 000000000..a23f20aef
--- /dev/null
+++ b/data/documentation/codeedittextview/typesetter/init().json
@@ -0,0 +1 @@
+{"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter"]]},"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"roleHeading":"Initializer","symbolKind":"init","fragments":[{"text":"init","kind":"identifier"},{"kind":"text","text":"()"}],"externalID":"s:16CodeEditTextView10TypesetterCACycfc","role":"symbol","title":"init()","modules":[{"name":"CodeEditTextView"}]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"init","kind":"keyword"},{"text":"()","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/init()"},"kind":"symbol","variants":[{"paths":["\/documentation\/codeedittextview\/typesetter\/init()"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/init()":{"title":"init()","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/init()","fragments":[{"kind":"identifier","text":"init"},{"text":"()","kind":"text"}],"abstract":[],"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/typesetter\/init()"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","title":"Typesetter","type":"topic","navigatorTitle":[{"text":"Typesetter","kind":"identifier"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Typesetter"}],"url":"\/documentation\/codeedittextview\/typesetter","abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Typesetter"},{"text":" is responsible for producing text fragments from a document range. It transforms a text line","type":"text"},{"type":"text","text":" "},{"type":"text","text":"and attachments into a sequence of "},{"code":"LineFragment","type":"codeVoice"},{"type":"text","text":"s, which reflect the visual structure of the text line."}],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/typesetter/linefragments.json b/data/documentation/codeedittextview/typesetter/linefragments.json
new file mode 100644
index 000000000..7e5327859
--- /dev/null
+++ b/data/documentation/codeedittextview/typesetter/linefragments.json
@@ -0,0 +1 @@
+{"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/lineFragments"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/typesetter\/linefragments"]}],"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"lineFragments","kind":"identifier"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","text":"TextLineStorage","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","text":"LineFragment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC"},{"text":">","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter"]]},"metadata":{"role":"symbol","modules":[{"name":"CodeEditTextView"}],"symbolKind":"property","externalID":"s:16CodeEditTextView10TypesetterC13lineFragmentsAA0C11LineStorageCyAA0H8FragmentCGvp","title":"lineFragments","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"lineFragments"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"TextLineStorage","preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","text":"LineFragment"},{"kind":"text","text":">"}],"roleHeading":"Instance Property"},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/LineFragment":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"LineFragment"}],"url":"\/documentation\/codeedittextview\/linefragment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"LineFragment"}],"abstract":[{"type":"text","text":"A "},{"isActive":true,"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/LineFragment","type":"reference"},{"type":"text","text":" represents a subrange of characters in a line. Every text line contains at least one line"},{"text":" ","type":"text"},{"type":"text","text":"fragments, and any lines that need to be broken due to width constraints will contain more than one fragment."}],"title":"LineFragment"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","title":"Typesetter","type":"topic","navigatorTitle":[{"text":"Typesetter","kind":"identifier"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Typesetter"}],"url":"\/documentation\/codeedittextview\/typesetter","abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Typesetter"},{"text":" is responsible for producing text fragments from a document range. It transforms a text line","type":"text"},{"type":"text","text":" "},{"type":"text","text":"and attachments into a sequence of "},{"code":"LineFragment","type":"codeVoice"},{"type":"text","text":"s, which reflect the visual structure of the text line."}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLineStorage":{"navigatorTitle":[{"kind":"identifier","text":"TextLineStorage"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLineStorage","type":"topic","url":"\/documentation\/codeedittextview\/textlinestorage","title":"TextLineStorage","abstract":[{"type":"text","text":"Implements a red-black tree for efficiently editing, storing and retrieving lines of text in a document."}],"role":"symbol","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"TextLineStorage","kind":"identifier"}],"kind":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/lineFragments":{"role":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/lineFragments","url":"\/documentation\/codeedittextview\/typesetter\/linefragments","title":"lineFragments","kind":"symbol","abstract":[],"type":"topic","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"lineFragments","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0C11LineStorageC","text":"TextLineStorage","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"LineFragment","preciseIdentifier":"s:16CodeEditTextView12LineFragmentC","kind":"typeIdentifier"},{"text":">","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/typesetter/typeset(_:documentrange:displaydata:markedranges:attachments:).json b/data/documentation/codeedittextview/typesetter/typeset(_:documentrange:displaydata:markedranges:attachments:).json
new file mode 100644
index 000000000..045167da7
--- /dev/null
+++ b/data/documentation/codeedittextview/typesetter/typeset(_:documentrange:displaydata:markedranges:attachments:).json
@@ -0,0 +1 @@
+{"metadata":{"title":"typeset(_:documentRange:displayData:markedRanges:attachments:)","modules":[{"name":"CodeEditTextView"}],"symbolKind":"method","roleHeading":"Instance Method","externalID":"s:16CodeEditTextView10TypesetterC7typeset_13documentRange11displayData12markedRanges11attachmentsySo18NSAttributedStringC_So8_NSRangeVAA0C4LineC07DisplayJ0VAA06MarkedL0VSgSayAA03AnyC10AttachmentVGtF","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"typeset"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"documentRange"},{"text":": ","kind":"text"},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"kind":"text","text":", "},{"kind":"externalParam","text":"displayData"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC","text":"TextLine"},{"kind":"text","text":"."},{"text":"DisplayData","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"kind":"text","text":", "},{"text":"markedRanges","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"MarkedRanges","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV"},{"text":"?, ","kind":"text"},{"text":"attachments","kind":"externalParam"},{"kind":"text","text":": ["},{"text":"AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV"},{"kind":"text","text":"])"}],"role":"symbol"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter"]]},"sections":[],"kind":"symbol","primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"typeset"},{"kind":"text","text":"("},{"text":"_","kind":"externalParam"},{"kind":"text","text":" "},{"text":"string","kind":"internalParam"},{"kind":"text","text":": "},{"text":"NSAttributedString","preciseIdentifier":"c:objc(cs)NSAttributedString","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"documentRange","kind":"externalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange","text":"NSRange"},{"text":", ","kind":"text"},{"text":"displayData","kind":"externalParam"},{"kind":"text","text":": "},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","text":"TextLine","preciseIdentifier":"s:16CodeEditTextView0C4LineC","kind":"typeIdentifier"},{"kind":"text","text":"."},{"text":"DisplayData","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV","kind":"typeIdentifier","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","text":"MarkedRanges"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"attachments"},{"text":": [","kind":"text"},{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","text":"AnyTextAttachment"},{"kind":"text","text":"] = [])"}]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/typeset(_:documentRange:displayData:markedRanges:attachments:)","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/codeedittextview\/typesetter\/typeset(_:documentrange:displaydata:markedranges:attachments:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter/typeset(_:documentRange:displayData:markedRanges:attachments:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/typesetter\/typeset(_:documentrange:displaydata:markedranges:attachments:)","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter\/typeset(_:documentRange:displayData:markedRanges:attachments:)","type":"topic","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"typeset"},{"kind":"text","text":"("},{"preciseIdentifier":"c:objc(cs)NSAttributedString","text":"NSAttributedString","kind":"typeIdentifier"},{"kind":"text","text":", "},{"kind":"externalParam","text":"documentRange"},{"kind":"text","text":": "},{"text":"NSRange","kind":"typeIdentifier","preciseIdentifier":"c:@T@NSRange"},{"text":", ","kind":"text"},{"kind":"externalParam","text":"displayData"},{"kind":"text","text":": "},{"text":"TextLine","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0C4LineC11DisplayDataV","text":"DisplayData"},{"text":", ","kind":"text"},{"text":"markedRanges","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"MarkedRanges","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView12MarkedRangesV"},{"text":"?, ","kind":"text"},{"text":"attachments","kind":"externalParam"},{"text":": [","kind":"text"},{"text":"AnyTextAttachment","preciseIdentifier":"s:16CodeEditTextView03AnyC10AttachmentV","kind":"typeIdentifier"},{"kind":"text","text":"])"}],"abstract":[],"title":"typeset(_:documentRange:displayData:markedRanges:attachments:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/AnyTextAttachment":{"title":"AnyTextAttachment","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AnyTextAttachment","kind":"identifier"}],"type":"topic","kind":"symbol","abstract":[{"text":"Type-erasing type for ","type":"text"},{"isActive":true,"type":"reference","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment"},{"type":"text","text":" that also contains range information about the attachment."}],"role":"symbol","url":"\/documentation\/codeedittextview\/anytextattachment","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/AnyTextAttachment","navigatorTitle":[{"kind":"identifier","text":"AnyTextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine/DisplayData":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"DisplayData"}],"url":"\/documentation\/codeedittextview\/textline\/displaydata","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine\/DisplayData","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"DisplayData"}],"abstract":[{"text":"Contains all required data to perform a typeset and layout operation on a text line.","type":"text"}],"title":"TextLine.DisplayData"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/Typesetter":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/Typesetter","title":"Typesetter","type":"topic","navigatorTitle":[{"text":"Typesetter","kind":"identifier"}],"kind":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Typesetter"}],"url":"\/documentation\/codeedittextview\/typesetter","abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Typesetter"},{"text":" is responsible for producing text fragments from a document range. It transforms a text line","type":"text"},{"type":"text","text":" "},{"type":"text","text":"and attachments into a sequence of "},{"code":"LineFragment","type":"codeVoice"},{"type":"text","text":"s, which reflect the visual structure of the text line."}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextAttachment":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextAttachment","type":"topic","kind":"symbol","role":"symbol","title":"TextAttachment","abstract":[{"type":"text","text":"Represents an attachment type. Attachments take up some set width, and draw their contents in a receiver view."}],"url":"\/documentation\/codeedittextview\/textattachment","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"text":"TextAttachment","kind":"identifier"}],"navigatorTitle":[{"kind":"identifier","text":"TextAttachment"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/MarkedRanges":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"MarkedRanges"}],"url":"\/documentation\/codeedittextview\/markedranges","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/MarkedRanges","kind":"symbol","type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"MarkedRanges","kind":"identifier"}],"abstract":[{"type":"text","text":"Struct for passing attribute and range information easily down into line fragments, typesetters without"},{"type":"text","text":" "},{"type":"text","text":"requiring a reference to the marked text manager."}],"title":"MarkedRanges"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/TextLine":{"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/TextLine","type":"topic","kind":"symbol","role":"symbol","title":"TextLine","abstract":[{"text":"Represents a displayable line of text.","type":"text"}],"url":"\/documentation\/codeedittextview\/textline","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"TextLine"}],"navigatorTitle":[{"kind":"identifier","text":"TextLine"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue.json b/data/documentation/codeedittextview/viewreusequeue.json
new file mode 100644
index 000000000..5176eb4c6
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue.json
@@ -0,0 +1 @@
+{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"},"topicSections":[{"generated":true,"anchor":"Initializers","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/init()"],"title":"Initializers"},{"identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/queuedViews","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/usedViews"],"generated":true,"anchor":"Instance-Properties","title":"Instance Properties"},{"title":"Instance Methods","identifiers":["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueView(forKey:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(in:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(notInSet:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getOrCreateView(forKey:createView:)","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getView(forKey:)"],"generated":true,"anchor":"Instance-Methods"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"ViewReuseQueue"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"View"},{"kind":"text","text":", "},{"kind":"genericParameter","text":"Key"},{"text":"> ","kind":"text"},{"kind":"keyword","text":"where"},{"text":" ","kind":"text"},{"text":"View","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"text":"NSView","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSView"},{"text":", ","kind":"text"},{"text":"Key","kind":"typeIdentifier"},{"text":" : ","kind":"text"},{"kind":"typeIdentifier","text":"Hashable","preciseIdentifier":"s:SH"}],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"title":"ViewReuseQueue","externalID":"s:16CodeEditTextView0D10ReuseQueueC","symbolKind":"class","role":"symbol","modules":[{"name":"CodeEditTextView"}],"roleHeading":"Class","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"text":"ViewReuseQueue","kind":"identifier"}],"navigatorTitle":[{"text":"ViewReuseQueue","kind":"identifier"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/viewreusequeue"]}],"sections":[],"abstract":[{"type":"text","text":"Maintains a queue of views available for reuse."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/init()":{"fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/viewreusequeue\/init()","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/init()","type":"topic","title":"init()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/enqueueViews(in:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/enqueueviews(in:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"enqueueViews","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Set","preciseIdentifier":"s:Sh"},{"kind":"text","text":"<"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":">)"}],"title":"enqueueViews(in:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(in:)","abstract":[{"text":"Enqueues all views keyed by the given set.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/usedViews":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/usedViews","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"usedViews","kind":"identifier"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"text":" : ","kind":"text"},{"text":"View","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"text":"]","kind":"text"}],"url":"\/documentation\/codeedittextview\/viewreusequeue\/usedviews","title":"usedViews","abstract":[{"text":"Maps views that are no longer queued to the keys they’re queued with.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/enqueueView(forKey:)":{"title":"enqueueView(forKey:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"enqueueView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"forKey"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","kind":"typeIdentifier","text":"Key"},{"kind":"text","text":")"}],"type":"topic","kind":"symbol","abstract":[{"text":"Removes a view for the given key and enqueues it for reuse.","type":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/enqueueview(forkey:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueView(forKey:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/queuedViews":{"role":"symbol","title":"queuedViews","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"queuedViews","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Deque","kind":"typeIdentifier","preciseIdentifier":"s:11DequeModule0A0V"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","text":"View"},{"text":">","kind":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/queuedViews","url":"\/documentation\/codeedittextview\/viewreusequeue\/queuedviews","abstract":[{"type":"text","text":"A stack of views that are not currently in use"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/getView(forKey:)":{"title":"getView(forKey:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getView(forKey:)","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/viewreusequeue\/getview(forkey:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"getView"},{"kind":"text","text":"("},{"text":"forKey","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","kind":"typeIdentifier","text":"View"},{"text":"?","kind":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/enqueueViews(notInSet:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/enqueueviews(notinset:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enqueueViews"},{"kind":"text","text":"("},{"text":"notInSet","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sh","text":"Set","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","text":"Key","kind":"typeIdentifier"},{"text":">)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(notInSet:)","title":"enqueueViews(notInSet:)","abstract":[{"type":"text","text":"Enqueues all views not in the given set."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/getOrCreateView(forKey:createView:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/getorcreateview(forkey:createview:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getOrCreateView(forKey:createView:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"getOrCreateView"},{"text":"(","kind":"text"},{"text":"forKey","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":", "},{"kind":"externalParam","text":"createView"},{"kind":"text","text":": () -> "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"}],"abstract":[{"text":"Finds, dequeues, or creates a view for the given key.","type":"text"}],"title":"getOrCreateView(forKey:createView:)"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/enqueueview(forkey:).json b/data/documentation/codeedittextview/viewreusequeue/enqueueview(forkey:).json
new file mode 100644
index 000000000..4d99302cb
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/enqueueview(forkey:).json
@@ -0,0 +1 @@
+{"primaryContentSections":[{"declarations":[{"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"enqueueView","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"forKey"},{"kind":"text","text":" "},{"text":"key","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Key","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","kind":"typeIdentifier"},{"text":")","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"},{"parameters":[{"name":"key","content":[{"type":"paragraph","inlineContent":[{"text":"The key for the view to reuse.","type":"text"}]}]}],"kind":"parameters"}],"kind":"symbol","abstract":[{"type":"text","text":"Removes a view for the given key and enqueues it for reuse."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/viewreusequeue\/enqueueview(forkey:)"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueView(forKey:)"},"metadata":{"title":"enqueueView(forKey:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enqueueView"},{"text":"(","kind":"text"},{"text":"forKey","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"text":")","kind":"text"}],"externalID":"s:16CodeEditTextView0D10ReuseQueueC07enqueueD06forKeyyq__tF","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/enqueueView(forKey:)":{"title":"enqueueView(forKey:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"enqueueView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"forKey"},{"kind":"text","text":": "},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","kind":"typeIdentifier","text":"Key"},{"kind":"text","text":")"}],"type":"topic","kind":"symbol","abstract":[{"text":"Removes a view for the given key and enqueues it for reuse.","type":"text"}],"role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/enqueueview(forkey:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueView(forKey:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/enqueueviews(in:).json b/data/documentation/codeedittextview/viewreusequeue/enqueueviews(in:).json
new file mode 100644
index 000000000..6e1424d8c
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/enqueueviews(in:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"enqueueViews","kind":"identifier"},{"kind":"text","text":"("},{"text":"in","kind":"externalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sh","text":"Set"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","text":"Key"},{"text":">)","kind":"text"}],"externalID":"s:16CodeEditTextView0D10ReuseQueueC12enqueueViews2inyShyq_G_tF","role":"symbol","title":"enqueueViews(in:)","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"enqueueViews","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":" ","kind":"text"},{"text":"keys","kind":"internalParam"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sh","text":"Set"},{"kind":"text","text":"<"},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":">)"}]}]},{"kind":"parameters","parameters":[{"name":"keys","content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"The keys for all the views that should be enqueued."}]}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/viewreusequeue\/enqueueviews(in:)"]}],"sections":[],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(in:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Enqueues all views keyed by the given set."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/enqueueViews(in:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/enqueueviews(in:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"enqueueViews","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"in"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Set","preciseIdentifier":"s:Sh"},{"kind":"text","text":"<"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":">)"}],"title":"enqueueViews(in:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(in:)","abstract":[{"text":"Enqueues all views keyed by the given set.","type":"text"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/enqueueviews(notinset:).json b/data/documentation/codeedittextview/viewreusequeue/enqueueviews(notinset:).json
new file mode 100644
index 000000000..a775e5203
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/enqueueviews(notinset:).json
@@ -0,0 +1 @@
+{"kind":"symbol","schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"roleHeading":"Instance Method","symbolKind":"method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enqueueViews"},{"text":"(","kind":"text"},{"text":"notInSet","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Set","preciseIdentifier":"s:Sh","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","kind":"typeIdentifier","text":"Key"},{"text":">)","kind":"text"}],"externalID":"s:16CodeEditTextView0D10ReuseQueueC12enqueueViews8notInSetyShyq_G_tF","role":"symbol","title":"enqueueViews(notInSet:)","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"enqueueViews","kind":"identifier"},{"text":"(","kind":"text"},{"text":"notInSet","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"keys","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Set","preciseIdentifier":"s:Sh","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"text":">)","kind":"text"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/viewreusequeue\/enqueueviews(notinset:)"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(notInSet:)"},"sections":[],"abstract":[{"type":"text","text":"Enqueues all views not in the given set."}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/enqueueViews(notInSet:)":{"type":"topic","kind":"symbol","role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/enqueueviews(notinset:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"enqueueViews"},{"kind":"text","text":"("},{"text":"notInSet","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sh","text":"Set","kind":"typeIdentifier"},{"text":"<","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","text":"Key","kind":"typeIdentifier"},{"text":">)","kind":"text"}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/enqueueViews(notInSet:)","title":"enqueueViews(notInSet:)","abstract":[{"type":"text","text":"Enqueues all views not in the given set."}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/getorcreateview(forkey:createview:).json b/data/documentation/codeedittextview/viewreusequeue/getorcreateview(forkey:createview:).json
new file mode 100644
index 000000000..e7a283142
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/getorcreateview(forkey:createview:).json
@@ -0,0 +1 @@
+{"metadata":{"roleHeading":"Instance Method","externalID":"s:16CodeEditTextView0D10ReuseQueueC011getOrCreateD06forKey06createD0xq__xyXEtF","modules":[{"name":"CodeEditTextView"}],"role":"symbol","title":"getOrCreateView(forKey:createView:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"getOrCreateView"},{"kind":"text","text":"("},{"text":"forKey","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":", "},{"text":"createView","kind":"externalParam"},{"text":": () -> ","kind":"text"},{"text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","kind":"typeIdentifier"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","text":"View"}],"symbolKind":"method"},"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getOrCreateView(forKey:createView:)","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getOrCreateView","kind":"identifier"},{"kind":"text","text":"("},{"kind":"externalParam","text":"forKey"},{"kind":"text","text":" "},{"kind":"internalParam","text":"key"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","text":"Key"},{"text":", ","kind":"text"},{"text":"createView","kind":"externalParam"},{"text":": () -> ","kind":"text"},{"text":"View","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","text":"View","kind":"typeIdentifier"}]}]},{"parameters":[{"name":"key","content":[{"inlineContent":[{"type":"text","text":"The key for the view to find."}],"type":"paragraph"}]},{"content":[{"inlineContent":[{"type":"text","text":"A callback that is called to create a new instance of the queued view types."}],"type":"paragraph"}],"name":"createView"}],"kind":"parameters"},{"kind":"content","content":[{"text":"Return Value","type":"heading","anchor":"return-value","level":2},{"inlineContent":[{"type":"text","text":"A view for the given key."}],"type":"paragraph"}]},{"kind":"content","content":[{"level":2,"anchor":"discussion","type":"heading","text":"Discussion"},{"type":"paragraph","inlineContent":[{"text":"If the view has been dequeued, it will return the view already queued for the given key it will be returned.","type":"text"},{"type":"text","text":" "},{"type":"text","text":"If there was no view dequeued for the given key, the returned view will either be a view queued for reuse or a"},{"type":"text","text":" "},{"type":"text","text":"new view object."}]}]}],"abstract":[{"type":"text","text":"Finds, dequeues, or creates a view for the given key."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/viewreusequeue\/getorcreateview(forkey:createview:)"]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/getOrCreateView(forKey:createView:)":{"role":"symbol","url":"\/documentation\/codeedittextview\/viewreusequeue\/getorcreateview(forkey:createview:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getOrCreateView(forKey:createView:)","kind":"symbol","type":"topic","fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"kind":"identifier","text":"getOrCreateView"},{"text":"(","kind":"text"},{"text":"forKey","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":", "},{"kind":"externalParam","text":"createView"},{"kind":"text","text":": () -> "},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"}],"abstract":[{"text":"Finds, dequeues, or creates a view for the given key.","type":"text"}],"title":"getOrCreateView(forKey:createView:)"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/getview(forkey:).json b/data/documentation/codeedittextview/viewreusequeue/getview(forkey:).json
new file mode 100644
index 000000000..12ac1243d
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/getview(forkey:).json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/viewreusequeue\/getview(forkey:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getView(forKey:)","interfaceLanguage":"swift"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"metadata":{"title":"getView(forKey:)","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"getView"},{"text":"(","kind":"text"},{"text":"forKey","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Key","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"kind":"typeIdentifier","text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"kind":"text","text":"?"}],"externalID":"s:16CodeEditTextView0D10ReuseQueueC03getD06forKeyxSgq__tF","symbolKind":"method","roleHeading":"Instance Method","role":"symbol","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"getView","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"forKey"},{"text":" ","kind":"text"},{"text":"key","kind":"internalParam"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp","text":"Key"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","text":"View","kind":"typeIdentifier"},{"kind":"text","text":"?"}]}]}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/getView(forKey:)":{"title":"getView(forKey:)","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/getView(forKey:)","kind":"symbol","type":"topic","abstract":[],"url":"\/documentation\/codeedittextview\/viewreusequeue\/getview(forkey:)","role":"symbol","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"getView"},{"kind":"text","text":"("},{"text":"forKey","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","kind":"typeIdentifier","text":"View"},{"text":"?","kind":"text"}]}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/init().json b/data/documentation/codeedittextview/viewreusequeue/init().json
new file mode 100644
index 000000000..b7ad372ee
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/init().json
@@ -0,0 +1 @@
+{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/init()"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/codeedittextview\/viewreusequeue\/init()"]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"role":"symbol","roleHeading":"Initializer","fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}],"title":"init()","externalID":"s:16CodeEditTextView0D10ReuseQueueCACyxq_Gycfc","symbolKind":"init"},"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"text":"()","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/init()":{"fragments":[{"text":"init","kind":"identifier"},{"text":"()","kind":"text"}],"url":"\/documentation\/codeedittextview\/viewreusequeue\/init()","role":"symbol","kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/init()","type":"topic","title":"init()","abstract":[]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/queuedviews.json b/data/documentation/codeedittextview/viewreusequeue/queuedviews.json
new file mode 100644
index 000000000..4adf87901
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/queuedviews.json
@@ -0,0 +1 @@
+{"identifier":{"url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/queuedViews","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"role":"symbol","roleHeading":"Instance Property","title":"queuedViews","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"queuedViews","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:11DequeModule0A0V","text":"Deque","kind":"typeIdentifier"},{"kind":"text","text":"<"},{"text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","kind":"typeIdentifier"},{"kind":"text","text":">"}],"externalID":"s:16CodeEditTextView0D10ReuseQueueC11queuedViews11DequeModule0I0VyxGvp","symbolKind":"property","modules":[{"name":"CodeEditTextView"}]},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"abstract":[{"type":"text","text":"A stack of views that are not currently in use"}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"queuedViews","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:11DequeModule0A0V","text":"Deque"},{"text":"<","kind":"text"},{"text":"View","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"text":">","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"paths":["\/documentation\/codeedittextview\/viewreusequeue\/queuedviews"],"traits":[{"interfaceLanguage":"swift"}]}],"sections":[],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/queuedViews":{"role":"symbol","title":"queuedViews","type":"topic","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"queuedViews","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Deque","kind":"typeIdentifier","preciseIdentifier":"s:11DequeModule0A0V"},{"text":"<","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","text":"View"},{"text":">","kind":"text"}],"kind":"symbol","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/queuedViews","url":"\/documentation\/codeedittextview\/viewreusequeue\/queuedviews","abstract":[{"type":"text","text":"A stack of views that are not currently in use"}]},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"}}}
\ No newline at end of file
diff --git a/data/documentation/codeedittextview/viewreusequeue/usedviews.json b/data/documentation/codeedittextview/viewreusequeue/usedviews.json
new file mode 100644
index 000000000..43a45deb7
--- /dev/null
+++ b/data/documentation/codeedittextview/viewreusequeue/usedviews.json
@@ -0,0 +1 @@
+{"variants":[{"paths":["\/documentation\/codeedittextview\/viewreusequeue\/usedviews"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/usedViews"},"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"usedViews","kind":"identifier"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":" : "},{"text":"View","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp","kind":"typeIdentifier"},{"kind":"text","text":"]"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"modules":[{"name":"CodeEditTextView"}],"title":"usedViews","role":"symbol","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"usedViews","kind":"identifier"},{"text":": [","kind":"text"},{"text":"Key","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"kind":"text","text":" : "},{"text":"View","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"text":"]","kind":"text"}],"externalID":"s:16CodeEditTextView0D10ReuseQueueC9usedViewsSDyq_xGvp","roleHeading":"Instance Property","symbolKind":"property"},"hierarchy":{"paths":[["doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView","doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue"]]},"abstract":[{"text":"Maps views that are no longer queued to the keys they’re queued with.","type":"text"}],"references":{"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView":{"role":"collection","url":"\/documentation\/codeedittextview","kind":"symbol","title":"CodeEditTextView","type":"topic","abstract":[{"type":"text","text":"A text editor designed to edit code documents."}],"identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue":{"url":"\/documentation\/codeedittextview\/viewreusequeue","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue","title":"ViewReuseQueue","kind":"symbol","type":"topic","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ViewReuseQueue"}],"navigatorTitle":[{"kind":"identifier","text":"ViewReuseQueue"}],"abstract":[{"text":"Maintains a queue of views available for reuse.","type":"text"}],"role":"symbol"},"doc://codeedittextview.CodeEditTextView/documentation/CodeEditTextView/ViewReuseQueue/usedViews":{"type":"topic","identifier":"doc:\/\/codeedittextview.CodeEditTextView\/documentation\/CodeEditTextView\/ViewReuseQueue\/usedViews","role":"symbol","kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"usedViews","kind":"identifier"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"Key","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC3Keyq_mfp"},{"text":" : ","kind":"text"},{"text":"View","kind":"typeIdentifier","preciseIdentifier":"s:16CodeEditTextView0D10ReuseQueueC0D0xmfp"},{"text":"]","kind":"text"}],"url":"\/documentation\/codeedittextview\/viewreusequeue\/usedviews","title":"usedViews","abstract":[{"text":"Maps views that are no longer queued to the keys they’re queued with.","type":"text"}]}}}
\ No newline at end of file
diff --git a/developer-og-twitter.jpg b/developer-og-twitter.jpg
new file mode 100644
index 000000000..63c48359d
Binary files /dev/null and b/developer-og-twitter.jpg differ
diff --git a/developer-og.jpg b/developer-og.jpg
new file mode 100644
index 000000000..4db840833
Binary files /dev/null and b/developer-og.jpg differ
diff --git a/documentation/codeedittextview/anytextattachment/!=(_:_:)/index.html b/documentation/codeedittextview/anytextattachment/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/anytextattachment/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/anytextattachment/==(_:_:)/index.html b/documentation/codeedittextview/anytextattachment/==(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/anytextattachment/==(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/anytextattachment/attachment/index.html b/documentation/codeedittextview/anytextattachment/attachment/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/anytextattachment/attachment/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/anytextattachment/equatable-implementations/index.html b/documentation/codeedittextview/anytextattachment/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/anytextattachment/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/anytextattachment/index.html b/documentation/codeedittextview/anytextattachment/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/anytextattachment/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/anytextattachment/range/index.html b/documentation/codeedittextview/anytextattachment/range/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/anytextattachment/range/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/appkit/index.html b/documentation/codeedittextview/appkit/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/appkit/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/appkit/nsbezierpath/cgpathfallback/index.html b/documentation/codeedittextview/appkit/nsbezierpath/cgpathfallback/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/appkit/nsbezierpath/cgpathfallback/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/appkit/nsbezierpath/index.html b/documentation/codeedittextview/appkit/nsbezierpath/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/appkit/nsbezierpath/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/beginundogrouping()/index.html b/documentation/codeedittextview/ceundomanager/beginundogrouping()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/beginundogrouping()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/canredo/index.html b/documentation/codeedittextview/ceundomanager/canredo/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/canredo/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/canundo/index.html b/documentation/codeedittextview/ceundomanager/canundo/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/canundo/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/clearstack()/index.html b/documentation/codeedittextview/ceundomanager/clearstack()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/clearstack()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/disable()/index.html b/documentation/codeedittextview/ceundomanager/disable()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/disable()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/enable()/index.html b/documentation/codeedittextview/ceundomanager/enable()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/enable()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/endundogrouping()/index.html b/documentation/codeedittextview/ceundomanager/endundogrouping()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/endundogrouping()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/index.html b/documentation/codeedittextview/ceundomanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/init()/index.html b/documentation/codeedittextview/ceundomanager/init()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/init()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/isgrouping/index.html b/documentation/codeedittextview/ceundomanager/isgrouping/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/isgrouping/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/isredoing/index.html b/documentation/codeedittextview/ceundomanager/isredoing/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/isredoing/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/isundoing/index.html b/documentation/codeedittextview/ceundomanager/isundoing/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/isundoing/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/redo()/index.html b/documentation/codeedittextview/ceundomanager/redo()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/redo()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/redocount/index.html b/documentation/codeedittextview/ceundomanager/redocount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/redocount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/registermutation(_:)/index.html b/documentation/codeedittextview/ceundomanager/registermutation(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/registermutation(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/registerundo(withtarget:selector:object:)/index.html b/documentation/codeedittextview/ceundomanager/registerundo(withtarget:selector:object:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/registerundo(withtarget:selector:object:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/undo()/index.html b/documentation/codeedittextview/ceundomanager/undo()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/undo()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/ceundomanager/undocount/index.html b/documentation/codeedittextview/ceundomanager/undocount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/ceundomanager/undocount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/corefoundation/cgpoint/index.html b/documentation/codeedittextview/corefoundation/cgpoint/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/corefoundation/cgpoint/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/corefoundation/cgpoint/pixelaligned/index.html b/documentation/codeedittextview/corefoundation/cgpoint/pixelaligned/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/corefoundation/cgpoint/pixelaligned/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/corefoundation/cgrect/index.html b/documentation/codeedittextview/corefoundation/cgrect/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/corefoundation/cgrect/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/corefoundation/cgrect/pixelaligned/index.html b/documentation/codeedittextview/corefoundation/cgrect/pixelaligned/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/corefoundation/cgrect/pixelaligned/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/corefoundation/index.html b/documentation/codeedittextview/corefoundation/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/corefoundation/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/cursorview/color/index.html b/documentation/codeedittextview/cursorview/color/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/cursorview/color/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/cursorview/hittest(_:)/index.html b/documentation/codeedittextview/cursorview/hittest(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/cursorview/hittest(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/cursorview/index.html b/documentation/codeedittextview/cursorview/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/cursorview/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/cursorview/init(coder:)/index.html b/documentation/codeedittextview/cursorview/init(coder:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/cursorview/init(coder:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/cursorview/isflipped/index.html b/documentation/codeedittextview/cursorview/isflipped/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/cursorview/isflipped/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/!=(_:_:)/index.html b/documentation/codeedittextview/emphasis/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/equatable-implementations/index.html b/documentation/codeedittextview/emphasis/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/flash/index.html b/documentation/codeedittextview/emphasis/flash/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/flash/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/inactive/index.html b/documentation/codeedittextview/emphasis/inactive/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/inactive/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/index.html b/documentation/codeedittextview/emphasis/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/init(range:style:flash:inactive:selectindocument:)/index.html b/documentation/codeedittextview/emphasis/init(range:style:flash:inactive:selectindocument:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/init(range:style:flash:inactive:selectindocument:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/range/index.html b/documentation/codeedittextview/emphasis/range/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/range/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/selectindocument/index.html b/documentation/codeedittextview/emphasis/selectindocument/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/selectindocument/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasis/style/index.html b/documentation/codeedittextview/emphasis/style/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasis/style/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/addemphases(_:for:)/index.html b/documentation/codeedittextview/emphasismanager/addemphases(_:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/addemphases(_:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/addemphasis(_:for:)/index.html b/documentation/codeedittextview/emphasismanager/addemphasis(_:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/addemphasis(_:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/getemphases(for:)/index.html b/documentation/codeedittextview/emphasismanager/getemphases(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/getemphases(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/index.html b/documentation/codeedittextview/emphasismanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/removeallemphases()/index.html b/documentation/codeedittextview/emphasismanager/removeallemphases()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/removeallemphases()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/removeemphases(for:)/index.html b/documentation/codeedittextview/emphasismanager/removeemphases(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/removeemphases(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/replaceemphases(_:for:)/index.html b/documentation/codeedittextview/emphasismanager/replaceemphases(_:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/replaceemphases(_:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/updateemphases(for:_:)/index.html b/documentation/codeedittextview/emphasismanager/updateemphases(for:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/updateemphases(for:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasismanager/updatelayerbackgrounds()/index.html b/documentation/codeedittextview/emphasismanager/updatelayerbackgrounds()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasismanager/updatelayerbackgrounds()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasisstyle/!=(_:_:)/index.html b/documentation/codeedittextview/emphasisstyle/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasisstyle/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasisstyle/==(_:_:)/index.html b/documentation/codeedittextview/emphasisstyle/==(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasisstyle/==(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasisstyle/equatable-implementations/index.html b/documentation/codeedittextview/emphasisstyle/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasisstyle/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasisstyle/index.html b/documentation/codeedittextview/emphasisstyle/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasisstyle/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasisstyle/outline(color:fill:)/index.html b/documentation/codeedittextview/emphasisstyle/outline(color:fill:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasisstyle/outline(color:fill:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasisstyle/standard/index.html b/documentation/codeedittextview/emphasisstyle/standard/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasisstyle/standard/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/emphasisstyle/underline(color:)/index.html b/documentation/codeedittextview/emphasisstyle/underline(color:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/emphasisstyle/underline(color:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/!=(_:_:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/+(_:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/+(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/+(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/+(_:_:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/+(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/+(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/+=(_:_:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/+=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/+=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/-(_:_:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/-(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/-(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/-=(_:_:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/-=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/-=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/additivearithmetic-implementations/index.html b/documentation/codeedittextview/horizontaledgeinsets/additivearithmetic-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/additivearithmetic-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/equatable-implementations/index.html b/documentation/codeedittextview/horizontaledgeinsets/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/horizontal/index.html b/documentation/codeedittextview/horizontaledgeinsets/horizontal/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/horizontal/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/index.html b/documentation/codeedittextview/horizontaledgeinsets/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/init(from:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/init(from:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/init(from:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/init(left:right:)/index.html b/documentation/codeedittextview/horizontaledgeinsets/init(left:right:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/init(left:right:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/left/index.html b/documentation/codeedittextview/horizontaledgeinsets/left/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/left/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/right/index.html b/documentation/codeedittextview/horizontaledgeinsets/right/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/right/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/horizontaledgeinsets/zero/index.html b/documentation/codeedittextview/horizontaledgeinsets/zero/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/horizontaledgeinsets/zero/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/index.html b/documentation/codeedittextview/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharactersdelegate/index.html b/documentation/codeedittextview/invisiblecharactersdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharactersdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyle(for:at:linerange:)/index.html b/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyle(for:at:linerange:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyle(for:at:linerange:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyleshouldclearcache()/index.html b/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyleshouldclearcache()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharactersdelegate/invisiblestyleshouldclearcache()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharactersdelegate/triggercharacters/index.html b/documentation/codeedittextview/invisiblecharactersdelegate/triggercharacters/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharactersdelegate/triggercharacters/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharacterstyle/!=(_:_:)/index.html b/documentation/codeedittextview/invisiblecharacterstyle/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharacterstyle/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharacterstyle/emphasize(color:)/index.html b/documentation/codeedittextview/invisiblecharacterstyle/emphasize(color:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharacterstyle/emphasize(color:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharacterstyle/equatable-implementations/index.html b/documentation/codeedittextview/invisiblecharacterstyle/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharacterstyle/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharacterstyle/index.html b/documentation/codeedittextview/invisiblecharacterstyle/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharacterstyle/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/invisiblecharacterstyle/replace(replacementcharacter:color:font:)/index.html b/documentation/codeedittextview/invisiblecharacterstyle/replace(replacementcharacter:color:font:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/invisiblecharacterstyle/replace(replacementcharacter:color:font:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linebreakstrategy/!=(_:_:)/index.html b/documentation/codeedittextview/linebreakstrategy/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linebreakstrategy/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linebreakstrategy/character/index.html b/documentation/codeedittextview/linebreakstrategy/character/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linebreakstrategy/character/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linebreakstrategy/equatable-implementations/index.html b/documentation/codeedittextview/linebreakstrategy/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linebreakstrategy/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linebreakstrategy/index.html b/documentation/codeedittextview/linebreakstrategy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linebreakstrategy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linebreakstrategy/word/index.html b/documentation/codeedittextview/linebreakstrategy/word/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linebreakstrategy/word/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/!=(_:_:)/index.html b/documentation/codeedittextview/lineending/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/carriagereturn/index.html b/documentation/codeedittextview/lineending/carriagereturn/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/carriagereturn/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/carriagereturnlinefeed/index.html b/documentation/codeedittextview/lineending/carriagereturnlinefeed/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/carriagereturnlinefeed/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/detectlineending(linestorage:textstorage:)/index.html b/documentation/codeedittextview/lineending/detectlineending(linestorage:textstorage:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/detectlineending(linestorage:textstorage:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/equatable-implementations/index.html b/documentation/codeedittextview/lineending/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/hash(into:)/index.html b/documentation/codeedittextview/lineending/hash(into:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/hash(into:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/hashvalue/index.html b/documentation/codeedittextview/lineending/hashvalue/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/hashvalue/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/index.html b/documentation/codeedittextview/lineending/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/init(line:)/index.html b/documentation/codeedittextview/lineending/init(line:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/init(line:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/init(rawvalue:)/index.html b/documentation/codeedittextview/lineending/init(rawvalue:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/init(rawvalue:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/length/index.html b/documentation/codeedittextview/lineending/length/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/length/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/linefeed/index.html b/documentation/codeedittextview/lineending/linefeed/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/linefeed/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/lineending/rawrepresentable-implementations/index.html b/documentation/codeedittextview/lineending/rawrepresentable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/lineending/rawrepresentable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/!=(_:_:)/index.html b/documentation/codeedittextview/linefragment/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/==(_:_:)/index.html b/documentation/codeedittextview/linefragment/==(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/==(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/contentposition/index.html b/documentation/codeedittextview/linefragment/contentposition/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/contentposition/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/contents/index.html b/documentation/codeedittextview/linefragment/contents/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/contents/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/descent/index.html b/documentation/codeedittextview/linefragment/descent/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/descent/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/documentrange/index.html b/documentation/codeedittextview/linefragment/documentrange/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/documentrange/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/equatable-implementations/index.html b/documentation/codeedittextview/linefragment/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/!=(_:_:)/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/content/!=(_:_:)/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/content/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/content/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/content/attachment(attachment:)/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/content/attachment(attachment:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/content/attachment(attachment:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/content/equatable-implementations/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/content/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/content/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/content/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/content/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/content/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/content/text(line:)/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/content/text(line:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/content/text(line:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/data/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/data/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/data/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/equatable-implementations/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/length/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/length/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/length/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/fragmentcontent/width/index.html b/documentation/codeedittextview/linefragment/fragmentcontent/width/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/fragmentcontent/width/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/height/index.html b/documentation/codeedittextview/linefragment/height/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/height/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/heightdifference/index.html b/documentation/codeedittextview/linefragment/heightdifference/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/heightdifference/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/id/index.html b/documentation/codeedittextview/linefragment/id/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/id/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/index.html b/documentation/codeedittextview/linefragment/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/scaledheight/index.html b/documentation/codeedittextview/linefragment/scaledheight/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/scaledheight/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragment/width/index.html b/documentation/codeedittextview/linefragment/width/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragment/width/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentrenderer/draw(linefragment:in:ypos:)/index.html b/documentation/codeedittextview/linefragmentrenderer/draw(linefragment:in:ypos:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentrenderer/draw(linefragment:in:ypos:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentrenderer/index.html b/documentation/codeedittextview/linefragmentrenderer/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentrenderer/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentrenderer/init(textstorage:invisiblecharacterdelegate:)/index.html b/documentation/codeedittextview/linefragmentrenderer/init(textstorage:invisiblecharacterdelegate:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentrenderer/init(textstorage:invisiblecharacterdelegate:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/draw(_:)/index.html b/documentation/codeedittextview/linefragmentview/draw(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/draw(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/hittest(_:)/index.html b/documentation/codeedittextview/linefragmentview/hittest(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/hittest(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/index.html b/documentation/codeedittextview/linefragmentview/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/init(coder:)/index.html b/documentation/codeedittextview/linefragmentview/init(coder:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/init(coder:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/init(frame:)/index.html b/documentation/codeedittextview/linefragmentview/init(frame:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/init(frame:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/isflipped/index.html b/documentation/codeedittextview/linefragmentview/isflipped/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/isflipped/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/isopaque/index.html b/documentation/codeedittextview/linefragmentview/isopaque/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/isopaque/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/linefragment/index.html b/documentation/codeedittextview/linefragmentview/linefragment/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/linefragment/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/prepareforreuse()/index.html b/documentation/codeedittextview/linefragmentview/prepareforreuse()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/prepareforreuse()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/renderer/index.html b/documentation/codeedittextview/linefragmentview/renderer/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/renderer/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/linefragmentview/setlinefragment(_:fragmentrange:renderer:)/index.html b/documentation/codeedittextview/linefragmentview/setlinefragment(_:fragmentrange:renderer:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/linefragmentview/setlinefragment(_:fragmentrange:renderer:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/markedranges/index.html b/documentation/codeedittextview/markedranges/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/markedranges/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/multistoragedelegate/adddelegate(_:)/index.html b/documentation/codeedittextview/multistoragedelegate/adddelegate(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/multistoragedelegate/adddelegate(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/multistoragedelegate/index.html b/documentation/codeedittextview/multistoragedelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/multistoragedelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/multistoragedelegate/removedelegate(_:)/index.html b/documentation/codeedittextview/multistoragedelegate/removedelegate(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/multistoragedelegate/removedelegate(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/multistoragedelegate/textstorage(_:didprocessediting:range:changeinlength:)/index.html b/documentation/codeedittextview/multistoragedelegate/textstorage(_:didprocessediting:range:changeinlength:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/multistoragedelegate/textstorage(_:didprocessediting:range:changeinlength:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/multistoragedelegate/textstorage(_:willprocessediting:range:changeinlength:)/index.html b/documentation/codeedittextview/multistoragedelegate/textstorage(_:willprocessediting:range:changeinlength:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/multistoragedelegate/textstorage(_:willprocessediting:range:changeinlength:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachment/attachmentaction()-87rcy/index.html b/documentation/codeedittextview/textattachment/attachmentaction()-87rcy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachment/attachmentaction()-87rcy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachment/attachmentaction()/index.html b/documentation/codeedittextview/textattachment/attachmentaction()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachment/attachmentaction()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachment/draw(in:rect:)/index.html b/documentation/codeedittextview/textattachment/draw(in:rect:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachment/draw(in:rect:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachment/index.html b/documentation/codeedittextview/textattachment/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachment/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachment/isselected/index.html b/documentation/codeedittextview/textattachment/isselected/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachment/isselected/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachment/width/index.html b/documentation/codeedittextview/textattachment/width/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachment/width/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentaction/discard/index.html b/documentation/codeedittextview/textattachmentaction/discard/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentaction/discard/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentaction/index.html b/documentation/codeedittextview/textattachmentaction/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentaction/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentaction/none/index.html b/documentation/codeedittextview/textattachmentaction/none/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentaction/none/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentaction/replace(text:)/index.html b/documentation/codeedittextview/textattachmentaction/replace(text:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentaction/replace(text:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanager/add(_:for:)/index.html b/documentation/codeedittextview/textattachmentmanager/add(_:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanager/add(_:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanager/delegate/index.html b/documentation/codeedittextview/textattachmentmanager/delegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanager/delegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanager/getattachmentsoverlapping(_:)/index.html b/documentation/codeedittextview/textattachmentmanager/getattachmentsoverlapping(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanager/getattachmentsoverlapping(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanager/getattachmentsstartingin(_:)/index.html b/documentation/codeedittextview/textattachmentmanager/getattachmentsstartingin(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanager/getattachmentsstartingin(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanager/index.html b/documentation/codeedittextview/textattachmentmanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanager/remove(atoffset:)/index.html b/documentation/codeedittextview/textattachmentmanager/remove(atoffset:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanager/remove(atoffset:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanagerdelegate/index.html b/documentation/codeedittextview/textattachmentmanagerdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanagerdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidadd(_:for:)/index.html b/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidadd(_:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidadd(_:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidremove(_:for:)/index.html b/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidremove(_:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textattachmentmanagerdelegate/textattachmentdidremove(_:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/attachments/index.html b/documentation/codeedittextview/textlayoutmanager/attachments/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/attachments/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/characterrect(in:for:)/index.html b/documentation/codeedittextview/textlayoutmanager/characterrect(in:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/characterrect(in:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/characterxposition(in:for:)/index.html b/documentation/codeedittextview/textlayoutmanager/characterxposition(in:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/characterxposition(in:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/delegate/index.html b/documentation/codeedittextview/textlayoutmanager/delegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/delegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/detectedlineending/index.html b/documentation/codeedittextview/textlayoutmanager/detectedlineending/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/detectedlineending/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/determinevisibleposition(for:)/index.html b/documentation/codeedittextview/textlayoutmanager/determinevisibleposition(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/determinevisibleposition(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/edgeinsets/index.html b/documentation/codeedittextview/textlayoutmanager/edgeinsets/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/edgeinsets/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/estimatedheight()/index.html b/documentation/codeedittextview/textlayoutmanager/estimatedheight()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/estimatedheight()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/estimatedwidth()/index.html b/documentation/codeedittextview/textlayoutmanager/estimatedwidth()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/estimatedwidth()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/estimatelineheight()/index.html b/documentation/codeedittextview/textlayoutmanager/estimatelineheight()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/estimatelineheight()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/index.html b/documentation/codeedittextview/textlayoutmanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:)/index.html b/documentation/codeedittextview/textlayoutmanager/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrange(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrange(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrange(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrect(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrect(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/invalidatelayoutforrect(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/invisiblecharacterdelegate/index.html b/documentation/codeedittextview/textlayoutmanager/invisiblecharacterdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/invisiblecharacterdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/isintransaction/index.html b/documentation/codeedittextview/textlayoutmanager/isintransaction/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/isintransaction/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/layoutlines(in:)/index.html b/documentation/codeedittextview/textlayoutmanager/layoutlines(in:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/layoutlines(in:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/linebreakstrategy/index.html b/documentation/codeedittextview/textlayoutmanager/linebreakstrategy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/linebreakstrategy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/linecount/index.html b/documentation/codeedittextview/textlayoutmanager/linecount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/linecount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/lineheightmultiplier/index.html b/documentation/codeedittextview/textlayoutmanager/lineheightmultiplier/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/lineheightmultiplier/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/linesinrange(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/linesinrange(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/linesinrange(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/linesstartingat(_:until:)/index.html b/documentation/codeedittextview/textlayoutmanager/linesstartingat(_:until:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/linesstartingat(_:until:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/linestorage/index.html b/documentation/codeedittextview/textlayoutmanager/linestorage/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/linestorage/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/maxlinelayoutwidth/index.html b/documentation/codeedittextview/textlayoutmanager/maxlinelayoutwidth/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/maxlinelayoutwidth/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/nstextstoragedelegate-implementations/index.html b/documentation/codeedittextview/textlayoutmanager/nstextstoragedelegate-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/nstextstoragedelegate-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/allsatisfy(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/allsatisfy(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/allsatisfy(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5uuh9/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5uuh9/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5uuh9/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5x9rx/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5x9rx/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/compactmap(_:)-5x9rx/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/compare(_:_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/compare(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/compare(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/contains(where:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/contains(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/contains(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/count(where:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/count(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/count(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/drop(while:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/drop(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/drop(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/dropfirst(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/dropfirst(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/dropfirst(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/droplast(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/droplast(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/droplast(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/elements/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/elements/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/elements/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/elementsequal(_:by:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/elementsequal(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/elementsequal(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/enumerated()/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/enumerated()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/enumerated()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/filter(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/filter(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/filter(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/first(where:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/first(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/first(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-28gsc/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-28gsc/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-28gsc/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-3fyy7/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-3fyy7/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-3fyy7/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-5tpzt/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-5tpzt/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-5tpzt/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-73i4d/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-73i4d/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/flatmap(_:)-73i4d/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/foreach(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/foreach(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/foreach(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/formatted(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/formatted(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/formatted(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazy/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazysequenceprotocol-implementations/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazysequenceprotocol-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/lazysequenceprotocol-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/lexicographicallyprecedes(_:by:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/lexicographicallyprecedes(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/lexicographicallyprecedes(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/makeiterator()/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/makeiterator()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/makeiterator()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-5l7nx/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-5l7nx/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-5l7nx/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-6xfr2/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-6xfr2/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/map(_:)-6xfr2/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/max(by:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/max(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/max(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/min(by:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/min(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/min(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/next()/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/next()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/next()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(while:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/prefix(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/publisher/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/publisher/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/publisher/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(_:_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(into:_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(into:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/reduce(into:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/reversed()/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/reversed()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/reversed()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/sequence-implementations/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sequence-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sequence-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled()/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled(using:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled(using:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/shuffled(using:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(by:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-4zta4/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-4zta4/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-4zta4/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-8vhlv/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-8vhlv/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/sorted(using:)-8vhlv/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/starts(with:by:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/starts(with:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/starts(with:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/suffix(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/suffix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/suffix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/underestimatedcount/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/underestimatedcount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/underestimatedcount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rangeiterator/withcontiguousstorageifavailable(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rangeiterator/withcontiguousstorageifavailable(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rangeiterator/withcontiguousstorageifavailable(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rectforoffset(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/rectforoffset(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rectforoffset(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/rectsfor(range:)/index.html b/documentation/codeedittextview/textlayoutmanager/rectsfor(range:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/rectsfor(range:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/renderdelegate/index.html b/documentation/codeedittextview/textlayoutmanager/renderdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/renderdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/roundedpathforrange(_:cornerradius:)/index.html b/documentation/codeedittextview/textlayoutmanager/roundedpathforrange(_:cornerradius:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/roundedpathforrange(_:cornerradius:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/setneedslayout()/index.html b/documentation/codeedittextview/textlayoutmanager/setneedslayout()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/setneedslayout()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/textlineforindex(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/textlineforindex(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/textlineforindex(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/textlineforoffset(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/textlineforoffset(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/textlineforoffset(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/textlineforposition(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/textlineforposition(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/textlineforposition(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/textoffsetatpoint(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/textoffsetatpoint(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/textoffsetatpoint(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/textstorage(_:didprocessediting:range:changeinlength:)/index.html b/documentation/codeedittextview/textlayoutmanager/textstorage(_:didprocessediting:range:changeinlength:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/textstorage(_:didprocessediting:range:changeinlength:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/verticallayoutpadding/index.html b/documentation/codeedittextview/textlayoutmanager/verticallayoutpadding/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/verticallayoutpadding/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/visiblelines()/index.html b/documentation/codeedittextview/textlayoutmanager/visiblelines()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/visiblelines()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/wraplines/index.html b/documentation/codeedittextview/textlayoutmanager/wraplines/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/wraplines/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/wraplineswidth/index.html b/documentation/codeedittextview/textlayoutmanager/wraplineswidth/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/wraplineswidth/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/allsatisfy(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/allsatisfy(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/allsatisfy(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-5wc6b/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-5wc6b/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-5wc6b/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-xtl4/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-xtl4/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compactmap(_:)-xtl4/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compare(_:_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compare(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/compare(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/contains(where:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/contains(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/contains(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/count(where:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/count(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/count(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/drop(while:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/drop(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/drop(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/dropfirst(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/dropfirst(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/dropfirst(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/droplast(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/droplast(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/droplast(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elements/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elements/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elements/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elementsequal(_:by:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elementsequal(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/elementsequal(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/enumerated()/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/enumerated()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/enumerated()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/filter(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/filter(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/filter(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/first(where:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/first(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/first(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-65ga0/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-65ga0/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-65ga0/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8c3o2/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8c3o2/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8c3o2/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8cio9/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8cio9/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-8cio9/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-fcq1/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-fcq1/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/flatmap(_:)-fcq1/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/foreach(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/foreach(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/foreach(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/formatted(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/formatted(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/formatted(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazy/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazysequenceprotocol-implementations/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazysequenceprotocol-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lazysequenceprotocol-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lexicographicallyprecedes(_:by:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lexicographicallyprecedes(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/lexicographicallyprecedes(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/makeiterator()/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/makeiterator()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/makeiterator()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-3fj1z/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-3fj1z/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-3fj1z/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-4hd6e/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-4hd6e/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/map(_:)-4hd6e/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/max(by:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/max(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/max(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/min(by:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/min(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/min(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/next()/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/next()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/next()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(while:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/prefix(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/publisher/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/publisher/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/publisher/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(_:_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(into:_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(into:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reduce(into:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reversed()/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reversed()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/reversed()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sequence-implementations/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sequence-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sequence-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled()/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled(using:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled(using:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/shuffled(using:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(by:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-44git/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-44git/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-44git/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-9j2ea/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-9j2ea/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/sorted(using:)-9j2ea/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/starts(with:by:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/starts(with:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/starts(with:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/suffix(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/suffix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/suffix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/underestimatedcount/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/underestimatedcount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/underestimatedcount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanager/ypositioniterator/withcontiguousstorageifavailable(_:)/index.html b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/withcontiguousstorageifavailable(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanager/ypositioniterator/withcontiguousstorageifavailable(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerdelegate/index.html b/documentation/codeedittextview/textlayoutmanagerdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagerheightdidupdate(newheight:)/index.html b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagerheightdidupdate(newheight:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagerheightdidupdate(newheight:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagermaxwidthdidchange(newwidth:)/index.html b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagermaxwidthdidchange(newwidth:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagermaxwidthdidchange(newwidth:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagertypingattributes()/index.html b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagertypingattributes()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanagertypingattributes()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanageryadjustment(_:)/index.html b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanageryadjustment(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerdelegate/layoutmanageryadjustment(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerdelegate/textviewportsize()/index.html b/documentation/codeedittextview/textlayoutmanagerdelegate/textviewportsize()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerdelegate/textviewportsize()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerdelegate/visiblerect/index.html b/documentation/codeedittextview/textlayoutmanagerdelegate/visiblerect/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerdelegate/visiblerect/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)-c7ta/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)-c7ta/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)-c7ta/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/characterxposition(in:for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()-1xchi/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()-1xchi/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()-1xchi/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/estimatedlineheight()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)-4crw7/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)-4crw7/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)-4crw7/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/linefragmentview(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)-ycsi/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)/index.html b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlayoutmanagerrenderdelegate/preparefordisplay(textline:displaydata:range:stringref:markedranges:attachments:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/!=(_:_:)/index.html b/documentation/codeedittextview/textline/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/==(_:_:)/index.html b/documentation/codeedittextview/textline/==(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/==(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/displaydata/breakstrategy/index.html b/documentation/codeedittextview/textline/displaydata/breakstrategy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/displaydata/breakstrategy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/displaydata/estimatedlineheight/index.html b/documentation/codeedittextview/textline/displaydata/estimatedlineheight/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/displaydata/estimatedlineheight/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/displaydata/index.html b/documentation/codeedittextview/textline/displaydata/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/displaydata/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/displaydata/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:)/index.html b/documentation/codeedittextview/textline/displaydata/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/displaydata/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/displaydata/lineheightmultiplier/index.html b/documentation/codeedittextview/textline/displaydata/lineheightmultiplier/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/displaydata/lineheightmultiplier/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/displaydata/maxwidth/index.html b/documentation/codeedittextview/textline/displaydata/maxwidth/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/displaydata/maxwidth/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/equatable-implementations/index.html b/documentation/codeedittextview/textline/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/id/index.html b/documentation/codeedittextview/textline/id/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/id/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/index.html b/documentation/codeedittextview/textline/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/linefragments/index.html b/documentation/codeedittextview/textline/linefragments/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/linefragments/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/preparefordisplay(displaydata:range:stringref:markedranges:attachments:)/index.html b/documentation/codeedittextview/textline/preparefordisplay(displaydata:range:stringref:markedranges:attachments:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/preparefordisplay(displaydata:range:stringref:markedranges:attachments:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textline/setneedslayout()/index.html b/documentation/codeedittextview/textline/setneedslayout()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textline/setneedslayout()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/allsatisfy(_:)/index.html b/documentation/codeedittextview/textlinestorage/allsatisfy(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/allsatisfy(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/build(from:estimatedlineheight:)/index.html b/documentation/codeedittextview/textlinestorage/build(from:estimatedlineheight:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/build(from:estimatedlineheight:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/builditem/data/index.html b/documentation/codeedittextview/textlinestorage/builditem/data/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/builditem/data/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/builditem/height/index.html b/documentation/codeedittextview/textlinestorage/builditem/height/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/builditem/height/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/builditem/index.html b/documentation/codeedittextview/textlinestorage/builditem/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/builditem/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/builditem/length/index.html b/documentation/codeedittextview/textlinestorage/builditem/length/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/builditem/length/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/compactmap(_:)-1khzu/index.html b/documentation/codeedittextview/textlinestorage/compactmap(_:)-1khzu/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/compactmap(_:)-1khzu/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/compactmap(_:)-88mrr/index.html b/documentation/codeedittextview/textlinestorage/compactmap(_:)-88mrr/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/compactmap(_:)-88mrr/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/compare(_:_:)/index.html b/documentation/codeedittextview/textlinestorage/compare(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/compare(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/contains(where:)/index.html b/documentation/codeedittextview/textlinestorage/contains(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/contains(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/count(where:)/index.html b/documentation/codeedittextview/textlinestorage/count(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/count(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/count/index.html b/documentation/codeedittextview/textlinestorage/count/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/count/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/delete(lineat:)/index.html b/documentation/codeedittextview/textlinestorage/delete(lineat:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/delete(lineat:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/drop(while:)/index.html b/documentation/codeedittextview/textlinestorage/drop(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/drop(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/dropfirst(_:)/index.html b/documentation/codeedittextview/textlinestorage/dropfirst(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/dropfirst(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/droplast(_:)/index.html b/documentation/codeedittextview/textlinestorage/droplast(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/droplast(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/elements/index.html b/documentation/codeedittextview/textlinestorage/elements/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/elements/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/elementsequal(_:by:)/index.html b/documentation/codeedittextview/textlinestorage/elementsequal(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/elementsequal(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/enumerated()/index.html b/documentation/codeedittextview/textlinestorage/enumerated()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/enumerated()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/filter(_:)/index.html b/documentation/codeedittextview/textlinestorage/filter(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/filter(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/first(where:)/index.html b/documentation/codeedittextview/textlinestorage/first(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/first(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/first/index.html b/documentation/codeedittextview/textlinestorage/first/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/first/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/flatmap(_:)-2z47t/index.html b/documentation/codeedittextview/textlinestorage/flatmap(_:)-2z47t/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/flatmap(_:)-2z47t/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/flatmap(_:)-4p606/index.html b/documentation/codeedittextview/textlinestorage/flatmap(_:)-4p606/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/flatmap(_:)-4p606/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/flatmap(_:)-56br0/index.html b/documentation/codeedittextview/textlinestorage/flatmap(_:)-56br0/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/flatmap(_:)-56br0/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/flatmap(_:)-6b63g/index.html b/documentation/codeedittextview/textlinestorage/flatmap(_:)-6b63g/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/flatmap(_:)-6b63g/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/foreach(_:)/index.html b/documentation/codeedittextview/textlinestorage/foreach(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/foreach(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/formatted(_:)/index.html b/documentation/codeedittextview/textlinestorage/formatted(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/formatted(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/getline(atindex:)/index.html b/documentation/codeedittextview/textlinestorage/getline(atindex:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/getline(atindex:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/getline(atoffset:)/index.html b/documentation/codeedittextview/textlinestorage/getline(atoffset:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/getline(atoffset:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/getline(atposition:)/index.html b/documentation/codeedittextview/textlinestorage/getline(atposition:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/getline(atposition:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/height/index.html b/documentation/codeedittextview/textlinestorage/height/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/height/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/index.html b/documentation/codeedittextview/textlinestorage/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/init()/index.html b/documentation/codeedittextview/textlinestorage/init()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/init()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/insert(line:atoffset:length:height:)/index.html b/documentation/codeedittextview/textlinestorage/insert(line:atoffset:length:height:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/insert(line:atoffset:length:height:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/isempty/index.html b/documentation/codeedittextview/textlinestorage/isempty/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/isempty/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/last/index.html b/documentation/codeedittextview/textlinestorage/last/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/last/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/lazy/index.html b/documentation/codeedittextview/textlinestorage/lazy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/lazy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/lazysequenceprotocol-implementations/index.html b/documentation/codeedittextview/textlinestorage/lazysequenceprotocol-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/lazysequenceprotocol-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/length/index.html b/documentation/codeedittextview/textlinestorage/length/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/length/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/lexicographicallyprecedes(_:by:)/index.html b/documentation/codeedittextview/textlinestorage/lexicographicallyprecedes(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/lexicographicallyprecedes(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/linesinrange(_:)/index.html b/documentation/codeedittextview/textlinestorage/linesinrange(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/linesinrange(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/linesstartingat(_:until:)/index.html b/documentation/codeedittextview/textlinestorage/linesstartingat(_:until:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/linesstartingat(_:until:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/makeiterator()/index.html b/documentation/codeedittextview/textlinestorage/makeiterator()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/makeiterator()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/map(_:)-2e7y1/index.html b/documentation/codeedittextview/textlinestorage/map(_:)-2e7y1/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/map(_:)-2e7y1/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/map(_:)-zff/index.html b/documentation/codeedittextview/textlinestorage/map(_:)-zff/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/map(_:)-zff/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/max(by:)/index.html b/documentation/codeedittextview/textlinestorage/max(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/max(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/min(by:)/index.html b/documentation/codeedittextview/textlinestorage/min(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/min(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/prefix(_:)/index.html b/documentation/codeedittextview/textlinestorage/prefix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/prefix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/prefix(while:)/index.html b/documentation/codeedittextview/textlinestorage/prefix(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/prefix(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/publisher/index.html b/documentation/codeedittextview/textlinestorage/publisher/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/publisher/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/reduce(_:_:)/index.html b/documentation/codeedittextview/textlinestorage/reduce(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/reduce(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/reduce(into:_:)/index.html b/documentation/codeedittextview/textlinestorage/reduce(into:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/reduce(into:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/removeall()/index.html b/documentation/codeedittextview/textlinestorage/removeall()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/removeall()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/reversed()/index.html b/documentation/codeedittextview/textlinestorage/reversed()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/reversed()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/sequence-implementations/index.html b/documentation/codeedittextview/textlinestorage/sequence-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/sequence-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/shuffled()/index.html b/documentation/codeedittextview/textlinestorage/shuffled()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/shuffled()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/shuffled(using:)/index.html b/documentation/codeedittextview/textlinestorage/shuffled(using:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/shuffled(using:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/sorted(by:)/index.html b/documentation/codeedittextview/textlinestorage/sorted(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/sorted(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/sorted(using:)-4776o/index.html b/documentation/codeedittextview/textlinestorage/sorted(using:)-4776o/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/sorted(using:)-4776o/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/sorted(using:)-70px/index.html b/documentation/codeedittextview/textlinestorage/sorted(using:)-70px/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/sorted(using:)-70px/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html b/documentation/codeedittextview/textlinestorage/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/starts(with:by:)/index.html b/documentation/codeedittextview/textlinestorage/starts(with:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/starts(with:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/suffix(_:)/index.html b/documentation/codeedittextview/textlinestorage/suffix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/suffix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlineposition/data/index.html b/documentation/codeedittextview/textlinestorage/textlineposition/data/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlineposition/data/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlineposition/height/index.html b/documentation/codeedittextview/textlinestorage/textlineposition/height/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlineposition/height/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlineposition/index.html b/documentation/codeedittextview/textlinestorage/textlineposition/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlineposition/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlineposition/index/index.html b/documentation/codeedittextview/textlinestorage/textlineposition/index/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlineposition/index/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlineposition/range/index.html b/documentation/codeedittextview/textlinestorage/textlineposition/range/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlineposition/range/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlineposition/ypos/index.html b/documentation/codeedittextview/textlinestorage/textlineposition/ypos/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlineposition/ypos/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageiterator/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageiterator/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageiterator/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageiterator/next()/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageiterator/next()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageiterator/next()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/allsatisfy(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/allsatisfy(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/allsatisfy(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-75bna/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-75bna/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-75bna/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-jq70/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-jq70/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compactmap(_:)-jq70/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compare(_:_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compare(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/compare(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/contains(where:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/contains(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/contains(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/count(where:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/count(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/count(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/drop(while:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/drop(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/drop(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/dropfirst(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/dropfirst(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/dropfirst(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/droplast(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/droplast(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/droplast(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elements/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elements/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elements/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elementsequal(_:by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elementsequal(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/elementsequal(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/enumerated()/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/enumerated()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/enumerated()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/filter(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/filter(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/filter(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/first(where:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/first(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/first(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-22h6s/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-22h6s/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-22h6s/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-3w8yl/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-3w8yl/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-3w8yl/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-77eog/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-77eog/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-77eog/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-8j0nw/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-8j0nw/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/flatmap(_:)-8j0nw/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/foreach(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/foreach(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/foreach(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/formatted(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/formatted(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/formatted(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazy/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazysequenceprotocol-implementations/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazysequenceprotocol-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lazysequenceprotocol-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lexicographicallyprecedes(_:by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lexicographicallyprecedes(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/lexicographicallyprecedes(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/makeiterator()/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/makeiterator()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/makeiterator()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-2b7rq/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-2b7rq/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-2b7rq/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-5h1kj/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-5h1kj/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/map(_:)-5h1kj/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/max(by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/max(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/max(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/min(by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/min(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/min(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/next()/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/next()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/next()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(while:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/prefix(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/publisher/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/publisher/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/publisher/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(_:_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(into:_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(into:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reduce(into:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reversed()/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reversed()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/reversed()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sequence-implementations/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sequence-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sequence-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled()/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled(using:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled(using:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/shuffled(using:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-5pb9/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-5pb9/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-5pb9/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-73724/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-73724/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/sorted(using:)-73724/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/starts(with:by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/starts(with:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/starts(with:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/suffix(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/suffix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/suffix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/underestimatedcount/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/underestimatedcount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/underestimatedcount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/withcontiguousstorageifavailable(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/withcontiguousstorageifavailable(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestoragerangeiterator/withcontiguousstorageifavailable(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/allsatisfy(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/allsatisfy(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/allsatisfy(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-1cc9t/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-1cc9t/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-1cc9t/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-9fi1l/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-9fi1l/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compactmap(_:)-9fi1l/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compare(_:_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compare(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/compare(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/contains(where:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/contains(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/contains(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/count(where:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/count(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/count(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/drop(while:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/drop(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/drop(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/dropfirst(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/dropfirst(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/dropfirst(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/droplast(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/droplast(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/droplast(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elements/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elements/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elements/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elementsequal(_:by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elementsequal(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/elementsequal(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/enumerated()/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/enumerated()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/enumerated()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/filter(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/filter(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/filter(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/first(where:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/first(where:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/first(where:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-1iizf/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-1iizf/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-1iizf/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-3buba/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-3buba/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-3buba/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-8ow0q/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-8ow0q/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-8ow0q/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-dsr9/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-dsr9/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/flatmap(_:)-dsr9/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/foreach(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/foreach(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/foreach(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/formatted(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/formatted(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/formatted(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazy/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazysequenceprotocol-implementations/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazysequenceprotocol-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lazysequenceprotocol-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lexicographicallyprecedes(_:by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lexicographicallyprecedes(_:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/lexicographicallyprecedes(_:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/makeiterator()/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/makeiterator()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/makeiterator()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-131bq/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-131bq/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-131bq/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-1ioz9/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-1ioz9/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/map(_:)-1ioz9/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/max(by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/max(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/max(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/min(by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/min(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/min(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/next()/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/next()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/next()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(while:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(while:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/prefix(while:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/publisher/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/publisher/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/publisher/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(_:_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(into:_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(into:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reduce(into:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reversed()/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reversed()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/reversed()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sequence-implementations/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sequence-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sequence-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled()/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled(using:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled(using:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/shuffled(using:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-4zxqp/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-4zxqp/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-4zxqp/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-rito/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-rito/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/sorted(using:)-rito/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/split(maxsplits:omittingemptysubsequences:whereseparator:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/starts(with:by:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/starts(with:by:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/starts(with:by:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/suffix(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/suffix(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/suffix(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/underestimatedcount/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/underestimatedcount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/underestimatedcount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/withcontiguousstorageifavailable(_:)/index.html b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/withcontiguousstorageifavailable(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/textlinestorageyiterator/withcontiguousstorageifavailable(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/underestimatedcount/index.html b/documentation/codeedittextview/textlinestorage/underestimatedcount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/underestimatedcount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/update(atoffset:delta:deltaheight:)/index.html b/documentation/codeedittextview/textlinestorage/update(atoffset:delta:deltaheight:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/update(atoffset:delta:deltaheight:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textlinestorage/withcontiguousstorageifavailable(_:)/index.html b/documentation/codeedittextview/textlinestorage/withcontiguousstorageifavailable(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textlinestorage/withcontiguousstorageifavailable(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/addselectedrange(_:)/index.html b/documentation/codeedittextview/textselectionmanager/addselectedrange(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/addselectedrange(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/!=(_:_:)/index.html b/documentation/codeedittextview/textselectionmanager/destination/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/character/index.html b/documentation/codeedittextview/textselectionmanager/destination/character/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/character/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/document/index.html b/documentation/codeedittextview/textselectionmanager/destination/document/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/document/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/equatable-implementations/index.html b/documentation/codeedittextview/textselectionmanager/destination/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/index.html b/documentation/codeedittextview/textselectionmanager/destination/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/line/index.html b/documentation/codeedittextview/textselectionmanager/destination/line/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/line/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/page/index.html b/documentation/codeedittextview/textselectionmanager/destination/page/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/page/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/visualline/index.html b/documentation/codeedittextview/textselectionmanager/destination/visualline/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/visualline/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/destination/word/index.html b/documentation/codeedittextview/textselectionmanager/destination/word/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/destination/word/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/didreplacecharacters(in:replacementlength:)/index.html b/documentation/codeedittextview/textselectionmanager/didreplacecharacters(in:replacementlength:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/didreplacecharacters(in:replacementlength:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/direction/!=(_:_:)/index.html b/documentation/codeedittextview/textselectionmanager/direction/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/direction/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/direction/backward/index.html b/documentation/codeedittextview/textselectionmanager/direction/backward/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/direction/backward/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/direction/down/index.html b/documentation/codeedittextview/textselectionmanager/direction/down/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/direction/down/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/direction/equatable-implementations/index.html b/documentation/codeedittextview/textselectionmanager/direction/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/direction/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/direction/forward/index.html b/documentation/codeedittextview/textselectionmanager/direction/forward/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/direction/forward/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/direction/index.html b/documentation/codeedittextview/textselectionmanager/direction/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/direction/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/direction/up/index.html b/documentation/codeedittextview/textselectionmanager/direction/up/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/direction/up/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/drawselections(in:)/index.html b/documentation/codeedittextview/textselectionmanager/drawselections(in:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/drawselections(in:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/edgeinsets/index.html b/documentation/codeedittextview/textselectionmanager/edgeinsets/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/edgeinsets/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/highlightselectedline/index.html b/documentation/codeedittextview/textselectionmanager/highlightselectedline/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/highlightselectedline/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/index.html b/documentation/codeedittextview/textselectionmanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:)/index.html b/documentation/codeedittextview/textselectionmanager/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/insertionpointcolor/index.html b/documentation/codeedittextview/textselectionmanager/insertionpointcolor/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/insertionpointcolor/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/moveselections(direction:destination:modifyselection:)/index.html b/documentation/codeedittextview/textselectionmanager/moveselections(direction:destination:modifyselection:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/moveselections(direction:destination:modifyselection:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/notifyafteredit(force:)/index.html b/documentation/codeedittextview/textselectionmanager/notifyafteredit(force:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/notifyafteredit(force:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:)/index.html b/documentation/codeedittextview/textselectionmanager/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/selectedlinebackgroundcolor/index.html b/documentation/codeedittextview/textselectionmanager/selectedlinebackgroundcolor/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/selectedlinebackgroundcolor/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/selectionbackgroundcolor/index.html b/documentation/codeedittextview/textselectionmanager/selectionbackgroundcolor/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/selectionbackgroundcolor/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/selectionchangednotification/index.html b/documentation/codeedittextview/textselectionmanager/selectionchangednotification/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/selectionchangednotification/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/setselectedrange(_:)/index.html b/documentation/codeedittextview/textselectionmanager/setselectedrange(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/setselectedrange(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/setselectedranges(_:)/index.html b/documentation/codeedittextview/textselectionmanager/setselectedranges(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/setselectedranges(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/textselection/!=(_:_:)/index.html b/documentation/codeedittextview/textselectionmanager/textselection/!=(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/textselection/!=(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/textselection/==(_:_:)/index.html b/documentation/codeedittextview/textselectionmanager/textselection/==(_:_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/textselection/==(_:_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/textselection/equatable-implementations/index.html b/documentation/codeedittextview/textselectionmanager/textselection/equatable-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/textselection/equatable-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/textselection/hash(into:)/index.html b/documentation/codeedittextview/textselectionmanager/textselection/hash(into:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/textselection/hash(into:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/textselection/index.html b/documentation/codeedittextview/textselectionmanager/textselection/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/textselection/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/textselection/range/index.html b/documentation/codeedittextview/textselectionmanager/textselection/range/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/textselection/range/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/textselections/index.html b/documentation/codeedittextview/textselectionmanager/textselections/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/textselections/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanager/usesystemcursor/index.html b/documentation/codeedittextview/textselectionmanager/usesystemcursor/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanager/usesystemcursor/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanagerdelegate/estimatedlineheight()/index.html b/documentation/codeedittextview/textselectionmanagerdelegate/estimatedlineheight()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanagerdelegate/estimatedlineheight()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanagerdelegate/index.html b/documentation/codeedittextview/textselectionmanagerdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanagerdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanagerdelegate/setneedsdisplay()/index.html b/documentation/codeedittextview/textselectionmanagerdelegate/setneedsdisplay()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanagerdelegate/setneedsdisplay()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textselectionmanagerdelegate/visibletextrange/index.html b/documentation/codeedittextview/textselectionmanagerdelegate/visibletextrange/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textselectionmanagerdelegate/visibletextrange/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/acceptsfirstmouse(for:)/index.html b/documentation/codeedittextview/textview/acceptsfirstmouse(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/acceptsfirstmouse(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/acceptsfirstresponder/index.html b/documentation/codeedittextview/textview/acceptsfirstresponder/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/acceptsfirstresponder/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityframe(for:)/index.html b/documentation/codeedittextview/textview/accessibilityframe(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityframe(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityinsertionpointlinenumber()/index.html b/documentation/codeedittextview/textview/accessibilityinsertionpointlinenumber()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityinsertionpointlinenumber()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilitylabel()/index.html b/documentation/codeedittextview/textview/accessibilitylabel()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilitylabel()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityline(for:)/index.html b/documentation/codeedittextview/textview/accessibilityline(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityline(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilitynumberofcharacters()/index.html b/documentation/codeedittextview/textview/accessibilitynumberofcharacters()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilitynumberofcharacters()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityrange(for:)-40q9z/index.html b/documentation/codeedittextview/textview/accessibilityrange(for:)-40q9z/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityrange(for:)-40q9z/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityrange(for:)-70nmn/index.html b/documentation/codeedittextview/textview/accessibilityrange(for:)-70nmn/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityrange(for:)-70nmn/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityrange(forline:)/index.html b/documentation/codeedittextview/textview/accessibilityrange(forline:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityrange(forline:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityrole()/index.html b/documentation/codeedittextview/textview/accessibilityrole()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityrole()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityselectedtext()/index.html b/documentation/codeedittextview/textview/accessibilityselectedtext()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityselectedtext()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityselectedtextrange()/index.html b/documentation/codeedittextview/textview/accessibilityselectedtextrange()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityselectedtextrange()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityselectedtextranges()/index.html b/documentation/codeedittextview/textview/accessibilityselectedtextranges()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityselectedtextranges()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilitystring(for:)/index.html b/documentation/codeedittextview/textview/accessibilitystring(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilitystring(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityvalue()/index.html b/documentation/codeedittextview/textview/accessibilityvalue()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityvalue()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/accessibilityvisiblecharacterrange()/index.html b/documentation/codeedittextview/textview/accessibilityvisiblecharacterrange()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/accessibilityvisiblecharacterrange()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/addstoragedelegate(_:)/index.html b/documentation/codeedittextview/textview/addstoragedelegate(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/addstoragedelegate(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/allowsundo/index.html b/documentation/codeedittextview/textview/allowsundo/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/allowsundo/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/attributedstring()/index.html b/documentation/codeedittextview/textview/attributedstring()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/attributedstring()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/attributedsubstring(forproposedrange:actualrange:)/index.html b/documentation/codeedittextview/textview/attributedsubstring(forproposedrange:actualrange:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/attributedsubstring(forproposedrange:actualrange:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/baselinedeltaforcharacter(at:)/index.html b/documentation/codeedittextview/textview/baselinedeltaforcharacter(at:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/baselinedeltaforcharacter(at:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/becomefirstresponder()/index.html b/documentation/codeedittextview/textview/becomefirstresponder()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/becomefirstresponder()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/canbecomekeyview/index.html b/documentation/codeedittextview/textview/canbecomekeyview/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/canbecomekeyview/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/characterindex(for:)/index.html b/documentation/codeedittextview/textview/characterindex(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/characterindex(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/contenttype/index.html b/documentation/codeedittextview/textview/contenttype/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/contenttype/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/copy(_:)/index.html b/documentation/codeedittextview/textview/copy(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/copy(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/cut(_:)/index.html b/documentation/codeedittextview/textview/cut(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/cut(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/defaulttypingattributes/index.html b/documentation/codeedittextview/textview/defaulttypingattributes/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/defaulttypingattributes/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/delegate/index.html b/documentation/codeedittextview/textview/delegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/delegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/delete(_:)/index.html b/documentation/codeedittextview/textview/delete(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/delete(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletebackward(_:)/index.html b/documentation/codeedittextview/textview/deletebackward(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletebackward(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletebackwardbydecomposingpreviouscharacter(_:)/index.html b/documentation/codeedittextview/textview/deletebackwardbydecomposingpreviouscharacter(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletebackwardbydecomposingpreviouscharacter(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deleteforward(_:)/index.html b/documentation/codeedittextview/textview/deleteforward(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deleteforward(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletetobeginningofline(_:)/index.html b/documentation/codeedittextview/textview/deletetobeginningofline(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletetobeginningofline(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletetobeginningofparagraph(_:)/index.html b/documentation/codeedittextview/textview/deletetobeginningofparagraph(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletetobeginningofparagraph(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletetoendofline(_:)/index.html b/documentation/codeedittextview/textview/deletetoendofline(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletetoendofline(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletetoendofparagraph(_:)/index.html b/documentation/codeedittextview/textview/deletetoendofparagraph(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletetoendofparagraph(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletewordbackward(_:)/index.html b/documentation/codeedittextview/textview/deletewordbackward(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletewordbackward(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/deletewordforward(_:)/index.html b/documentation/codeedittextview/textview/deletewordforward(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/deletewordforward(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/documentrange/index.html b/documentation/codeedittextview/textview/documentrange/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/documentrange/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/draggingentered(_:)/index.html b/documentation/codeedittextview/textview/draggingentered(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/draggingentered(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/draggingsession(_:endedat:operation:)/index.html b/documentation/codeedittextview/textview/draggingsession(_:endedat:operation:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/draggingsession(_:endedat:operation:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/draggingsession(_:movedto:)/index.html b/documentation/codeedittextview/textview/draggingsession(_:movedto:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/draggingsession(_:movedto:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/draggingsession(_:sourceoperationmaskfor:)/index.html b/documentation/codeedittextview/textview/draggingsession(_:sourceoperationmaskfor:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/draggingsession(_:sourceoperationmaskfor:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/draggingsession(_:willbeginat:)/index.html b/documentation/codeedittextview/textview/draggingsession(_:willbeginat:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/draggingsession(_:willbeginat:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/draggingupdated(_:)/index.html b/documentation/codeedittextview/textview/draggingupdated(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/draggingupdated(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/draw(_:)/index.html b/documentation/codeedittextview/textview/draw(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/draw(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/edgeinsets/index.html b/documentation/codeedittextview/textview/edgeinsets/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/edgeinsets/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/editselections(callback:)/index.html b/documentation/codeedittextview/textview/editselections(callback:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/editselections(callback:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/emphasismanager/index.html b/documentation/codeedittextview/textview/emphasismanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/emphasismanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/estimatedlineheight()/index.html b/documentation/codeedittextview/textview/estimatedlineheight()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/estimatedlineheight()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/firstrect(forcharacterrange:actualrange:)/index.html b/documentation/codeedittextview/textview/firstrect(forcharacterrange:actualrange:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/firstrect(forcharacterrange:actualrange:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/flagschanged(with:)/index.html b/documentation/codeedittextview/textview/flagschanged(with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/flagschanged(with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/font/index.html b/documentation/codeedittextview/textview/font/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/font/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/fractionofdistancethroughglyph(for:)/index.html b/documentation/codeedittextview/textview/fractionofdistancethroughglyph(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/fractionofdistancethroughglyph(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/hasmarkedtext()/index.html b/documentation/codeedittextview/textview/hasmarkedtext()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/hasmarkedtext()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/hittest(_:)/index.html b/documentation/codeedittextview/textview/hittest(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/hittest(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/index.html b/documentation/codeedittextview/textview/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/init(coder:)/index.html b/documentation/codeedittextview/textview/init(coder:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/init(coder:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:)/index.html b/documentation/codeedittextview/textview/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/insertnewline(_:)/index.html b/documentation/codeedittextview/textview/insertnewline(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/insertnewline(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/inserttab(_:)/index.html b/documentation/codeedittextview/textview/inserttab(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/inserttab(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/inserttext(_:)/index.html b/documentation/codeedittextview/textview/inserttext(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/inserttext(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/inserttext(_:replacementrange:)/index.html b/documentation/codeedittextview/textview/inserttext(_:replacementrange:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/inserttext(_:replacementrange:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/isaccessibilityelement()/index.html b/documentation/codeedittextview/textview/isaccessibilityelement()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/isaccessibilityelement()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/isaccessibilityenabled()/index.html b/documentation/codeedittextview/textview/isaccessibilityenabled()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/isaccessibilityenabled()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/isaccessibilityfocused()/index.html b/documentation/codeedittextview/textview/isaccessibilityfocused()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/isaccessibilityfocused()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/iscompatiblewithresponsivescrolling/index.html b/documentation/codeedittextview/textview/iscompatiblewithresponsivescrolling/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/iscompatiblewithresponsivescrolling/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/iseditable/index.html b/documentation/codeedittextview/textview/iseditable/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/iseditable/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/isflipped/index.html b/documentation/codeedittextview/textview/isflipped/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/isflipped/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/isselectable/index.html b/documentation/codeedittextview/textview/isselectable/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/isselectable/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/kern/index.html b/documentation/codeedittextview/textview/kern/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/kern/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/keydown(with:)/index.html b/documentation/codeedittextview/textview/keydown(with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/keydown(with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/layout()/index.html b/documentation/codeedittextview/textview/layout()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/layout()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/layoutmanager/index.html b/documentation/codeedittextview/textview/layoutmanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/layoutmanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/layoutmanagerheightdidupdate(newheight:)/index.html b/documentation/codeedittextview/textview/layoutmanagerheightdidupdate(newheight:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/layoutmanagerheightdidupdate(newheight:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/layoutmanagermaxwidthdidchange(newwidth:)/index.html b/documentation/codeedittextview/textview/layoutmanagermaxwidthdidchange(newwidth:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/layoutmanagermaxwidthdidchange(newwidth:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/layoutmanagertypingattributes()/index.html b/documentation/codeedittextview/textview/layoutmanagertypingattributes()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/layoutmanagertypingattributes()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/layoutmanageryadjustment(_:)/index.html b/documentation/codeedittextview/textview/layoutmanageryadjustment(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/layoutmanageryadjustment(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/letterspacing/index.html b/documentation/codeedittextview/textview/letterspacing/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/letterspacing/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/linebreakstrategy/index.html b/documentation/codeedittextview/textview/linebreakstrategy/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/linebreakstrategy/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/lineheight/index.html b/documentation/codeedittextview/textview/lineheight/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/lineheight/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/markedrange()/index.html b/documentation/codeedittextview/textview/markedrange()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/markedrange()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/markedtextattributes/index.html b/documentation/codeedittextview/textview/markedtextattributes/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/markedtextattributes/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/menu(for:)/index.html b/documentation/codeedittextview/textview/menu(for:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/menu(for:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/mousedown(with:)/index.html b/documentation/codeedittextview/textview/mousedown(with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/mousedown(with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/mousedragged(with:)/index.html b/documentation/codeedittextview/textview/mousedragged(with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/mousedragged(with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/mouseup(with:)/index.html b/documentation/codeedittextview/textview/mouseup(with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/mouseup(with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movedown(_:)/index.html b/documentation/codeedittextview/textview/movedown(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movedown(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movedownandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movedownandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movedownandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/moveleft(_:)/index.html b/documentation/codeedittextview/textview/moveleft(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/moveleft(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/moveleftandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/moveleftandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/moveleftandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/moveright(_:)/index.html b/documentation/codeedittextview/textview/moveright(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/moveright(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/moverightandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/moverightandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/moverightandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetobeginningofdocument(_:)/index.html b/documentation/codeedittextview/textview/movetobeginningofdocument(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetobeginningofdocument(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetobeginningofdocumentandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movetobeginningofdocumentandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetobeginningofdocumentandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetobeginningofparagraph(_:)/index.html b/documentation/codeedittextview/textview/movetobeginningofparagraph(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetobeginningofparagraph(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetobeginningofparagraphandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movetobeginningofparagraphandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetobeginningofparagraphandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetoendofdocument(_:)/index.html b/documentation/codeedittextview/textview/movetoendofdocument(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetoendofdocument(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetoendofdocumentandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movetoendofdocumentandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetoendofdocumentandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetoendofparagraph(_:)/index.html b/documentation/codeedittextview/textview/movetoendofparagraph(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetoendofparagraph(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetoendofparagraphandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movetoendofparagraphandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetoendofparagraphandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetoleftendofline(_:)/index.html b/documentation/codeedittextview/textview/movetoleftendofline(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetoleftendofline(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetoleftendoflineandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movetoleftendoflineandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetoleftendoflineandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetorightendofline(_:)/index.html b/documentation/codeedittextview/textview/movetorightendofline(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetorightendofline(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movetorightendoflineandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movetorightendoflineandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movetorightendoflineandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/moveup(_:)/index.html b/documentation/codeedittextview/textview/moveup(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/moveup(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/moveupandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/moveupandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/moveupandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movewordleft(_:)/index.html b/documentation/codeedittextview/textview/movewordleft(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movewordleft(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movewordleftandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movewordleftandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movewordleftandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movewordright(_:)/index.html b/documentation/codeedittextview/textview/movewordright(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movewordright(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/movewordrightandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/movewordrightandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/movewordrightandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/needspaneltobecomekey/index.html b/documentation/codeedittextview/textview/needspaneltobecomekey/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/needspaneltobecomekey/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/nsdraggingsource-implementations/index.html b/documentation/codeedittextview/textview/nsdraggingsource-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/nsdraggingsource-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/nstextinputclient-implementations/index.html b/documentation/codeedittextview/textview/nstextinputclient-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/nstextinputclient-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/overscrollamount/index.html b/documentation/codeedittextview/textview/overscrollamount/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/overscrollamount/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/pagedown(_:)/index.html b/documentation/codeedittextview/textview/pagedown(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/pagedown(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/pagedownandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/pagedownandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/pagedownandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/pageup(_:)/index.html b/documentation/codeedittextview/textview/pageup(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/pageup(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/pageupandmodifyselection(_:)/index.html b/documentation/codeedittextview/textview/pageupandmodifyselection(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/pageupandmodifyselection(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/paste(_:)/index.html b/documentation/codeedittextview/textview/paste(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/paste(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/performdragoperation(_:)/index.html b/documentation/codeedittextview/textview/performdragoperation(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/performdragoperation(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/performkeyequivalent(with:)/index.html b/documentation/codeedittextview/textview/performkeyequivalent(with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/performkeyequivalent(with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/preparecontent(in:)/index.html b/documentation/codeedittextview/textview/preparecontent(in:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/preparecontent(in:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/removestoragedelegate(_:)/index.html b/documentation/codeedittextview/textview/removestoragedelegate(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/removestoragedelegate(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-2kupp/index.html b/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-2kupp/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-2kupp/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-476w4/index.html b/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-476w4/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/replacecharacters(in:with:skipupdateselection:)-476w4/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/resetcursorrects()/index.html b/documentation/codeedittextview/textview/resetcursorrects()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/resetcursorrects()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/resignfirstresponder()/index.html b/documentation/codeedittextview/textview/resignfirstresponder()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/resignfirstresponder()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/scrollselectiontovisible()/index.html b/documentation/codeedittextview/textview/scrollselectiontovisible()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/scrollselectiontovisible()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/scrolltorange(_:center:)/index.html b/documentation/codeedittextview/textview/scrolltorange(_:center:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/scrolltorange(_:center:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/selectall(_:)/index.html b/documentation/codeedittextview/textview/selectall(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/selectall(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/selectcolumns(betweenpointa:pointb:)/index.html b/documentation/codeedittextview/textview/selectcolumns(betweenpointa:pointb:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/selectcolumns(betweenpointa:pointb:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/selectedrange()/index.html b/documentation/codeedittextview/textview/selectedrange()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/selectedrange()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/selectionmanager/index.html b/documentation/codeedittextview/textview/selectionmanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/selectionmanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/selectline(_:)/index.html b/documentation/codeedittextview/textview/selectline(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/selectline(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/selectword(_:)/index.html b/documentation/codeedittextview/textview/selectword(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/selectword(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/setaccessibilityfocused(_:)/index.html b/documentation/codeedittextview/textview/setaccessibilityfocused(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/setaccessibilityfocused(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/setaccessibilityselectedtextrange(_:)/index.html b/documentation/codeedittextview/textview/setaccessibilityselectedtextrange(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/setaccessibilityselectedtextrange(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/setaccessibilityselectedtextranges(_:)/index.html b/documentation/codeedittextview/textview/setaccessibilityselectedtextranges(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/setaccessibilityselectedtextranges(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/setaccessibilityvalue(_:)/index.html b/documentation/codeedittextview/textview/setaccessibilityvalue(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/setaccessibilityvalue(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/setmarkedtext(_:selectedrange:replacementrange:)/index.html b/documentation/codeedittextview/textview/setmarkedtext(_:selectedrange:replacementrange:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/setmarkedtext(_:selectedrange:replacementrange:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/setneedsdisplay()/index.html b/documentation/codeedittextview/textview/setneedsdisplay()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/setneedsdisplay()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/settext(_:)/index.html b/documentation/codeedittextview/textview/settext(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/settext(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/settextstorage(_:)/index.html b/documentation/codeedittextview/textview/settextstorage(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/settextstorage(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/setundomanager(_:)/index.html b/documentation/codeedittextview/textview/setundomanager(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/setundomanager(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/string/index.html b/documentation/codeedittextview/textview/string/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/string/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textcolor/index.html b/documentation/codeedittextview/textview/textcolor/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textcolor/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textdidchangenotification/index.html b/documentation/codeedittextview/textview/textdidchangenotification/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textdidchangenotification/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textinsets/index.html b/documentation/codeedittextview/textview/textinsets/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textinsets/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textlayoutmanagerdelegate-implementations/index.html b/documentation/codeedittextview/textview/textlayoutmanagerdelegate-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textlayoutmanagerdelegate-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textselectionmanagerdelegate-implementations/index.html b/documentation/codeedittextview/textview/textselectionmanagerdelegate-implementations/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textselectionmanagerdelegate-implementations/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textstorage/index.html b/documentation/codeedittextview/textview/textstorage/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textstorage/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textviewportsize()/index.html b/documentation/codeedittextview/textview/textviewportsize()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textviewportsize()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/textwillchangenotification/index.html b/documentation/codeedittextview/textview/textwillchangenotification/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/textwillchangenotification/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/typingattributes/index.html b/documentation/codeedittextview/textview/typingattributes/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/typingattributes/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/undomanager/index.html b/documentation/codeedittextview/textview/undomanager/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/undomanager/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/unmarktext()/index.html b/documentation/codeedittextview/textview/unmarktext()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/unmarktext()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/updatedviewport(_:)/index.html b/documentation/codeedittextview/textview/updatedviewport(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/updatedviewport(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/updateframeifneeded()/index.html b/documentation/codeedittextview/textview/updateframeifneeded()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/updateframeifneeded()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/usesystemcursor/index.html b/documentation/codeedittextview/textview/usesystemcursor/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/usesystemcursor/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/validattributesformarkedtext()/index.html b/documentation/codeedittextview/textview/validattributesformarkedtext()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/validattributesformarkedtext()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/viewdidendliveresize()/index.html b/documentation/codeedittextview/textview/viewdidendliveresize()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/viewdidendliveresize()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/viewwillmove(tosuperview:)/index.html b/documentation/codeedittextview/textview/viewwillmove(tosuperview:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/viewwillmove(tosuperview:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/viewwillmove(towindow:)/index.html b/documentation/codeedittextview/textview/viewwillmove(towindow:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/viewwillmove(towindow:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/visiblerect/index.html b/documentation/codeedittextview/textview/visiblerect/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/visiblerect/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/visibletextrange/index.html b/documentation/codeedittextview/textview/visibletextrange/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/visibletextrange/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/wraplines/index.html b/documentation/codeedittextview/textview/wraplines/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/wraplines/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textview/yank(_:)/index.html b/documentation/codeedittextview/textview/yank(_:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textview/yank(_:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textviewdelegate/index.html b/documentation/codeedittextview/textviewdelegate/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textviewdelegate/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)-5kxu6/index.html b/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)-5kxu6/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)-5kxu6/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)/index.html b/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textviewdelegate/textview(_:didreplacecontentsin:with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)-30pij/index.html b/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)-30pij/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)-30pij/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)/index.html b/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textviewdelegate/textview(_:shouldreplacecontentsin:with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)-3xvva/index.html b/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)-3xvva/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)-3xvva/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)/index.html b/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/textviewdelegate/textview(_:willreplacecontentsin:with:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/typesetter/documentrange/index.html b/documentation/codeedittextview/typesetter/documentrange/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/typesetter/documentrange/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/typesetter/index.html b/documentation/codeedittextview/typesetter/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/typesetter/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/typesetter/init()/index.html b/documentation/codeedittextview/typesetter/init()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/typesetter/init()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/typesetter/linefragments/index.html b/documentation/codeedittextview/typesetter/linefragments/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/typesetter/linefragments/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/typesetter/typeset(_:documentrange:displaydata:markedranges:attachments:)/index.html b/documentation/codeedittextview/typesetter/typeset(_:documentrange:displaydata:markedranges:attachments:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/typesetter/typeset(_:documentrange:displaydata:markedranges:attachments:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/enqueueview(forkey:)/index.html b/documentation/codeedittextview/viewreusequeue/enqueueview(forkey:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/enqueueview(forkey:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/enqueueviews(in:)/index.html b/documentation/codeedittextview/viewreusequeue/enqueueviews(in:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/enqueueviews(in:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/enqueueviews(notinset:)/index.html b/documentation/codeedittextview/viewreusequeue/enqueueviews(notinset:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/enqueueviews(notinset:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/getorcreateview(forkey:createview:)/index.html b/documentation/codeedittextview/viewreusequeue/getorcreateview(forkey:createview:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/getorcreateview(forkey:createview:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/getview(forkey:)/index.html b/documentation/codeedittextview/viewreusequeue/getview(forkey:)/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/getview(forkey:)/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/index.html b/documentation/codeedittextview/viewreusequeue/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/init()/index.html b/documentation/codeedittextview/viewreusequeue/init()/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/init()/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/queuedviews/index.html b/documentation/codeedittextview/viewreusequeue/queuedviews/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/queuedviews/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/documentation/codeedittextview/viewreusequeue/usedviews/index.html b/documentation/codeedittextview/viewreusequeue/usedviews/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/documentation/codeedittextview/viewreusequeue/usedviews/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 000000000..5231da6dc
Binary files /dev/null and b/favicon.ico differ
diff --git a/favicon.svg b/favicon.svg
new file mode 100644
index 000000000..c54c53fbf
--- /dev/null
+++ b/favicon.svg
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/img/added-icon.832a5d2c.svg b/img/added-icon.832a5d2c.svg
new file mode 100644
index 000000000..6bb6d89a8
--- /dev/null
+++ b/img/added-icon.832a5d2c.svg
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/img/deprecated-icon.7bf1740a.svg b/img/deprecated-icon.7bf1740a.svg
new file mode 100644
index 000000000..a0f80086b
--- /dev/null
+++ b/img/deprecated-icon.7bf1740a.svg
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/img/modified-icon.efb2697d.svg b/img/modified-icon.efb2697d.svg
new file mode 100644
index 000000000..3e0bd6f0a
--- /dev/null
+++ b/img/modified-icon.efb2697d.svg
@@ -0,0 +1,11 @@
+
+
+
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 000000000..301dbf2de
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+Documentation
\ No newline at end of file
diff --git a/index/availability.index b/index/availability.index
new file mode 100644
index 000000000..4c62af389
Binary files /dev/null and b/index/availability.index differ
diff --git a/index/data.mdb b/index/data.mdb
new file mode 100755
index 000000000..06db2d9e1
Binary files /dev/null and b/index/data.mdb differ
diff --git a/index/index.json b/index/index.json
new file mode 100644
index 000000000..1c1adef98
--- /dev/null
+++ b/index/index.json
@@ -0,0 +1 @@
+{"includedArchiveIdentifiers":["codeedittextview.CodeEditTextView"],"interfaceLanguages":{"swift":[{"children":[{"title":"Text View","type":"groupMarker"},{"children":[{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/init(coder:)","title":"init?(coder: NSCoder)","type":"init"},{"path":"\/documentation\/codeedittextview\/textview\/init(string:font:textcolor:lineheightmultiplier:wraplines:iseditable:isselectable:letterspacing:usesystemcursor:delegate:)","title":"init(string: String, font: NSFont, textColor: NSColor, lineHeightMultiplier: CGFloat, wrapLines: Bool, isEditable: Bool, isSelectable: Bool, letterSpacing: Double, useSystemCursor: Bool, delegate: TextViewDelegate?)","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/acceptsfirstresponder","title":"var acceptsFirstResponder: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/allowsundo","title":"var allowsUndo: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/canbecomekeyview","title":"var canBecomeKeyView: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/contenttype","title":"var contentType: NSTextContentType?","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/delegate","title":"var delegate: TextViewDelegate?","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/documentrange","title":"var documentRange: NSRange","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/edgeinsets","title":"var edgeInsets: HorizontalEdgeInsets","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/emphasismanager","title":"var emphasisManager: EmphasisManager?","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/font","title":"var font: NSFont","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/iseditable","title":"var isEditable: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/isflipped","title":"var isFlipped: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/isselectable","title":"var isSelectable: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/kern","title":"var kern: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/layoutmanager","title":"var layoutManager: TextLayoutManager!","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/letterspacing","title":"var letterSpacing: Double","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/linebreakstrategy","title":"var lineBreakStrategy: LineBreakStrategy","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/lineheight","title":"var lineHeight: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/markedtextattributes","title":"var markedTextAttributes: [NSAttributedString.Key : Any]","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/needspaneltobecomekey","title":"var needsPanelToBecomeKey: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/overscrollamount","title":"var overscrollAmount: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/selectionmanager","title":"var selectionManager: TextSelectionManager!","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/string","title":"var string: String","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/textcolor","title":"var textColor: NSColor","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/textinsets","title":"var textInsets: HorizontalEdgeInsets","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/textstorage","title":"var textStorage: NSTextStorage!","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/typingattributes","title":"var typingAttributes: [NSAttributedString.Key : Any]","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/undomanager","title":"var undoManager: UndoManager?","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/usesystemcursor","title":"var useSystemCursor: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/wraplines","title":"var wrapLines: Bool","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/acceptsfirstmouse(for:)","title":"func acceptsFirstMouse(for: NSEvent?) -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityframe(for:)","title":"func accessibilityFrame(for: NSRange) -> NSRect","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityinsertionpointlinenumber()","title":"func accessibilityInsertionPointLineNumber() -> Int","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilitylabel()","title":"func accessibilityLabel() -> String?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityline(for:)","title":"func accessibilityLine(for: Int) -> Int","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilitynumberofcharacters()","title":"func accessibilityNumberOfCharacters() -> Int","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-40q9z","title":"func accessibilityRange(for: NSPoint) -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityrange(for:)-70nmn","title":"func accessibilityRange(for: Int) -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityrange(forline:)","title":"func accessibilityRange(forLine: Int) -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityrole()","title":"func accessibilityRole() -> NSAccessibility.Role?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtext()","title":"func accessibilitySelectedText() -> String?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtextrange()","title":"func accessibilitySelectedTextRange() -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityselectedtextranges()","title":"func accessibilitySelectedTextRanges() -> [NSValue]?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilitystring(for:)","title":"func accessibilityString(for: NSRange) -> String?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityvalue()","title":"func accessibilityValue() -> Any?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/accessibilityvisiblecharacterrange()","title":"func accessibilityVisibleCharacterRange() -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/addstoragedelegate(_:)","title":"func addStorageDelegate(NSTextStorageDelegate)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/becomefirstresponder()","title":"func becomeFirstResponder() -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/copy(_:)","title":"func copy(AnyObject)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/cut(_:)","title":"func cut(AnyObject)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/delete(_:)","title":"func delete(AnyObject)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletebackward(_:)","title":"func deleteBackward(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletebackwardbydecomposingpreviouscharacter(_:)","title":"func deleteBackwardByDecomposingPreviousCharacter(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deleteforward(_:)","title":"func deleteForward(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletetobeginningofline(_:)","title":"func deleteToBeginningOfLine(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletetobeginningofparagraph(_:)","title":"func deleteToBeginningOfParagraph(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletetoendofline(_:)","title":"func deleteToEndOfLine(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletetoendofparagraph(_:)","title":"func deleteToEndOfParagraph(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletewordbackward(_:)","title":"func deleteWordBackward(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/deletewordforward(_:)","title":"func deleteWordForward(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/draggingentered(_:)","title":"func draggingEntered(any NSDraggingInfo) -> NSDragOperation","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/draggingupdated(_:)","title":"func draggingUpdated(any NSDraggingInfo) -> NSDragOperation","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/draw(_:)","title":"func draw(NSRect)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/editselections(callback:)","title":"func editSelections(callback: (TextView, TextSelectionManager.TextSelection) -> Void)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/flagschanged(with:)","title":"func flagsChanged(with: NSEvent)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/hittest(_:)","title":"func hitTest(NSPoint) -> NSView?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/insertnewline(_:)","title":"func insertNewline(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/inserttab(_:)","title":"func insertTab(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/inserttext(_:)","title":"func insertText(Any)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/isaccessibilityelement()","title":"func isAccessibilityElement() -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/isaccessibilityenabled()","title":"func isAccessibilityEnabled() -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/isaccessibilityfocused()","title":"func isAccessibilityFocused() -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/keydown(with:)","title":"func keyDown(with: NSEvent)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/layout()","title":"func layout()","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/menu(for:)","title":"func menu(for: NSEvent) -> NSMenu?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/mousedown(with:)","title":"func mouseDown(with: NSEvent)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/mousedragged(with:)","title":"func mouseDragged(with: NSEvent)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/mouseup(with:)","title":"func mouseUp(with: NSEvent)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movedown(_:)","title":"func moveDown(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movedownandmodifyselection(_:)","title":"func moveDownAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/moveleft(_:)","title":"func moveLeft(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/moveleftandmodifyselection(_:)","title":"func moveLeftAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/moveright(_:)","title":"func moveRight(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/moverightandmodifyselection(_:)","title":"func moveRightAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetobeginningofdocument(_:)","title":"func moveToBeginningOfDocument(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetobeginningofdocumentandmodifyselection(_:)","title":"func moveToBeginningOfDocumentAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetobeginningofparagraph(_:)","title":"func moveToBeginningOfParagraph(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetobeginningofparagraphandmodifyselection(_:)","title":"func moveToBeginningOfParagraphAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetoendofdocument(_:)","title":"func moveToEndOfDocument(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetoendofdocumentandmodifyselection(_:)","title":"func moveToEndOfDocumentAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetoendofparagraph(_:)","title":"func moveToEndOfParagraph(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetoendofparagraphandmodifyselection(_:)","title":"func moveToEndOfParagraphAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetoleftendofline(_:)","title":"func moveToLeftEndOfLine(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetoleftendoflineandmodifyselection(_:)","title":"func moveToLeftEndOfLineAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetorightendofline(_:)","title":"func moveToRightEndOfLine(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movetorightendoflineandmodifyselection(_:)","title":"func moveToRightEndOfLineAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/moveup(_:)","title":"func moveUp(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/moveupandmodifyselection(_:)","title":"func moveUpAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movewordleft(_:)","title":"func moveWordLeft(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movewordleftandmodifyselection(_:)","title":"func moveWordLeftAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movewordright(_:)","title":"func moveWordRight(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/movewordrightandmodifyselection(_:)","title":"func moveWordRightAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/pagedown(_:)","title":"func pageDown(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/pagedownandmodifyselection(_:)","title":"func pageDownAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/pageup(_:)","title":"func pageUp(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/pageupandmodifyselection(_:)","title":"func pageUpAndModifySelection(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/paste(_:)","title":"func paste(AnyObject)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/performdragoperation(_:)","title":"func performDragOperation(any NSDraggingInfo) -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/performkeyequivalent(with:)","title":"func performKeyEquivalent(with: NSEvent) -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/preparecontent(in:)","title":"func prepareContent(in: NSRect)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/removestoragedelegate(_:)","title":"func removeStorageDelegate(NSTextStorageDelegate)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-2kupp","title":"func replaceCharacters(in: NSRange, with: String, skipUpdateSelection: Bool)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/replacecharacters(in:with:skipupdateselection:)-476w4","title":"func replaceCharacters(in: [NSRange], with: String, skipUpdateSelection: Bool)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/resetcursorrects()","title":"func resetCursorRects()","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/resignfirstresponder()","title":"func resignFirstResponder() -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/scrollselectiontovisible()","title":"func scrollSelectionToVisible()","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/scrolltorange(_:center:)","title":"func scrollToRange(NSRange, center: Bool)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/selectall(_:)","title":"func selectAll(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/selectcolumns(betweenpointa:pointb:)","title":"func selectColumns(betweenPointA: CGPoint, pointB: CGPoint)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/selectline(_:)","title":"func selectLine(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/selectword(_:)","title":"func selectWord(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/setaccessibilityfocused(_:)","title":"func setAccessibilityFocused(Bool)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextrange(_:)","title":"func setAccessibilitySelectedTextRange(NSRange)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/setaccessibilityselectedtextranges(_:)","title":"func setAccessibilitySelectedTextRanges([NSValue]?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/setaccessibilityvalue(_:)","title":"func setAccessibilityValue(Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/settext(_:)","title":"func setText(String)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/settextstorage(_:)","title":"func setTextStorage(NSTextStorage)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/setundomanager(_:)","title":"func setUndoManager(CEUndoManager)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/updateframeifneeded()","title":"func updateFrameIfNeeded() -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/updatedviewport(_:)","title":"func updatedViewport(CGRect)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/viewdidendliveresize()","title":"func viewDidEndLiveResize()","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/viewwillmove(tosuperview:)","title":"func viewWillMove(toSuperview: NSView?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/viewwillmove(towindow:)","title":"func viewWillMove(toWindow: NSWindow?)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/yank(_:)","title":"func yank(Any?)","type":"method"},{"title":"Type Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/defaulttypingattributes","title":"static var defaultTypingAttributes: [NSAttributedString.Key : Any]","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/iscompatiblewithresponsivescrolling","title":"class var isCompatibleWithResponsiveScrolling: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/textdidchangenotification","title":"static let textDidChangeNotification: Notification.Name","type":"property"},{"path":"\/documentation\/codeedittextview\/textview\/textwillchangenotification","title":"static let textWillChangeNotification: Notification.Name","type":"property"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/draggingsession(_:endedat:operation:)","title":"func draggingSession(NSDraggingSession, endedAt: NSPoint, operation: NSDragOperation)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/draggingsession(_:movedto:)","title":"func draggingSession(NSDraggingSession, movedTo: NSPoint)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/draggingsession(_:sourceoperationmaskfor:)","title":"func draggingSession(NSDraggingSession, sourceOperationMaskFor: NSDraggingContext) -> NSDragOperation","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/draggingsession(_:willbeginat:)","title":"func draggingSession(NSDraggingSession, willBeginAt: NSPoint)","type":"method"}],"path":"\/documentation\/codeedittextview\/textview\/nsdraggingsource-implementations","title":"NSDraggingSource Implementations","type":"symbol"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/attributedstring()","title":"func attributedString() -> NSAttributedString","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/attributedsubstring(forproposedrange:actualrange:)","title":"func attributedSubstring(forProposedRange: NSRange, actualRange: NSRangePointer?) -> NSAttributedString?","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/baselinedeltaforcharacter(at:)","title":"func baselineDeltaForCharacter(at: Int) -> CGFloat","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/characterindex(for:)","title":"func characterIndex(for: NSPoint) -> Int","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/firstrect(forcharacterrange:actualrange:)","title":"func firstRect(forCharacterRange: NSRange, actualRange: NSRangePointer?) -> NSRect","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/fractionofdistancethroughglyph(for:)","title":"func fractionOfDistanceThroughGlyph(for: NSPoint) -> CGFloat","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/hasmarkedtext()","title":"func hasMarkedText() -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/inserttext(_:replacementrange:)","title":"func insertText(Any, replacementRange: NSRange)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/markedrange()","title":"func markedRange() -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/selectedrange()","title":"func selectedRange() -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/setmarkedtext(_:selectedrange:replacementrange:)","title":"func setMarkedText(Any, selectedRange: NSRange, replacementRange: NSRange)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/unmarktext()","title":"func unmarkText()","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/validattributesformarkedtext()","title":"func validAttributesForMarkedText() -> [NSAttributedString.Key]","type":"method"}],"path":"\/documentation\/codeedittextview\/textview\/nstextinputclient-implementations","title":"NSTextInputClient Implementations","type":"symbol"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/visiblerect","title":"var visibleRect: NSRect","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/layoutmanagerheightdidupdate(newheight:)","title":"func layoutManagerHeightDidUpdate(newHeight: CGFloat)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/layoutmanagermaxwidthdidchange(newwidth:)","title":"func layoutManagerMaxWidthDidChange(newWidth: CGFloat)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/layoutmanagertypingattributes()","title":"func layoutManagerTypingAttributes() -> [NSAttributedString.Key : Any]","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/layoutmanageryadjustment(_:)","title":"func layoutManagerYAdjustment(CGFloat)","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/textviewportsize()","title":"func textViewportSize() -> CGSize","type":"method"}],"path":"\/documentation\/codeedittextview\/textview\/textlayoutmanagerdelegate-implementations","title":"TextLayoutManagerDelegate Implementations","type":"symbol"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/visibletextrange","title":"var visibleTextRange: NSRange?","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textview\/estimatedlineheight()","title":"func estimatedLineHeight() -> CGFloat","type":"method"},{"path":"\/documentation\/codeedittextview\/textview\/setneedsdisplay()","title":"func setNeedsDisplay()","type":"method"}],"path":"\/documentation\/codeedittextview\/textview\/textselectionmanagerdelegate-implementations","title":"TextSelectionManagerDelegate Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textview","title":"TextView","type":"class"},{"children":[{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/init()","title":"init()","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/canredo","title":"var canRedo: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/canundo","title":"var canUndo: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/isgrouping","title":"var isGrouping: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/isredoing","title":"var isRedoing: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/isundoing","title":"var isUndoing: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/redocount","title":"var redoCount: Int","type":"property"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/undocount","title":"var undoCount: Int","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/beginundogrouping()","title":"func beginUndoGrouping()","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/clearstack()","title":"func clearStack()","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/disable()","title":"func disable()","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/enable()","title":"func enable()","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/endundogrouping()","title":"func endUndoGrouping()","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/redo()","title":"func redo()","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/registermutation(_:)","title":"func registerMutation(TextMutation)","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/registerundo(withtarget:selector:object:)","title":"func registerUndo(withTarget: Any, selector: Selector, object: Any?)","type":"method"},{"path":"\/documentation\/codeedittextview\/ceundomanager\/undo()","title":"func undo()","type":"method"}],"path":"\/documentation\/codeedittextview\/ceundomanager","title":"CEUndoManager","type":"class"},{"title":"Text Layout","type":"groupMarker"},{"children":[{"title":"Structures","type":"groupMarker"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/next()","title":"func next() -> TextLineStorage.TextLinePosition?","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elements","title":"var elements: Self","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lazy","title":"var lazy: Self.Elements","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5x9rx","title":"func compactMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/drop(while:)","title":"func drop(while: (Self.Elements.Element) -> Bool) -> LazyDropWhileSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/filter(_:)","title":"func filter((Self.Elements.Element) -> Bool) -> LazyFilterSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-28gsc","title":"func flatMap((Self.Elements.Element) -> SegmentOfResult) -> LazySequence>>","type":"method"},{"deprecated":true,"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-5tpzt","title":"func flatMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-6xfr2","title":"func map((Self.Element) -> U) -> LazyMapSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(while:)","title":"func prefix(while: (Self.Elements.Element) -> Bool) -> LazyPrefixWhileSequence","type":"method"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lazysequenceprotocol-implementations","title":"LazySequenceProtocol Implementations","type":"symbol"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/publisher","title":"var publisher: Publishers.Sequence","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/underestimatedcount","title":"var underestimatedCount: Int","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/allsatisfy(_:)","title":"func allSatisfy((Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compactmap(_:)-5uuh9","title":"func compactMap((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/compare(_:_:)","title":"func compare(Comparator.Compared, Comparator.Compared) -> ComparisonResult","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/contains(where:)","title":"func contains(where: (Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/count(where:)","title":"func count(where: (Self.Element) throws(E) -> Bool) throws(E) -> Int","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/dropfirst(_:)","title":"func dropFirst(Int) -> DropFirstSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/droplast(_:)","title":"func dropLast(Int) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/elementsequal(_:by:)","title":"func elementsEqual(OtherSequence, by: (Self.Element, OtherSequence.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/enumerated()","title":"func enumerated() -> EnumeratedSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/first(where:)","title":"func first(where: (Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-3fyy7","title":"func flatMap((Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element]","type":"method"},{"deprecated":true,"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/flatmap(_:)-73i4d","title":"func flatMap((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/foreach(_:)","title":"func forEach((Self.Element) throws -> Void) rethrows","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/formatted(_:)","title":"func formatted(S) -> S.FormatOutput","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/lexicographicallyprecedes(_:by:)","title":"func lexicographicallyPrecedes(OtherSequence, by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/makeiterator()","title":"func makeIterator() -> Self","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/map(_:)-5l7nx","title":"func map((Self.Element) throws(E) -> T) throws(E) -> [T]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/max(by:)","title":"func max(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/min(by:)","title":"func min(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/prefix(_:)","title":"func prefix(Int) -> PrefixSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(_:_:)","title":"func reduce(Result, (Result, Self.Element) throws -> Result) rethrows -> Result","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reduce(into:_:)","title":"func reduce(into: Result, (inout Result, Self.Element) throws -> ()) rethrows -> Result","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/reversed()","title":"func reversed() -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled()","title":"func shuffled() -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/shuffled(using:)","title":"func shuffled(using: inout T) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(by:)","title":"func sorted(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-4zta4","title":"func sorted(using: Comparator) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sorted(using:)-8vhlv","title":"func sorted(using: S) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","title":"func split(maxSplits: Int, omittingEmptySubsequences: Bool, whereSeparator: (Self.Element) throws -> Bool) rethrows -> [ArraySlice]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/starts(with:by:)","title":"func starts(with: PossiblePrefix, by: (Self.Element, PossiblePrefix.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/suffix(_:)","title":"func suffix(Int) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/withcontiguousstorageifavailable(_:)","title":"func withContiguousStorageIfAvailable((UnsafeBufferPointer) throws -> R) rethrows -> R?","type":"method"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator\/sequence-implementations","title":"Sequence Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rangeiterator","title":"TextLayoutManager.RangeIterator","type":"struct"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/next()","title":"func next() -> TextLineStorage.TextLinePosition?","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elements","title":"var elements: Self","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lazy","title":"var lazy: Self.Elements","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-5wc6b","title":"func compactMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/drop(while:)","title":"func drop(while: (Self.Elements.Element) -> Bool) -> LazyDropWhileSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/filter(_:)","title":"func filter((Self.Elements.Element) -> Bool) -> LazyFilterSequence","type":"method"},{"deprecated":true,"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-65ga0","title":"func flatMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8c3o2","title":"func flatMap((Self.Elements.Element) -> SegmentOfResult) -> LazySequence>>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-3fj1z","title":"func map((Self.Element) -> U) -> LazyMapSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(while:)","title":"func prefix(while: (Self.Elements.Element) -> Bool) -> LazyPrefixWhileSequence","type":"method"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lazysequenceprotocol-implementations","title":"LazySequenceProtocol Implementations","type":"symbol"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/publisher","title":"var publisher: Publishers.Sequence","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/underestimatedcount","title":"var underestimatedCount: Int","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/allsatisfy(_:)","title":"func allSatisfy((Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compactmap(_:)-xtl4","title":"func compactMap((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/compare(_:_:)","title":"func compare(Comparator.Compared, Comparator.Compared) -> ComparisonResult","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/contains(where:)","title":"func contains(where: (Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/count(where:)","title":"func count(where: (Self.Element) throws(E) -> Bool) throws(E) -> Int","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/dropfirst(_:)","title":"func dropFirst(Int) -> DropFirstSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/droplast(_:)","title":"func dropLast(Int) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/elementsequal(_:by:)","title":"func elementsEqual(OtherSequence, by: (Self.Element, OtherSequence.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/enumerated()","title":"func enumerated() -> EnumeratedSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/first(where:)","title":"func first(where: (Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-8cio9","title":"func flatMap((Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element]","type":"method"},{"deprecated":true,"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/flatmap(_:)-fcq1","title":"func flatMap((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/foreach(_:)","title":"func forEach((Self.Element) throws -> Void) rethrows","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/formatted(_:)","title":"func formatted(S) -> S.FormatOutput","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/lexicographicallyprecedes(_:by:)","title":"func lexicographicallyPrecedes(OtherSequence, by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/makeiterator()","title":"func makeIterator() -> Self","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/map(_:)-4hd6e","title":"func map((Self.Element) throws(E) -> T) throws(E) -> [T]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/max(by:)","title":"func max(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/min(by:)","title":"func min(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/prefix(_:)","title":"func prefix(Int) -> PrefixSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(_:_:)","title":"func reduce(Result, (Result, Self.Element) throws -> Result) rethrows -> Result","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reduce(into:_:)","title":"func reduce(into: Result, (inout Result, Self.Element) throws -> ()) rethrows -> Result","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/reversed()","title":"func reversed() -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled()","title":"func shuffled() -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/shuffled(using:)","title":"func shuffled(using: inout T) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(by:)","title":"func sorted(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-44git","title":"func sorted(using: S) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sorted(using:)-9j2ea","title":"func sorted(using: Comparator) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","title":"func split(maxSplits: Int, omittingEmptySubsequences: Bool, whereSeparator: (Self.Element) throws -> Bool) rethrows -> [ArraySlice]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/starts(with:by:)","title":"func starts(with: PossiblePrefix, by: (Self.Element, PossiblePrefix.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/suffix(_:)","title":"func suffix(Int) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/withcontiguousstorageifavailable(_:)","title":"func withContiguousStorageIfAvailable((UnsafeBufferPointer) throws -> R) rethrows -> R?","type":"method"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator\/sequence-implementations","title":"Sequence Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager\/ypositioniterator","title":"TextLayoutManager.YPositionIterator","type":"struct"},{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/init(textstorage:lineheightmultiplier:wraplines:textview:delegate:renderdelegate:invisiblecharacterdelegate:)","title":"init(textStorage: NSTextStorage, lineHeightMultiplier: CGFloat, wrapLines: Bool, textView: NSView, delegate: TextLayoutManagerDelegate?, renderDelegate: TextLayoutManagerRenderDelegate?, invisibleCharacterDelegate: InvisibleCharactersDelegate?)","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/attachments","title":"let attachments: TextAttachmentManager","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/delegate","title":"var delegate: TextLayoutManagerDelegate?","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/detectedlineending","title":"var detectedLineEnding: LineEnding","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/edgeinsets","title":"var edgeInsets: HorizontalEdgeInsets","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/invisiblecharacterdelegate","title":"var invisibleCharacterDelegate: InvisibleCharactersDelegate?","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/isintransaction","title":"var isInTransaction: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/linebreakstrategy","title":"var lineBreakStrategy: LineBreakStrategy","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/linecount","title":"var lineCount: Int","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/lineheightmultiplier","title":"var lineHeightMultiplier: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/linestorage","title":"var lineStorage: TextLineStorage","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/maxlinelayoutwidth","title":"var maxLineLayoutWidth: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/renderdelegate","title":"var renderDelegate: TextLayoutManagerRenderDelegate?","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/verticallayoutpadding","title":"var verticalLayoutPadding: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/wraplines","title":"var wrapLines: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/wraplineswidth","title":"var wrapLinesWidth: CGFloat","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/characterrect(in:for:)","title":"func characterRect(in: LineFragment, for: NSRange) -> CGRect","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/characterxposition(in:for:)","title":"func characterXPosition(in: LineFragment, for: Int) -> CGFloat","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/determinevisibleposition(for:)","title":"func determineVisiblePosition(for: TextLineStorage.TextLinePosition?) -> (position: TextLineStorage.TextLinePosition, indexRange: ClosedRange)?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatelineheight()","title":"func estimateLineHeight() -> CGFloat","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatedheight()","title":"func estimatedHeight() -> CGFloat","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/estimatedwidth()","title":"func estimatedWidth() -> CGFloat","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrange(_:)","title":"func invalidateLayoutForRange(NSRange)","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/invalidatelayoutforrect(_:)","title":"func invalidateLayoutForRect(NSRect)","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/layoutlines(in:)","title":"func layoutLines(in: NSRect?) -> Set","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/linesinrange(_:)","title":"func linesInRange(NSRange) -> RangeIterator","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/linesstartingat(_:until:)","title":"func linesStartingAt(CGFloat, until: CGFloat) -> YPositionIterator","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rectforoffset(_:)","title":"func rectForOffset(Int) -> CGRect?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/rectsfor(range:)","title":"func rectsFor(range: NSRange) -> [CGRect]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/roundedpathforrange(_:cornerradius:)","title":"func roundedPathForRange(NSRange, cornerRadius: CGFloat) -> NSBezierPath?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/setneedslayout()","title":"func setNeedsLayout()","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforindex(_:)","title":"func textLineForIndex(Int) -> TextLineStorage.TextLinePosition?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforoffset(_:)","title":"func textLineForOffset(Int) -> TextLineStorage.TextLinePosition?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/textlineforposition(_:)","title":"func textLineForPosition(CGFloat) -> TextLineStorage.TextLinePosition?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/textoffsetatpoint(_:)","title":"func textOffsetAtPoint(CGPoint) -> Int?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/visiblelines()","title":"func visibleLines() -> YPositionIterator","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlayoutmanager\/textstorage(_:didprocessediting:range:changeinlength:)","title":"func textStorage(NSTextStorage, didProcessEditing: NSTextStorageEditActions, range: NSRange, changeInLength: Int)","type":"method"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager\/nstextstoragedelegate-implementations","title":"NSTextStorageDelegate Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textlayoutmanager","title":"TextLayoutManager","type":"class"},{"children":[{"title":"Structures","type":"groupMarker"},{"children":[{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textline\/displaydata\/init(maxwidth:lineheightmultiplier:estimatedlineheight:breakstrategy:)","title":"init(maxWidth: CGFloat, lineHeightMultiplier: CGFloat, estimatedLineHeight: CGFloat, breakStrategy: LineBreakStrategy)","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textline\/displaydata\/breakstrategy","title":"let breakStrategy: LineBreakStrategy","type":"property"},{"path":"\/documentation\/codeedittextview\/textline\/displaydata\/estimatedlineheight","title":"let estimatedLineHeight: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textline\/displaydata\/lineheightmultiplier","title":"let lineHeightMultiplier: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textline\/displaydata\/maxwidth","title":"let maxWidth: CGFloat","type":"property"}],"path":"\/documentation\/codeedittextview\/textline\/displaydata","title":"TextLine.DisplayData","type":"struct"},{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textline\/==(_:_:)","title":"static func == (TextLine, TextLine) -> Bool","type":"op"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textline\/id","title":"let id: UUID","type":"property"},{"path":"\/documentation\/codeedittextview\/textline\/linefragments","title":"var lineFragments: TextLineStorage","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textline\/preparefordisplay(displaydata:range:stringref:markedranges:attachments:)","title":"func prepareForDisplay(displayData: DisplayData, range: NSRange, stringRef: NSTextStorage, markedRanges: MarkedRanges?, attachments: [AnyTextAttachment])","type":"method"},{"path":"\/documentation\/codeedittextview\/textline\/setneedslayout()","title":"func setNeedsLayout()","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textline\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/textline\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textline","title":"TextLine","type":"class"},{"children":[{"title":"Structures","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/contentposition","title":"LineFragment.ContentPosition","type":"struct"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/data","title":"let data: Content","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/length","title":"var length: Int","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/width","title":"let width: CGFloat","type":"property"},{"title":"Enumerations","type":"groupMarker"},{"children":[{"title":"Enumeration Cases","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/attachment(attachment:)","title":"case attachment(attachment: AnyTextAttachment)","type":"case"},{"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/text(line:)","title":"case text(line: CTLine)","type":"case"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/content","title":"LineFragment.FragmentContent.Content","type":"enum"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/linefragment\/fragmentcontent","title":"LineFragment.FragmentContent","type":"struct"},{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/==(_:_:)","title":"static func == (LineFragment, LineFragment) -> Bool","type":"op"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/contents","title":"var contents: [FragmentContent]","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/descent","title":"var descent: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/documentrange","title":"var documentRange: NSRange","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/height","title":"var height: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/heightdifference","title":"var heightDifference: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/id","title":"let id: UUID","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/scaledheight","title":"var scaledHeight: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/linefragment\/width","title":"var width: CGFloat","type":"property"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/linefragment\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/linefragment\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/linefragment","title":"LineFragment","type":"class"},{"title":"Text Selection","type":"groupMarker"},{"children":[{"title":"Classes","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/==(_:_:)","title":"static func == (TextSelection, TextSelection) -> Bool","type":"op"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/range","title":"var range: NSRange","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/hash(into:)","title":"func hash(into: inout Hasher)","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","title":"TextSelectionManager.TextSelection","type":"class"},{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/init(layoutmanager:textstorage:textview:delegate:usesystemcursor:)","title":"init(layoutManager: TextLayoutManager, textStorage: NSTextStorage, textView: TextView?, delegate: TextSelectionManagerDelegate?, useSystemCursor: Bool)","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/edgeinsets","title":"var edgeInsets: HorizontalEdgeInsets","type":"property"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/highlightselectedline","title":"var highlightSelectedLine: Bool","type":"property"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/insertionpointcolor","title":"var insertionPointColor: NSColor","type":"property"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/selectedlinebackgroundcolor","title":"var selectedLineBackgroundColor: NSColor","type":"property"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/selectionbackgroundcolor","title":"var selectionBackgroundColor: NSColor","type":"property"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselections","title":"var textSelections: [TextSelection]","type":"property"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/usesystemcursor","title":"var useSystemCursor: Bool","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/addselectedrange(_:)","title":"func addSelectedRange(NSRange)","type":"method"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/didreplacecharacters(in:replacementlength:)","title":"func didReplaceCharacters(in: NSRange, replacementLength: Int)","type":"method"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/drawselections(in:)","title":"func drawSelections(in: NSRect)","type":"method"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/moveselections(direction:destination:modifyselection:)","title":"func moveSelections(direction: TextSelectionManager.Direction, destination: TextSelectionManager.Destination, modifySelection: Bool)","type":"method"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/notifyafteredit(force:)","title":"func notifyAfterEdit(force: Bool)","type":"method"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/rangeofselection(from:direction:destination:decomposecharacters:suggestedxpos:)","title":"func rangeOfSelection(from: Int, direction: Direction, destination: Destination, decomposeCharacters: Bool, suggestedXPos: CGFloat?) -> NSRange","type":"method"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/setselectedrange(_:)","title":"func setSelectedRange(NSRange)","type":"method"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/setselectedranges(_:)","title":"func setSelectedRanges([NSRange])","type":"method"},{"title":"Type Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/selectionchangednotification","title":"static let selectionChangedNotification: Notification.Name","type":"property"},{"title":"Enumerations","type":"groupMarker"},{"children":[{"title":"Enumeration Cases","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/character","title":"case character","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/document","title":"case document","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/line","title":"case line","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/page","title":"case page","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/visualline","title":"case visualLine","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/word","title":"case word","type":"case"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/destination","title":"TextSelectionManager.Destination","type":"enum"},{"children":[{"title":"Enumeration Cases","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/backward","title":"case backward","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/down","title":"case down","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/forward","title":"case forward","type":"case"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/up","title":"case up","type":"case"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/direction\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/direction","title":"TextSelectionManager.Direction","type":"enum"}],"path":"\/documentation\/codeedittextview\/textselectionmanager","title":"TextSelectionManager","type":"class"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/==(_:_:)","title":"static func == (TextSelection, TextSelection) -> Bool","type":"op"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/range","title":"var range: NSRange","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/hash(into:)","title":"func hash(into: inout Hasher)","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Operators","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/!=(_:_:)","title":"static func != (Self, Self) -> Bool","type":"op"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection\/equatable-implementations","title":"Equatable Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textselectionmanager\/textselection","title":"TextSelectionManager.TextSelection","type":"class"},{"children":[{"title":"Initializers","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/cursorview\/init(coder:)","title":"init?(coder: NSCoder)","type":"init"},{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/cursorview\/color","title":"var color: NSColor","type":"property"},{"path":"\/documentation\/codeedittextview\/cursorview\/isflipped","title":"var isFlipped: Bool","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/cursorview\/hittest(_:)","title":"func hitTest(NSPoint) -> NSView?","type":"method"}],"path":"\/documentation\/codeedittextview\/cursorview","title":"CursorView","type":"class"},{"title":"Supporting Types","type":"groupMarker"},{"children":[{"title":"Structures","type":"groupMarker"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/data","title":"let data: Data","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/height","title":"let height: CGFloat?","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/builditem\/length","title":"let length: Int","type":"property"}],"path":"\/documentation\/codeedittextview\/textlinestorage\/builditem","title":"TextLineStorage.BuildItem","type":"struct"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/data","title":"let data: Data","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/height","title":"let height: CGFloat","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/index","title":"let index: Int","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/range","title":"let range: NSRange","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition\/ypos","title":"let yPos: CGFloat","type":"property"}],"path":"\/documentation\/codeedittextview\/textlinestorage\/textlineposition","title":"TextLineStorage.TextLinePosition","type":"struct"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator\/next()","title":"func next() -> TextLinePosition?","type":"method"}],"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageiterator","title":"TextLineStorage.TextLineStorageIterator","type":"struct"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/next()","title":"func next() -> TextLinePosition?","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elements","title":"var elements: Self","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lazy","title":"var lazy: Self.Elements","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-75bna","title":"func compactMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/drop(while:)","title":"func drop(while: (Self.Elements.Element) -> Bool) -> LazyDropWhileSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/filter(_:)","title":"func filter((Self.Elements.Element) -> Bool) -> LazyFilterSequence","type":"method"},{"deprecated":true,"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-3w8yl","title":"func flatMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-8j0nw","title":"func flatMap((Self.Elements.Element) -> SegmentOfResult) -> LazySequence>>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-5h1kj","title":"func map((Self.Element) -> U) -> LazyMapSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(while:)","title":"func prefix(while: (Self.Elements.Element) -> Bool) -> LazyPrefixWhileSequence","type":"method"}],"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lazysequenceprotocol-implementations","title":"LazySequenceProtocol Implementations","type":"symbol"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/publisher","title":"var publisher: Publishers.Sequence","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/underestimatedcount","title":"var underestimatedCount: Int","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/allsatisfy(_:)","title":"func allSatisfy((Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compactmap(_:)-jq70","title":"func compactMap((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/compare(_:_:)","title":"func compare(Comparator.Compared, Comparator.Compared) -> ComparisonResult","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/contains(where:)","title":"func contains(where: (Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/count(where:)","title":"func count(where: (Self.Element) throws(E) -> Bool) throws(E) -> Int","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/dropfirst(_:)","title":"func dropFirst(Int) -> DropFirstSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/droplast(_:)","title":"func dropLast(Int) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/elementsequal(_:by:)","title":"func elementsEqual(OtherSequence, by: (Self.Element, OtherSequence.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/enumerated()","title":"func enumerated() -> EnumeratedSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/first(where:)","title":"func first(where: (Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-22h6s","title":"func flatMap((Self.Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element]","type":"method"},{"deprecated":true,"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/flatmap(_:)-77eog","title":"func flatMap((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/foreach(_:)","title":"func forEach((Self.Element) throws -> Void) rethrows","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/formatted(_:)","title":"func formatted(S) -> S.FormatOutput","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/lexicographicallyprecedes(_:by:)","title":"func lexicographicallyPrecedes(OtherSequence, by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/makeiterator()","title":"func makeIterator() -> Self","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/map(_:)-2b7rq","title":"func map((Self.Element) throws(E) -> T) throws(E) -> [T]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/max(by:)","title":"func max(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/min(by:)","title":"func min(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/prefix(_:)","title":"func prefix(Int) -> PrefixSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(_:_:)","title":"func reduce(Result, (Result, Self.Element) throws -> Result) rethrows -> Result","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reduce(into:_:)","title":"func reduce(into: Result, (inout Result, Self.Element) throws -> ()) rethrows -> Result","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/reversed()","title":"func reversed() -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled()","title":"func shuffled() -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/shuffled(using:)","title":"func shuffled(using: inout T) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(by:)","title":"func sorted(by: (Self.Element, Self.Element) throws -> Bool) rethrows -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-5pb9","title":"func sorted(using: Comparator) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sorted(using:)-73724","title":"func sorted(using: S) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/split(maxsplits:omittingemptysubsequences:whereseparator:)","title":"func split(maxSplits: Int, omittingEmptySubsequences: Bool, whereSeparator: (Self.Element) throws -> Bool) rethrows -> [ArraySlice]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/starts(with:by:)","title":"func starts(with: PossiblePrefix, by: (Self.Element, PossiblePrefix.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/suffix(_:)","title":"func suffix(Int) -> [Self.Element]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/withcontiguousstorageifavailable(_:)","title":"func withContiguousStorageIfAvailable((UnsafeBufferPointer) throws -> R) rethrows -> R?","type":"method"}],"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator\/sequence-implementations","title":"Sequence Implementations","type":"symbol"}],"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestoragerangeiterator","title":"TextLineStorage.TextLineStorageRangeIterator","type":"struct"},{"children":[{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/next()","title":"func next() -> TextLinePosition?","type":"method"},{"title":"Default Implementations","type":"groupMarker"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/elements","title":"var elements: Self","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lazy","title":"var lazy: Self.Elements","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-1cc9t","title":"func compactMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/drop(while:)","title":"func drop(while: (Self.Elements.Element) -> Bool) -> LazyDropWhileSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/filter(_:)","title":"func filter((Self.Elements.Element) -> Bool) -> LazyFilterSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-8ow0q","title":"func flatMap((Self.Elements.Element) -> SegmentOfResult) -> LazySequence>>","type":"method"},{"deprecated":true,"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/flatmap(_:)-dsr9","title":"func flatMap((Self.Elements.Element) -> ElementOfResult?) -> LazyMapSequence>, ElementOfResult>","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/map(_:)-131bq","title":"func map((Self.Element) -> U) -> LazyMapSequence","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/prefix(while:)","title":"func prefix(while: (Self.Elements.Element) -> Bool) -> LazyPrefixWhileSequence","type":"method"}],"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/lazysequenceprotocol-implementations","title":"LazySequenceProtocol Implementations","type":"symbol"},{"children":[{"title":"Instance Properties","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/publisher","title":"var publisher: Publishers.Sequence","type":"property"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/underestimatedcount","title":"var underestimatedCount: Int","type":"property"},{"title":"Instance Methods","type":"groupMarker"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/allsatisfy(_:)","title":"func allSatisfy((Self.Element) throws -> Bool) rethrows -> Bool","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compactmap(_:)-9fi1l","title":"func compactMap((Self.Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]","type":"method"},{"path":"\/documentation\/codeedittextview\/textlinestorage\/textlinestorageyiterator\/compare(_:_:)","title":"func compare