Skip to content

Commit 1850086

Browse files
committed
Merge branch 'Features/Empty_Label_Support' into main
2 parents 9d5ad75 + bc94073 commit 1850086

22 files changed

Lines changed: 619 additions & 330 deletions

.gitignore

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#macOS
2+
.DS_Store
3+
4+
# Xcode
5+
xcuserdata/
6+
Build/
7+
8+
# Cocoapods
9+
Pods
10+
*.xcworkspace
11+
12+
# Bundler
13+
vendor
14+
.bundle
15+
16+
#CocoaPods Keys
17+
.env

CHANGELOG.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# CHANGELOG
2+
3+
* Doing
4+
5+
+ (May) lookup baseline reset issue with overflowing text
6+
7+
* Feature/Empty_Label_Support/0.2.0 - 0.2.1
8+
9+
+ Added `oldText` and `newText` parameters to `onTextChange` observer
10+
+ Renamed `placeholder` to `cache`
11+
+ Apply cached attributes (if any) in case text have just changed from empty on text change
12+
+ More testbed cleanup
13+
14+
* Feature/Empty_Label_Support/0.1.9
15+
16+
+ Cleaned up testbed views
17+
18+
* Feature/Empty_Label_Support/0.1.8
19+
20+
+ Cleanup files and folders
21+
22+
* Feature/Empty_Label_Support/0.1.7
23+
24+
+ Removed unused parameter from `onTextChange()`
25+
+ Added `NSMutableParagraphStyle.withProperty()` to mutate paragraph style in place
26+
27+
* Feature/Empty_Label_Support/0.1.6
28+
29+
+ Added `NSParagraphStyle.paragraphStyleByAddingProperty` for in-place(ish) mutation
30+
+ Copied text alignment at paragraph style mutation(s)
31+
32+
* Feature/Empty_Label_Support/0.1.5
33+
34+
+ Added empty string ("") and `textAlignment` mutation to testbed
35+
36+
* Feature/Empty_Label_Support/0.1.4
37+
38+
+ Added `UILabel.placeholder` attributed string to cache typography even when text is empty
39+
+ Added `NSMutableString` extensions for in-place(ish) mutation
40+
+ `NSMutableString.stringByAddingAttribute`
41+
+ `NSMutableString.stringByRemovingAttribute`
42+
43+
* Feature/Empty_Label_Support/0.1.0 - 0.1.2
44+
45+
+ Added `CHANGELOG.md`
46+
+ Reuse `TextObserver.OnChangeAction` in `UILabel` text observer extension
47+
+ Renamings
48+
49+
* Feature/Empty_Label_Support
50+
51+
+ Merged `attributes-lost-when-text-is-empty` from Adrian Zyga
52+
53+
* 0.0.0 - 0.8.1
54+
55+
+ Initial implementation
56+
+ Testbed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ A single extension on `UILabel` that adds some typographic property (see above)
1717

1818
See the complementary article at [**UILabel line height, letter spacing and more** UILabel typography extensions].
1919

20-
> 🚧 **Work in progress**. I have high hopes to add leading and trailing image feature, as well as upport for `UIButton`.
20+
> 🚧 **Work in progress**. I have high hopes to add leading and trailing image feature, as well as support for `UIButton`.
2121
2222
## License
2323

UILabel_Typography_Extensions.xcodeproj/project.pbxproj

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,20 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
5501DB9127D81E70009E0FDA /* EmptyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5501DB9027D81E70009E0FDA /* EmptyViewController.swift */; };
11+
5501DB9327D81EC9009E0FDA /* ManualViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5501DB9227D81EC9009E0FDA /* ManualViewController.swift */; };
12+
5501DB9527D82099009E0FDA /* UIButton+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5501DB9427D82099009E0FDA /* UIButton+Extensions.swift */; };
13+
5501DB9727D8240E009E0FDA /* UIButton+Styles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5501DB9627D8240E009E0FDA /* UIButton+Styles.swift */; };
1014
551B425F259BCE40001310A9 /* UIFont+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 551B425E259BCE40001310A9 /* UIFont+Extensions.swift */; };
1115
554AF31825961B6200A23E41 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 554AF31725961B6200A23E41 /* README.md */; };
12-
55653BE625A36E0300678FD9 /* NSAttributedString+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F7E34F25A0B32D00E7F48B /* NSAttributedString+Extensions.swift */; };
1316
559795E525A259E400A757A3 /* UIColor+Styles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 559795E425A259E400A757A3 /* UIColor+Styles.swift */; };
1417
559FB34E25A4B1A200CE795D /* LineHeightViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 559FB34D25A4B1A200CE795D /* LineHeightViewController.swift */; };
18+
55A3EECE27D7F24C0002193A /* UIFont+Inspection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55A3EECD27D7F24C0002193A /* UIFont+Inspection.swift */; };
1519
55F236A225912BBE0007BC69 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F236A125912BBE0007BC69 /* AppDelegate.swift */; };
1620
55F236A425912BBE0007BC69 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F236A325912BBE0007BC69 /* SceneDelegate.swift */; };
1721
55F236A825912BC30007BC69 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 55F236A725912BC30007BC69 /* Assets.xcassets */; };
1822
55F236AE25912BC30007BC69 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 55F236AC25912BC30007BC69 /* LaunchScreen.storyboard */; };
19-
55F236B725912BF20007BC69 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F236B625912BF20007BC69 /* ViewController.swift */; };
23+
55F236B725912BF20007BC69 /* MenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F236B625912BF20007BC69 /* MenuViewController.swift */; };
2024
55F236BB25912C430007BC69 /* Withable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F236BA25912C430007BC69 /* Withable.swift */; };
2125
55F236BF25912C710007BC69 /* UIKit+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F236BD25912C700007BC69 /* UIKit+Extensions.swift */; };
2226
55F236CA25912E690007BC69 /* PreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55F236C925912E690007BC69 /* PreviewView.swift */; };
@@ -30,29 +34,34 @@
3034
/* End PBXBuildFile section */
3135

3236
/* Begin PBXFileReference section */
37+
5501DB9027D81E70009E0FDA /* EmptyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyViewController.swift; sourceTree = "<group>"; };
38+
5501DB9227D81EC9009E0FDA /* ManualViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManualViewController.swift; sourceTree = "<group>"; };
39+
5501DB9427D82099009E0FDA /* UIButton+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+Extensions.swift"; sourceTree = "<group>"; };
40+
5501DB9627D8240E009E0FDA /* UIButton+Styles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIButton+Styles.swift"; sourceTree = "<group>"; };
3341
551B425E259BCE40001310A9 /* UIFont+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+Extensions.swift"; sourceTree = "<group>"; };
42+
554A2DCF27D67B66008A4AE4 /* CHANGELOG.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
3443
554AF31725961B6200A23E41 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
3544
559795E425A259E400A757A3 /* UIColor+Styles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Styles.swift"; sourceTree = "<group>"; };
3645
559FB34D25A4B1A200CE795D /* LineHeightViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineHeightViewController.swift; sourceTree = "<group>"; };
46+
55A3EECD27D7F24C0002193A /* UIFont+Inspection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+Inspection.swift"; sourceTree = "<group>"; };
3747
55F2369E25912BBE0007BC69 /* UILabel_Typography_Extensions.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UILabel_Typography_Extensions.app; sourceTree = BUILT_PRODUCTS_DIR; };
3848
55F236A125912BBE0007BC69 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
3949
55F236A325912BBE0007BC69 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
4050
55F236A725912BC30007BC69 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
4151
55F236AD25912BC30007BC69 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
4252
55F236AF25912BC30007BC69 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
43-
55F236B625912BF20007BC69 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
53+
55F236B625912BF20007BC69 /* MenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuViewController.swift; sourceTree = "<group>"; };
4454
55F236BA25912C430007BC69 /* Withable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Withable.swift; sourceTree = "<group>"; };
4555
55F236BD25912C700007BC69 /* UIKit+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIKit+Extensions.swift"; sourceTree = "<group>"; };
4656
55F236C925912E690007BC69 /* PreviewView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreviewView.swift; sourceTree = "<group>"; };
47-
55F236CE259135680007BC69 /* UILabel+DeprecatedExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+DeprecatedExtensions.swift"; sourceTree = "<group>"; };
57+
55F236CE259135680007BC69 /* UILabel+Typography 1.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+Typography 1.swift"; sourceTree = "<group>"; };
4858
55F7E33125A03D8300E7F48B /* UILabel+Observer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+Observer.swift"; sourceTree = "<group>"; };
49-
55F7E33425A03F9600E7F48B /* UILabel+Typograpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+Typograpy.swift"; sourceTree = "<group>"; };
59+
55F7E33425A03F9600E7F48B /* UILabel+Typography 2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+Typography 2.swift"; sourceTree = "<group>"; };
5060
55F7E33825A03FE500E7F48B /* UILabel+Grid.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+Grid.swift"; sourceTree = "<group>"; };
5161
55F7E34025A0A91E00E7F48B /* LoremIpsumViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoremIpsumViewController.swift; sourceTree = "<group>"; };
5262
55F7E34325A0AA5E00E7F48B /* GlyphViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlyphViewController.swift; sourceTree = "<group>"; };
5363
55F7E34725A0AD7F00E7F48B /* AttributesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttributesViewController.swift; sourceTree = "<group>"; };
5464
55F7E34A25A0ADFA00E7F48B /* UILabel+Typograpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILabel+Typograpy.swift"; sourceTree = "<group>"; };
55-
55F7E34F25A0B32D00E7F48B /* NSAttributedString+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSAttributedString+Extensions.swift"; sourceTree = "<group>"; };
5665
55F7F0A1259A6F03001BEF90 /* Typography.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Typography.swift; sourceTree = "<group>"; };
5766
/* End PBXFileReference section */
5867

@@ -75,26 +84,42 @@
7584
55F7E33125A03D8300E7F48B /* UILabel+Observer.swift */,
7685
55F7E33825A03FE500E7F48B /* UILabel+Grid.swift */,
7786
559795E425A259E400A757A3 /* UIColor+Styles.swift */,
78-
55F7E34F25A0B32D00E7F48B /* NSAttributedString+Extensions.swift */,
79-
558D107725A15277005DB3DA /* Drafts */,
87+
551B425E259BCE40001310A9 /* UIFont+Extensions.swift */,
88+
55A3EECD27D7F24C0002193A /* UIFont+Inspection.swift */,
8089
);
8190
path = Typography;
8291
sourceTree = "<group>";
8392
};
84-
558D107725A15277005DB3DA /* Drafts */ = {
93+
558D107725A15277005DB3DA /* Deprecated */ = {
8594
isa = PBXGroup;
8695
children = (
87-
55F7E33425A03F9600E7F48B /* UILabel+Typograpy.swift */,
88-
55F236CE259135680007BC69 /* UILabel+DeprecatedExtensions.swift */,
89-
551B425E259BCE40001310A9 /* UIFont+Extensions.swift */,
96+
55F236CE259135680007BC69 /* UILabel+Typography 1.swift */,
97+
55F7E33425A03F9600E7F48B /* UILabel+Typography 2.swift */,
9098
);
91-
path = Drafts;
99+
path = Deprecated;
100+
sourceTree = "<group>";
101+
};
102+
55A3EECF27D7F32E0002193A /* View */ = {
103+
isa = PBXGroup;
104+
children = (
105+
55F236B625912BF20007BC69 /* MenuViewController.swift */,
106+
5501DB9227D81EC9009E0FDA /* ManualViewController.swift */,
107+
5501DB9027D81E70009E0FDA /* EmptyViewController.swift */,
108+
55F7E34725A0AD7F00E7F48B /* AttributesViewController.swift */,
109+
55F7E34325A0AA5E00E7F48B /* GlyphViewController.swift */,
110+
559FB34D25A4B1A200CE795D /* LineHeightViewController.swift */,
111+
55F7E34025A0A91E00E7F48B /* LoremIpsumViewController.swift */,
112+
5501DB9427D82099009E0FDA /* UIButton+Extensions.swift */,
113+
5501DB9627D8240E009E0FDA /* UIButton+Styles.swift */,
114+
);
115+
path = View;
92116
sourceTree = "<group>";
93117
};
94118
55F2369525912BBE0007BC69 = {
95119
isa = PBXGroup;
96120
children = (
97121
554AF31725961B6200A23E41 /* README.md */,
122+
554A2DCF27D67B66008A4AE4 /* CHANGELOG.md */,
98123
55F236A025912BBE0007BC69 /* UILabel_Typography_Extensions */,
99124
55F2369F25912BBE0007BC69 /* Products */,
100125
);
@@ -113,13 +138,10 @@
113138
children = (
114139
55F236A125912BBE0007BC69 /* AppDelegate.swift */,
115140
55F236A325912BBE0007BC69 /* SceneDelegate.swift */,
141+
55A3EECF27D7F32E0002193A /* View */,
116142
554AF31C25961F2400A23E41 /* Typography */,
117143
55F236C225912C780007BC69 /* Extensions */,
118-
55F236B625912BF20007BC69 /* ViewController.swift */,
119-
55F7E34725A0AD7F00E7F48B /* AttributesViewController.swift */,
120-
55F7E34325A0AA5E00E7F48B /* GlyphViewController.swift */,
121-
559FB34D25A4B1A200CE795D /* LineHeightViewController.swift */,
122-
55F7E34025A0A91E00E7F48B /* LoremIpsumViewController.swift */,
144+
558D107725A15277005DB3DA /* Deprecated */,
123145
55F236A725912BC30007BC69 /* Assets.xcassets */,
124146
55F236AC25912BC30007BC69 /* LaunchScreen.storyboard */,
125147
55F236AF25912BC30007BC69 /* Info.plist */,
@@ -209,22 +231,26 @@
209231
buildActionMask = 2147483647;
210232
files = (
211233
55F7E34B25A0ADFA00E7F48B /* UILabel+Typograpy.swift in Sources */,
212-
55653BE625A36E0300678FD9 /* NSAttributedString+Extensions.swift in Sources */,
213234
55F236A225912BBE0007BC69 /* AppDelegate.swift in Sources */,
214235
55F7F0A2259A6F03001BEF90 /* Typography.swift in Sources */,
215236
55F236CA25912E690007BC69 /* PreviewView.swift in Sources */,
237+
5501DB9327D81EC9009E0FDA /* ManualViewController.swift in Sources */,
216238
559FB34E25A4B1A200CE795D /* LineHeightViewController.swift in Sources */,
239+
5501DB9727D8240E009E0FDA /* UIButton+Styles.swift in Sources */,
217240
55F7E33225A03D8300E7F48B /* UILabel+Observer.swift in Sources */,
218241
55F236BB25912C430007BC69 /* Withable.swift in Sources */,
219242
55F7E34425A0AA5E00E7F48B /* GlyphViewController.swift in Sources */,
220243
55F236BF25912C710007BC69 /* UIKit+Extensions.swift in Sources */,
244+
55A3EECE27D7F24C0002193A /* UIFont+Inspection.swift in Sources */,
221245
55F236A425912BBE0007BC69 /* SceneDelegate.swift in Sources */,
222246
551B425F259BCE40001310A9 /* UIFont+Extensions.swift in Sources */,
247+
5501DB9527D82099009E0FDA /* UIButton+Extensions.swift in Sources */,
223248
55F7E34125A0A91E00E7F48B /* LoremIpsumViewController.swift in Sources */,
224249
559795E525A259E400A757A3 /* UIColor+Styles.swift in Sources */,
225250
55F7E34825A0AD7F00E7F48B /* AttributesViewController.swift in Sources */,
226-
55F236B725912BF20007BC69 /* ViewController.swift in Sources */,
251+
55F236B725912BF20007BC69 /* MenuViewController.swift in Sources */,
227252
55F7E33E25A051FE00E7F48B /* UILabel+Grid.swift in Sources */,
253+
5501DB9127D81E70009E0FDA /* EmptyViewController.swift in Sources */,
228254
);
229255
runOnlyForDeploymentPostprocessing = 0;
230256
};

UILabel_Typography_Extensions/Typography/Drafts/UILabel+DeprecatedExtensions.swift renamed to UILabel_Typography_Extensions/Deprecated/UILabel+Typography 1.swift

File renamed without changes.

UILabel_Typography_Extensions/Typography/Drafts/UILabel+Typograpy.swift renamed to UILabel_Typography_Extensions/Deprecated/UILabel+Typography 2.swift

File renamed without changes.

UILabel_Typography_Extensions/SceneDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
2121
// Use a UIHostingController as window root view controller.
2222
if let windowScene = scene as? UIWindowScene {
2323
let window = UIWindow(windowScene: windowScene)
24-
window.rootViewController = ViewController()
24+
window.rootViewController = MenuViewController()
2525
self.window = window
2626
window.makeKeyAndVisible()
2727
}

UILabel_Typography_Extensions/Typography/NSAttributedString+Extensions.swift

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//
2+
// UIFont+Extensions.swift
3+
// UILabel_Typography_Extensions
4+
//
5+
// Created by Geri Borbás on 29/12/2020.
6+
//
7+
8+
import UIKit
9+
10+
11+
extension UIFont {
12+
13+
static func newYork(ofSize size: CGFloat) -> UIFont {
14+
let font: UIFont
15+
if let newYork = UIFont.italicSystemFont(ofSize: size).fontDescriptor.withDesign(.serif) {
16+
font = UIFont(descriptor: newYork, size: size)
17+
} else {
18+
font = UIFont.italicSystemFont(ofSize: size)
19+
}
20+
return font
21+
}
22+
}

UILabel_Typography_Extensions/Typography/Drafts/UIFont+Extensions.swift renamed to UILabel_Typography_Extensions/Typography/UIFont+Inspection.swift

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//
2-
// UIFont+Extensions.swift
2+
// UIFont+Inspection.swift
33
// UILabel_Typography_Extensions
44
//
5-
// Created by Geri Borbás on 29/12/2020.
5+
// Created by Geri Borbás on 08/03/2022.
66
//
77

88
import UIKit
@@ -16,16 +16,6 @@ extension UIFont {
1616
}.joined(separator: "\n")
1717
}
1818

19-
static func newYork(ofSize size: CGFloat) -> UIFont {
20-
let font: UIFont
21-
if let newYork = UIFont.italicSystemFont(ofSize: size).fontDescriptor.withDesign(.serif) {
22-
font = UIFont(descriptor: newYork, size: size)
23-
} else {
24-
font = UIFont.italicSystemFont(ofSize: size)
25-
}
26-
return font
27-
}
28-
2919
static func inspectNewYork() {
3020
logNewYorkSizes()
3121
}

0 commit comments

Comments
 (0)