Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
c3d3628
Expose textColor and caretColor APIs
Apr 28, 2022
83148f2
Swift package manager
Jul 11, 2022
d172305
Fix when consumed from swift
Jul 11, 2022
0420ed1
Fix build issue
Jul 11, 2022
745cc96
Migrate example to SPM
maitbayev Jul 20, 2025
5912379
Add SwiftUIExample
maitbayev Jul 20, 2025
44f8830
Refactor out MathKeyboard
maitbayev Jul 20, 2025
3fadb23
Support MacOS as no-op
maitbayev Jul 20, 2025
550b905
MTDisplay+Editing on MacOS
maitbayev Jul 21, 2025
7a1f7ad
keyboard compiles under macos but no-op
maitbayev Mar 19, 2026
5650516
Replace UIColor with MTColor
maitbayev Mar 19, 2026
82a2161
MTKeyInput protocol
maitbayev Mar 19, 2026
87b5573
Use MT* instead of UI*
maitbayev Mar 19, 2026
35b70fe
Abstract MTCancelView
maitbayev Mar 19, 2026
03c4970
small update
maitbayev Mar 19, 2026
f7ffb1f
abstract gesture recognizer
maitbayev Mar 20, 2026
62db2a0
MTCancelView on macos
maitbayev Mar 20, 2026
cc950f7
nit
maitbayev Mar 20, 2026
ef9ba3d
Remove unused gesture delegate
maitbayev Mar 20, 2026
57c8d0f
Isolate UITextInput methods
Mar 20, 2026
0407e25
Isolate UITextInput methods
Mar 20, 2026
57c6924
Fix
maitbayev Mar 20, 2026
9a2f541
handle weak ref correctly
Mar 20, 2026
6f84bca
fmt
Mar 20, 2026
6a8fbc9
Isolate UIResponder
Mar 20, 2026
8740da2
Handle Responder for macos
Mar 20, 2026
91ee29c
For now, make MTCareView no-op on macos but comileable
Mar 20, 2026
f7e4de3
New organization for categories
Mar 20, 2026
2b322d9
Use pinToSuperview
Mar 20, 2026
09aecce
A few Layout compatibility methods
Mar 20, 2026
1deff5b
Fist version without top-level ios guard
Mar 20, 2026
f02dd39
Update MacOS example
Mar 20, 2026
fd0881d
Introduce UIView and NSView categories
Mar 20, 2026
b1fa7b9
CaretView works on MacOS mostly
Mar 20, 2026
2679f85
Handle coordinate system correctly
Mar 20, 2026
5a8820c
re-org
Mar 20, 2026
207dec0
Remove unused code
Mar 20, 2026
25192b7
Move pointInside to UIView category
Mar 20, 2026
4ca139e
Simplify
Mar 20, 2026
6a508c8
Draw CaretHandle
Mar 20, 2026
fd2fbbe
CaretHandle changes when grabbing
Mar 20, 2026
9188910
Handle mouse events in CaretHandle
Mar 21, 2026
8a13a62
Fix overflowing
Mar 21, 2026
3e1afa2
Refactor
Mar 21, 2026
e63bc06
Add TODO
Mar 21, 2026
56ec1a9
Minor update
maitbayev Mar 21, 2026
bbd646f
Improvet hit testing
maitbayev Mar 21, 2026
fd75853
Handle becomeFirstResponder correctly on MacOS
maitbayev Mar 21, 2026
f2bd26e
Hide cancelview and caretview
Mar 21, 2026
2e1b468
Merge pull request #4 from maitbayev/macos
maitbayev Mar 21, 2026
da49570
Initial SwiftUI keyboard
maitbayev Mar 21, 2026
7e15330
Initial SwiftUI based keyboard
maitbayev Mar 22, 2026
0bfc78c
nit
maitbayev Mar 22, 2026
01ff25a
Keyboard numbers in SwiftUI
maitbayev Mar 23, 2026
667b8ba
New SwiftUI package
maitbayev Mar 23, 2026
e3f5889
iOS 17
maitbayev Mar 23, 2026
8127709
Merge pull request #5 from maitbayev/swiftui-keyboard
maitbayev Mar 23, 2026
e988d1c
Adjust equal-grid utility column to 22.5 percent width
maitbayev Mar 23, 2026
ca8fb5f
Make equal-grid numbers layout the default and remove extra tab
maitbayev Mar 23, 2026
1c414b3
Refactor numbers keyboard to SwiftUI stack-based layout
maitbayev Mar 23, 2026
e3920e6
Restore image-based keyboard background in SwiftUI numbers layout
maitbayev Mar 23, 2026
f60974b
Split numbers keyboard into feature, main, and utility sections
maitbayev Mar 23, 2026
208756e
Use Grid for main numeric columns and inline feature/utility sections
maitbayev Mar 23, 2026
bdf967b
Simplify numbers keyboard data model and grid wiring
maitbayev Mar 23, 2026
bde5257
Use KeyboardState snapshot inside NumbersKeyboardView
maitbayev Mar 23, 2026
63093df
Replace NumbersKeyboardModel with KeyboardState in numbers view
maitbayev Mar 23, 2026
52c26f9
Restore pressed-state highlight overlays for keyboard buttons
maitbayev Mar 23, 2026
fdc766b
small fix
Mar 23, 2026
40f3ee7
Merge branch 'codex/add-new-tab-for-numberskeyboardview' of https://g…
Mar 23, 2026
fbaf7a5
Reduce pressed overlay opacity to keep key labels visible
maitbayev Mar 23, 2026
047a929
Merge branch 'codex/add-new-tab-for-numberskeyboardview' of https://g…
Mar 23, 2026
6ffb01b
Render pressed highlight behind key label content
maitbayev Mar 23, 2026
2afce3a
Merge branch 'codex/add-new-tab-for-numberskeyboardview' of https://g…
Mar 23, 2026
4f03d5a
Simplify KeyboardConfigurable to apply KeyboardState
maitbayev Mar 23, 2026
3bba82d
Merge branch 'codex/add-new-tab-for-numberskeyboardview' of https://g…
Mar 23, 2026
0d65b42
Make KeyboardCell a pure data model without SwiftUI view storage
maitbayev Mar 23, 2026
9143514
Merge branch 'codex/add-new-tab-for-numberskeyboardview' of https://g…
Mar 23, 2026
1acf19a
Fix MTKeyboard state application to use existing setter methods
maitbayev Mar 23, 2026
d2a4fdc
Merge branch 'codex/add-new-tab-for-numberskeyboardview' of https://g…
Mar 23, 2026
67a8bca
Refactor
Mar 23, 2026
c8464f6
Numbers keyboard refactored
maitbayev Mar 23, 2026
28f0127
Simplify shared keyboard composition
maitbayev Mar 23, 2026
0c87fa5
Refactor
Mar 24, 2026
ba95902
OperationsKeyboard migrated to SwiftUI
maitbayev Mar 24, 2026
f0aed38
Implement SwiftUI functions keyboard tab
maitbayev Mar 24, 2026
c446bdc
Merge pull request #8 from maitbayev/codex/implement-mtkeyboardtab3-i…
maitbayev Mar 24, 2026
efcdb49
letters keyboard
maitbayev Mar 24, 2026
3807c81
nit
maitbayev Mar 24, 2026
92dca1e
SwiftUI based keyboard tabs
maitbayev Mar 24, 2026
62f9f4c
Address reviews
maitbayev Mar 24, 2026
887f87c
Rename to setTextInput
Mar 24, 2026
f7d1dec
Fix recursive
Mar 24, 2026
8b8157e
First and second tab are almost identical
Mar 24, 2026
08fd6f3
Fix Tab4
Mar 24, 2026
db2bfa9
Fix functions keyboard key layout to match legacy tab
maitbayev Mar 24, 2026
16811b5
Fixes Functions keyboard
maitbayev Mar 24, 2026
ff316d5
Merge branch 'master' of https://github.com/maitbayev/MathEditor
Mar 24, 2026
922bba1
Route keyboard actions via root and use typed SwiftUI keyboard views
maitbayev Mar 24, 2026
ad15c4e
Merge branch 'master' of https://github.com/maitbayev/MathEditor into…
Mar 24, 2026
f456773
Refactor keyboard UI to SwiftUI, remove legacy UIKit bridges, and add…
maitbayev Mar 24, 2026
fd266c4
Remove MathKeyboard dependency from MathKeyboardSwiftUI
Mar 24, 2026
8047cee
Match Swift extension API to ObjC MTView categories
maitbayev Mar 24, 2026
7b2f209
Initial migration
Mar 24, 2026
e8315ce
Merge pull request #15 from maitbayev/math-resources
maitbayev Mar 24, 2026
efee7f7
Move editing internals back from mathEditorSwiftUI and drop shim indi…
maitbayev Mar 24, 2026
283a635
MTCancelView in SwiftUI
Mar 24, 2026
6a1fcf7
Merge pull request #17 from maitbayev/codex/refactor-mtcaretview-and-…
maitbayev Mar 24, 2026
cd325e6
Migrate MTMathList editing category to Swift
maitbayev Mar 24, 2026
1527558
Fix MTMathList editing Swift API compatibility
maitbayev Mar 24, 2026
f5a77d8
Migrate MTDisplay editing categories to Swift
maitbayev Mar 24, 2026
89fc3d5
Fix buiild issues
Mar 24, 2026
92a8774
More removal
Mar 24, 2026
dfd0ef8
Merge pull request #18 from maitbayev/codex/migrate-mtmathlist+editin…
maitbayev Mar 24, 2026
e68f3c5
Merge branch 'master' of https://github.com/maitbayev/MathEditor into…
Mar 24, 2026
f1196d3
Merge branch 'math-editor-swift' of https://github.com/maitbayev/Math…
Mar 24, 2026
0d384d4
Restore Obj-C migration comments in Swift editing extensions
maitbayev Mar 24, 2026
b92572f
Merge pull request #19 from maitbayev/codex/restore-obj-c-comments
maitbayev Mar 24, 2026
3f7569d
Version
maitbayev Mar 24, 2026
3c64ec4
more improvements
maitbayev Mar 24, 2026
512f791
Small improvements
maitbayev Mar 24, 2026
58ea7cd
Bring back the commnets
maitbayev Mar 25, 2026
145b9a5
regressions.md
maitbayev Mar 26, 2026
a4cfcf8
Append verified highlight and API parity regressions
maitbayev Mar 26, 2026
f595e4a
Reorganize MathEditorSwift package sources layout
maitbayev Mar 26, 2026
e7c240f
Rename to MathEditorSwift
Mar 26, 2026
dadfaed
Update
Mar 26, 2026
a114152
iosMath simpliufy
Mar 26, 2026
26067af
Fix
Mar 26, 2026
594eda9
Extract MathEditorSwift into its own SPM package
maitbayev Mar 26, 2026
e8b0890
Add To Do
Mar 26, 2026
6e97941
Merge branch 'math-editor-swift-2' of https://github.com/maitbayev/Ma…
Mar 26, 2026
4cfe6a0
Merge pull request #21 from maitbayev/codex/compare-swift-and-objecti…
maitbayev Mar 26, 2026
00e6cc9
Merge pull request #20 from maitbayev/math-editor-swift-2
maitbayev Mar 26, 2026
3ecc741
Revert mathEditor
Mar 26, 2026
261d50e
revert
Mar 26, 2026
358a92b
MathKeyboardSwiftUI uses MathKeyboardSwift
Mar 26, 2026
c6cdeb5
Remove compat functions in favor of categories
Mar 26, 2026
44e5643
MTCaretHandlSwift -> CaretHandle
Mar 26, 2026
4a4c9b7
MTCaretViewSwift -> MTCaretView
Mar 26, 2026
d14d299
DummyTextInputHandler
Mar 26, 2026
7bd875b
Reuse Responder methods
Mar 26, 2026
a3e7977
Improve MTCaretView
Mar 26, 2026
9f7b3a7
labelLayoutIfNeeded
Mar 26, 2026
b5fc807
remove unused
Mar 26, 2026
9527470
Add Swift Testing port of display editing tests
maitbayev Mar 26, 2026
c6962b7
Fix Swift test API and access control issues
maitbayev Mar 26, 2026
33ce010
Fix tests
Mar 26, 2026
ffb4f09
fmt
Mar 26, 2026
c2b8f4f
Ported tests
maitbayev Mar 26, 2026
2e34d75
Merge branch 'math-editor-swift' of https://github.com/maitbayev/Math…
Mar 26, 2026
9edd8d6
Remove "Swift" from protocols
Mar 26, 2026
ddff370
MTKeyboardSwift to MTKeyboard
Mar 26, 2026
a469f56
Fix build
Mar 26, 2026
f09656e
Simplify keyboard state updates in MTEditableMathLabelSwift
maitbayev Mar 26, 2026
0b86250
Merge pull request #24 from maitbayev/codex/remove-mteditablemathlabe…
maitbayev Mar 26, 2026
b0aee31
revert Package.swift
Mar 26, 2026
02cc1d9
Revert
Mar 26, 2026
34b45b7
Fix disabling equal
Mar 26, 2026
053f7a1
MathEditorSwift
maitbayev Mar 26, 2026
5529eca
Fix MathEditor.xcodeproj
Mar 26, 2026
7db5519
Remove more platform guards from keyboard
Mar 26, 2026
6601141
Text color is correct
Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
BasedOnStyle: Chromium
AlignTrailingComments: true
BreakBeforeBraces: Linux
ColumnLimit: 120
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PointerBindsToType: false
SpacesBeforeTrailingComments: 1
TabWidth: 8
UseTab: Never
...
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,7 @@ Carthage/Build

fastlane/report.xml
fastlane/screenshots

# Swift Package Manager
.swiftpm/
.build/
252 changes: 70 additions & 182 deletions MathEditor.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0720"
LastUpgradeVersion = "2630"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand All @@ -27,6 +27,15 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6003F589195388D20070C39A"
BuildableName = "MathEditor_Example.app"
BlueprintName = "MathEditor_Example"
ReferencedContainer = "container:MathEditor.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO">
Expand All @@ -39,17 +48,6 @@
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "6003F589195388D20070C39A"
BuildableName = "MathEditor_Example.app"
BlueprintName = "MathEditor_Example"
ReferencedContainer = "container:MathEditor.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
Expand All @@ -71,8 +69,6 @@
ReferencedContainer = "container:MathEditor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
Expand Down
10 changes: 0 additions & 10 deletions MathEditor.xcworkspace/contents.xcworkspacedata

This file was deleted.

3 changes: 2 additions & 1 deletion MathEditorExample/MTViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
//

#import "MTViewController.h"
#import "MTMathKeyboardRootView.h"

@import MathKeyboard;

@interface MTViewController () <MTEditableMathLabelDelegate>

Expand Down
14 changes: 14 additions & 0 deletions MathEditorSwift/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 27 additions & 0 deletions MathEditorSwift/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// swift-tools-version: 5.6

import PackageDescription

let package = Package(
name: "MathEditorSwift",
platforms: [.iOS(.v13), .macOS(.v11)],
products: [
.library(
name: "MathEditorSwift",
targets: ["MathEditorSwift"]
)
],
dependencies: [
.package(url: "https://github.com/maitbayev/iosMath.git", branch: "master")
],
targets: [
.target(
name: "MathEditorSwift",
dependencies: ["iosMath"]
),
.testTarget(
name: "MathEditorSwiftTests",
dependencies: ["MathEditorSwift"]
),
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//
// MTTextInputHandler.swift
// MathEditorSwift
//
// Created by Madiyar Aitbayev on 26/03/2026.
//

#if canImport(UIKit)

import UIKit

struct DummyTextInputHandler {
var selectedTextRange: UITextRange?
var markedTextRange: UITextRange?
var markedTextStyle: [NSAttributedString.Key: Any]?
var beginningOfDocument = UITextPosition()
var endOfDocument = UITextPosition()
var inputDelegate: (any UITextInputDelegate)?
var tokenizer: UITextInputTokenizer = UITextInputStringTokenizer()
}

#else // canImport(UIKit)

struct DummyTextInputHandler {
}

#endif // canImport(UIKit)
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import Foundation

public final class MTCancelView: MTView {
private let imageView: MTImageView

@objc
public init(target: AnyObject, action: Selector) {
#if canImport(UIKit)
let image = MTImage(systemName: "xmark.circle")?.withRenderingMode(.alwaysTemplate)
imageView = MTImageView(image: image)
imageView.contentMode = .scaleAspectFit
imageView.tintColor = .secondaryLabel
#else
imageView = MTImageView(frame: .zero)
imageView.image = MTImage(systemSymbolName: "xmark.circle", accessibilityDescription: nil)
imageView.imageScaling = .scaleProportionallyUpOrDown
imageView.contentTintColor = .secondaryLabelColor
#endif

super.init(frame: .zero)

addSubview(imageView)
imageView.pinToSuperview()

addGestureRecognizer(MTTapGestureRecognizer(target: target, action: action))

isHidden = true
}

@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Loading