Bot releases are visible (Hide)
This release removes all deprecated code and cleans up the library.
RichTextFormat
is a new namespace with format types and views.RichTextContext
has more intuitive ways to paste text content.RichTextContext
has a new observable paragraphStyle
property.RichTextInsertion
has new static convenience insertion builders.RichTextViewer
is a new SwiftUI view that can be used to view rich text.RichTextView
no longer resets font and styles when setting up the macOS text view.RichTextContextFocusedValueKey
is renamed to RichTextContext.FocusedValueKey
.RichTextEditor
is now configured and styled with modifiers instead of the init.RichTextFont
pickers are now configured with a shared modifier instead of the init.RichTextFont
size picker is now configured with a shared modifier instead of the init.RichTextFormat
components are now configured with a shared modifier instead of the init.RichTextFormatSheet
has been renamed to RichTextFormat.Sheet
to trim SDK surface area.RichTextFormatSidebar
has been renamed to RichTextFormat.Sidebar
to trim SDK surface area.RichTextFormatToolbar
has been renamed to RichTextFormat.Toolbar
to trim SDK surface area.RichTextLine.SpacingPicker
is now configured with a shared view modifier instead of the init.RichTextKeyboardToolbar
is now configured and styled with two view modifiers instead of the init.This release adds a lot of new RichTextAction
cases and adjusts the context and coordinator subscription.
This release also deprecates RichTextAttributeReader
and RichTextAttributeWriter
functionality that are not used by the library, in favor of RichTextViewComponent
, to reduce the complexity of the library.
Until now, these functions mostly did the same thing, but sometimes the RichTextViewComponent
have to use its text storage or layout manager, or update the typing attributes. This caused the code to diverge and mostly identical copies had co-exist, where the reader and writer versions were not even used by the library.
By deprecating these functions, we can simplify the library in 1.0, and focus more on unifying the different RichTextViewComponent
implementations (UITextView
in iOS and NSTextView
in macOS), rather than providing a low level string handling interface.
FontRepresentable
has new extensions.RichTextAction
has a new label
property.RichTextCommand.ActionButtonGroup
has new inits.RichTextCommand.FormatMenu
is a lot more configurable.RichTextFormatSheet
is now available on all platforms.RichTextFormatSheet
has new configuration and style types.RichTextFormatSidebar
has new configuration and style types.RichTextFormatToolbar
is a new rich text formatting toolbar.RichTextKeyboardToolbar
has a new config to always be shown.RichTextLine
is a new namespace with support for linespacing.RichTextStyle.Button
now supports using custom button styles.RichTextView
has a new theme that lets you define its style.RichTextViewComponent
has a new hasRichTextStyle
function.RichTextViewComponent
has a new toggleRichTextStyle
function.RichTextViewComponent
now handles superscript changes properly.RichTextFormatToolbar
is no longer navigation wrapped by default.RichTextFormatToolbar
has a new asSheet()
function that does this.RichTextColor
icon
is no longer optional.RichTextColor
has a new titleKey
property.RichTextContext
makes coordinator handle alignment.RichTextCoordinator
now syncs an extra time at ends editing.RichTextAlignment
now behaves better.RichTextAlignment.Picker
now uses provided values.RichTextCoordinator
now handles indentation changes.RichTextAttributeReader
has deprecated a lot of functions.RichTextAttributeWriter
has deprecated a lot of functions.RichTextCommand.AlignmentOptionsGroup
has been deprecated.RichTextCommand.FontSizeOptionsGroup
has been deprecated.RichTextCommand.IndentOptionsGroup
has been deprecated.RichTextCommand.StyleOptionsGroup
has been deprecated.RichTextCommand.SuperscriptOptionsGroup
has been deprecated.RichTextContext
replaces individual colors with a single colors
.RichTextContext
replaces individual styles with a single styles
.RichTextContext
userActionPublisher
is renamed to actionPublisher
.RichTextCoordinator
functions calling handle(_:)
have been deprecated.RichTextFormatSheet
has been renamed to RichTextFormatToolbar
.RTKL10n.bundle
has been deprecated since we can use the .module
bundle.RichTextColor.undefined
was no longer used and has been removed.This release starts moving types and views that relate to other types into the type namespaces, to make the surface area of the library smaller.
RichTextAlignment.Picker
has a new style parameter.RichTextCommand
is a new namespace for command-related views.RichTextColor.Picker
now shows a quick button to reset the color.RichTextLabelValue
is a new protocol to harmonize label-compatible label values.RichTextLabelValue
to get a label
property.RichTextLabelValue
get a label
that has improved accessibility.RichTextColor
.adjust
now takes an optional color.RichTextColor
.allCases
no longer returns undefined
.RichTextFormatSheet
no longer hard-codes an accent color.RichTextStyle
views no longer use a style - use foregroundStyle
, tint
and accentColor
instead.Image.symbol(...)
removes palette
rendering mode to fix incorrect color scheme behavior.RichTextAlignment.Picker
now hides its picker label.RichTextColor.Picker
no longer auto-adjusts black and white to make it possible to actually set those colors.RichTextAction*
views have been renamed to RichTextAction.Button*
.RichTextAlignment*
views have been renamed to RichTextAlignment.*
.RichTextArgumentReader
deprecates the font name and size functions.RichTextArgumentWriter
deprecates the font name and size functions.RichTextColor*
views have been renamed to RichTextColor.*
.RichTextCommand
views are now nested within the new RichTextCommand
type.RichTextComponent
deprecates the font name and size functions.RichTextDataFormatMenu
has been renamed to RichTextDataFormat.Menu
.RichTextFont*
views have been renamed to RichTextFont.*
.RichTextStyle*
views have been renamed to RichTextStyle.*
.Thanks to @ropellanda, RichTextKit now supports Vision OS.
Thanks to @screenworker, RichTextEditor now has a config
that can disable scrolling.
Image
has a new rich text-specific image builders.RichTextEditor
has a new config
value parameter that can disable scrolling.RichTextView
has a new configuration
property that can disable scrolling.RichTextAction
static properties have been deprecated in favor of their corresponding functions.RichTextReader
.richTextRange
has been renamed to .richTextFullRange
.RichTextAction
corrects some icons and localized strings.RichTextAttributeReader
now use range
correctly in setRichTextSuperscriptLevel
.RichTextCoordinator
now sets correct underline
color instead of foreground
color.RichTextAttributeReader/Writer
functions now require a range.Thanks to @DominikBucher12 and @msrutek-paylocity, some bugs have been fixed and some formatting adjusted.
RichTextColor
has a new attribute
property.RichTextColor
has a new underline
color.RichTextFormatSheet
has a new colorPickers
init parameter.RichTextFormatSidebar
has a new colorPickers
init parameter.RichTextAttributeReader
now allows providing a nil
range.RichTextAttributeWriter
now handles setRichTextStyle
with a switch.RichTextAttributeWriter
and RichTextViewComponent
shares more code.RichTextFormatSheet
now exposes its init params as mutable properties.RichTextFormatSidebar
now handles keyboard focus way better than before.RichTextFormatSidebar
now exposes its init params as mutable properties.RichTextViewComponent
now handles setCurrentRichTextStyle
with a switch.RichTextViewComponent
now handles setCurrentRichTextStyle
with a switch.RichTextViewComponent
uses the new color attribute
to optimize some code.SwiftFormat
now uses consecutiveSpaces
.RichTextAttributeWriter
now handles strikethrough
with a switch.RichTextView
now handles initial drag & drop better on iOS.RichTextAttributeReader
color functions are replaced with a single richTextColor(_:at:)
.RichTextAttributeWriter
color functions are replaced with a single setRichTextColor(_:to:at:)
.Thanks to @Mcrich23, the RichTextColorPicker
now adjusts foreground and background color for the current color scheme.
RichTextColor
has a new .undefined
type.RichTextColor
has a new color adjust function.RichTextColorPicker
now takes an RichTextColor
.RichTextColorPicker
now uses the color type icon by default.RichTextColorPicker
now uses the color type color adjustment.Thanks to @Mcrich23, RichTextKit now supports Mac Catalyst.
Thanks to @msrutek-paylocity the unit tests are in a much better shape.
This version drops support for iOS 14, tvOS 14, macOS 11 and watchOS 7.
This version also consolidates all separate attribute readers and writers into the base attribute reader/writer protocols.
RichTextColor
is a new enum that defines supported colors that can be set.RichTextColorPicker
now works on all platforms.RichTextCommandButton
is a new button for commands.RichTextCommandButtonGroup
is a new button group for commands.RichTextContext
has new enum-based style and color functions.RichTextAttributeReader
can handle more colors and superscripting.RichTextAttributeWriter
can handle more colors and superscripting.RichTextAttributeReader
now has all specific getter functions.RichTextAttributeWriter
now has all specific setter functions.RichTextKeyboardToolbar
now opens the format sheet in medium size on iPhone.richText
.RichTextAttributeWriter
renames functionality and omits to:
param name.RichTextColorPicker
initializer has been cleaned up and simplified.RichTextColorPicker.PickerColor
has been deprecated.RichTextColorPickerColor
has been deprecated.RichTextContext
replaces a lot of action-based functions with handle(_:)
.RichTextIndent
has been deprecated.RichTextIndentPicker
has been deprecated.RichTextViewComponent
and omits to:
param name.richTextMenu*
images are renamed to richTextAction*
.RichTextContext
replaces a lot of action-based functions with handle(_:)
.This version makes the observable trigger properties internal. These properties were never made to be used from the outside, and all have context functions that set them, so use these functions instead.
IMPORTANT
The safeRange
adjustment may lead to crashes, although I haven't been able to make it crash. If so, investigate. If you use the safe range yourself, to access attributes, make sure to set the new attribute parameter to true. It's hopefully temporary.
RichTextContext
has a new attributedString
property.RichTextContext
's paste functions now use the selected range index as default index.RichTextReader
safeRange
no longer subtracts 1 from the string length.RichTextReader
will now move the cursor after the pasted text, if it's pasted at selected range.RichTextViewComponent
image pasting has been rewritten.RichTextViewComponent
will now clear the selected range when pasting in images using that range.RichTextReader
safe range fix makes pasting text at the end behave better.RichTextViewComponent
now properly restores the font size after pasting an image.RichTextContext
trigger properties have been made internal.RichTextColorPicker
now supports hiding the icon.RichTextColorPicker
now supports specifying quick colors.RichTextColorPickerColor
is a new enum with curated colors.RichTextFormatSheet
adds curated colors to its color pickers.RichTextFormatSidebar
adds curated colors to its color pickers.RichTextColorPickerStack
has been deprecated.RichTextColorPicker
now supports hiding the icon.RichTextColorPicker
now supports specifying quick colors.RichTextColorPickerColor
is a new enum with curated colors.RichTextFormatSheet
adds curated colors to its color pickers.RichTextFormatSidebar
adds curated colors to its color pickers.RichTextColorPickerStack
has been deprecated.This version is a hot fix that fixes some performance issues in 0.6.
Thanks to @jamesbradleym, RichTextKit now supports text indentation.
Image
has new richTextIndentDecrease
and richTextIndentIncrease
actions.
NSTextAttachment
has a new attachedImage
property.
RichTextAction
has new increaseIndent
and decreaseIndent
actions.
RichTextActionButtonGroup
is a new view that groups multiple action buttons together.
RichTextAttributeWriter
now supports affecting the entire text by default.
RichTextButtonGroup
is a new view that groups multiple buttons together.
RichTextColorWriter
now supports affecting the entire text by default.
RichTextContext
has new canDecreaseIndent
and canIncreaseIndent
properties.
RichTextContext
has new decreaseIndent()
and increaseIndent()
functions.
RichTextContext
has new resetAttributedString()
and setAttributedString()
functions.
RichTextFontWriter
now supports affecting the entire text by default.
RichTextFormatSheet
now groups related buttons and also adds indent buttons.
RichTextIndent
is a new enum for handling text indent changes.
RichTextIndentPicker
is a new enum for picking a text indent.
RichTextIndentReader
is a new type for managing text indents.
RichTextIndentWriter
is a new type for managing text indents.
RichTextKeyboardToolbar
now supports modofying the format sheet before presenting it.
RichTextStyleToggleGroup
is a new view that groups multiple toggles together.
RichTextStyleWriter
now supports affecting the entire text by default.
RichTextKeyboardToolbar
height
and spacing
has been moved to RichTextKeyboardToolbarStyle
.Thanks to @jamesbradleym, RichTextKit now supports text indentation.
Image
has new richTextIndentDecrease
and richTextIndentIncrease
actions.
NSTextAttachment
has a new attachedImage
property.
RichTextAction
has new increaseIndent
and decreaseIndent
actions.
RichTextActionButtonGroup
is a new view that groups multiple action buttons together.
RichTextAttributeWriter
now supports affecting the entire text by default.
RichTextButtonGroup
is a new view that groups multiple buttons together.
RichTextColorWriter
now supports affecting the entire text by default.
RichTextContext
has new canDecreaseIndent
and canIncreaseIndent
properties.
RichTextContext
has new decreaseIndent()
and increaseIndent()
functions.
RichTextContext
has new resetAttributedString()
and setAttributedString()
functions.
RichTextFontWriter
now supports affecting the entire text by default.
RichTextFormatSheet
now groups related buttons and also adds indent buttons.
RichTextIndent
is a new enum for handling text indent changes.
RichTextIndentPicker
is a new enum for picking a text indent.
RichTextIndentReader
is a new type for managing text indents.
RichTextIndentWriter
is a new type for managing text indents.
RichTextKeyboardToolbar
now supports modofying the format sheet before presenting it.
RichTextStyleToggleGroup
is a new view that groups multiple toggles together.
RichTextStyleWriter
now supports affecting the entire text by default.
RichTextView
s now update whenever the text changes.RichTextKeyboardToolbar
height
and spacing
has been moved to RichTextKeyboardToolbarStyle
.This release addresses some performance changes, by trying to minimize the number of redraws.
As a result, the RichTextContext
's selectedRange
is no longer observable, since that caused every input or text position change to redraw the entire app. The library and demo app however still updates way to often, and too much. For instance, switching between having a selected range and not should only redraw the copy button, but now updates the entire screen. If you know how to minimize this, please reach out.
Furthermore, this release adds support for focus values and menu commands. You can see them in action in the demo app.
Commands
is a new namespace for app commands.Focus
is a new namespace for focus values.RichTextDataFormat
has a new fileFormatText
property.RichTextDataFormat
has a new isArchivedDataFormat
property.RichTextDataFormat
has a new libraryFormats
property that returns all formats except the vendorArchivedData
format.RichTextDataFormatMenu
is a new menu that triggers an action for various formats.RichTextDataReader
now has ways to get data for the current rich text.RichTextExportMenu
is a new menu for exporting rich text.RichTextContextFocusedValueKey
is a new rich text context focus key.RichTextFormatCommandMenu
is a new command menu for adding rich text formatting to the system menu.RichTextNSSharingMenu
is a new macOS-specific menu for sharing rich text with NSSharingServices
.RichTextShareCommandMenu
is a new command menu for adding rich text sharing and exporting to the system menu.RichTextShareMenu
is a new menu for sharing rich text.ViewDebug
is a new demo app class that is used for view debugging capabilities.RichTextCoordinator
now checks if properties have changed before it syncs.RichTextKeyboardToolbar
no longer allocates width for hidden items.RichTextStyleToggle
is no longer tinted by default when inactive.PdfDataReader
has been renamed to RichTextPdfDataReader
.RichTextDataWriter
is deprecated.RichTextDataWriter
functionality has been moved to RichTextDataReader
.RichTextContext
no longer has a font size in the initializer, use StandardFontSizeProvider
(CGFloat, TextEditor etc.) instead.RichTextContext
selectedRange
is no longer published.RichTextDataReader
now implements RichTextReader
.RichTextDataReader
format-specific data functions have been made private.RichTextStyleToggle.Style
inactiveColor
is now optional.NSMutableString
format-specific initializers have been made private.