first commit

This commit is contained in:
2026-03-10 16:18:05 +00:00
commit 11f9c069b5
31635 changed files with 3187747 additions and 0 deletions

View File

@@ -0,0 +1,145 @@
import ExpoModulesCore
import UIKit
public class RouterToolbarModule: Module {
public func definition() -> ModuleDefinition {
Name("ExpoRouterToolbarModule")
View(RouterToolbarHostView.self) {
Prop("disableForceFlatten") { (_: RouterToolbarHostView, _: Bool) in
// This prop is used in ExpoShadowNode in order to disable force flattening, when display: contents is used
}
}
View(RouterToolbarItemView.self) {
Prop("identifier") { (view: RouterToolbarItemView, identifier: String) in
view.identifier = identifier
}
Prop("type") { (view: RouterToolbarItemView, type: ItemType) in
view.type = type
}
Prop("title") { (view: RouterToolbarItemView, title: String?) in
view.title = title
}
Prop("systemImageName") { (view: RouterToolbarItemView, systemImageName: String?) in
view.systemImageName = systemImageName
}
Prop("xcassetName") { (view: RouterToolbarItemView, xcassetName: String?) in
view.xcassetName = xcassetName
}
Prop("image") { (view: RouterToolbarItemView, image: SharedRef<UIImage>?) in
view.customImage = image
}
Prop("tintColor") { (view: RouterToolbarItemView, tintColor: UIColor?) in
view.customTintColor = tintColor
}
Prop("imageRenderingMode") { (view: RouterToolbarItemView, mode: ImageRenderingMode?) in
view.imageRenderingMode = mode
}
Prop("hidesSharedBackground") { (view: RouterToolbarItemView, hidesSharedBackground: Bool) in
view.hidesSharedBackground = hidesSharedBackground
}
Prop("sharesBackground") { (view: RouterToolbarItemView, sharesBackground: Bool) in
view.sharesBackground = sharesBackground
}
Prop("disableForceFlatten") { (_: RouterToolbarItemView, _: Bool) in
// This prop is used in ExpoShadowNode in order to disable force flattening, when display: contents is used
}
Prop("barButtonItemStyle") { (view: RouterToolbarItemView, style: BarItemStyle?) in
view.barButtonItemStyle = style?.toUIBarButtonItemStyle()
}
Prop("width") { (view: RouterToolbarItemView, width: Double?) in
view.width = width
}
Prop("hidden") { (view: RouterToolbarItemView, hidden: Bool) in
view.routerHidden = hidden
}
Prop("selected") { (view: RouterToolbarItemView, selected: Bool) in
view.selected = selected
}
Prop("possibleTitles") { (view: RouterToolbarItemView, possibleTitles: [String]?) in
if let possibleTitles = possibleTitles {
view.possibleTitles = Set(possibleTitles)
} else {
view.possibleTitles = nil
}
}
Prop("badgeConfiguration") {
(view: RouterToolbarItemView, config: BadgeConfigurationRecord?) in
view.badgeConfiguration = config?.toBadgeConfiguration()
}
Prop("titleStyle") { (view: RouterToolbarItemView, style: TitleStyleRecord?) in
view.titleStyle = style?.toTitleStyle()
}
Prop("accessibilityLabel") { (view: RouterToolbarItemView, accessibilityLabel: String?) in
view.accessibilityLabel = accessibilityLabel
}
Prop("accessibilityHint") { (view: RouterToolbarItemView, accessibilityHint: String?) in
view.accessibilityHint = accessibilityHint
}
Prop("disabled") { (view: RouterToolbarItemView, disabled: Bool?) in
view.disabled = disabled ?? false
}
Events("onSelected")
}
}
}
enum BarItemStyle: String, Enumerable {
case plain
case prominent
func toUIBarButtonItemStyle() -> UIBarButtonItem.Style {
switch self {
case .plain:
return .plain
case .prominent:
if #available(iOS 26.0, *) {
return .prominent
} else {
return .done
}
}
}
}
enum ImageRenderingMode: String, Enumerable {
case template
case original
}
struct BadgeConfigurationRecord: Record {
@Field var value: String?
@Field var backgroundColor: UIColor?
@Field var color: UIColor?
@Field var fontFamily: String?
@Field var fontSize: Double?
@Field var fontWeight: String?
func toBadgeConfiguration() -> BadgeConfiguration {
return BadgeConfiguration(
value: value,
backgroundColor: backgroundColor,
color: color,
fontFamily: fontFamily,
fontSize: fontSize,
fontWeight: fontWeight
)
}
}
struct TitleStyleRecord: Record {
@Field var fontFamily: String?
@Field var fontSize: Double?
@Field var fontWeight: String?
@Field var color: UIColor?
func toTitleStyle() -> TitleStyle {
return TitleStyle(
fontFamily: fontFamily,
fontSize: fontSize,
fontWeight: fontWeight,
color: color
)
}
}