added hstack wrap thing

undo
saint 2024-05-15 11:57:41 -04:00
parent f3d52a23f7
commit 9550790a17
10 changed files with 344 additions and 615 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
xcuserdata/
build/
.DS_Store
.fdignore
.rgignore

View File

@ -9,24 +9,23 @@
/* Begin PBXBuildFile section */
8514D5BC299EFB780054F185 /* store.db in Resources */ = {isa = PBXBuildFile; fileRef = 8514D5BB299EFB780054F185 /* store.db */; };
8514D5BF299F04710054F185 /* GRDB in Frameworks */ = {isa = PBXBuildFile; productRef = 8514D5BE299F04710054F185 /* GRDB */; };
8514D5C2299F04A20054F185 /* GRDBQuery in Frameworks */ = {isa = PBXBuildFile; productRef = 8514D5C1299F04A20054F185 /* GRDBQuery */; };
852774C129A150B100458CA7 /* Line.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852774C029A150B100458CA7 /* Line.swift */; };
8528897529B2B86B003F2E16 /* CrownOfThorns.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8528897429B2B86B003F2E16 /* CrownOfThorns.swift */; };
8528897C29BD69B2003F2E16 /* VisibilityTrackingScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8528897929BD69B1003F2E16 /* VisibilityTrackingScrollView.swift */; };
8528897D29BD69B2003F2E16 /* VisibilityTrackingModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8528897A29BD69B1003F2E16 /* VisibilityTrackingModifier.swift */; };
8528897E29BD69B2003F2E16 /* VisibilityTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8528897B29BD69B2003F2E16 /* VisibilityTracker.swift */; };
854207E22BF3E6110027A2E7 /* SwiftUIIntrospect in Frameworks */ = {isa = PBXBuildFile; productRef = 854207E12BF3E6110027A2E7 /* SwiftUIIntrospect */; };
854207E82BF50C310027A2E7 /* WrappingHStack in Frameworks */ = {isa = PBXBuildFile; productRef = 854207E72BF50C310027A2E7 /* WrappingHStack */; };
85431A892905F4F500EE0760 /* glossApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85431A882905F4F500EE0760 /* glossApp.swift */; };
85431A8B2905F4F500EE0760 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85431A8A2905F4F500EE0760 /* ContentView.swift */; };
85431A8D2905F4F600EE0760 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85431A8C2905F4F600EE0760 /* Assets.xcassets */; };
85431A902905F4F600EE0760 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85431A8F2905F4F600EE0760 /* Preview Assets.xcassets */; };
85431A922905F4F600EE0760 /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85431A912905F4F600EE0760 /* Persistence.swift */; };
85431A952905F4F600EE0760 /* gloss.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 85431A932905F4F600EE0760 /* gloss.xcdatamodeld */; };
85431A9C2905F5D800EE0760 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85431A9B2905F5D800EE0760 /* SwiftUIView.swift */; };
8590D96729A183EE001EF84F /* AppDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8590D96629A183EE001EF84F /* AppDatabase.swift */; };
8590D96929A18A6D001EF84F /* LineRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8590D96829A18A6C001EF84F /* LineRequest.swift */; };
8590D96C29A92146001EF84F /* JsonImport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8590D96B29A92146001EF84F /* JsonImport.swift */; };
85942EE429ACF54A00307621 /* ScrollableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85942EE329ACF54A00307621 /* ScrollableView.swift */; };
85942EE729AD083600307621 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 85942EE629AD083600307621 /* Introspect */; };
85942EE929AD51A100307621 /* Ribbon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85942EE829AD51A100307621 /* Ribbon.swift */; };
85942EEB29AD55A400307621 /* RibbonRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85942EEA29AD55A400307621 /* RibbonRequest.swift */; };
85942EED29AEA04200307621 /* SelectedRibbon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85942EEC29AEA04200307621 /* SelectedRibbon.swift */; };
@ -36,12 +35,11 @@
85942EF929B1150B00307621 /* SegDenorm.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85942EF829B1150B00307621 /* SegDenorm.swift */; };
85942EFE29B11C0B00307621 /* john_export.json in Resources */ = {isa = PBXBuildFile; fileRef = 85942EFC29B11C0A00307621 /* john_export.json */; };
85942EFF29B11C0B00307621 /* mark_export.json in Resources */ = {isa = PBXBuildFile; fileRef = 85942EFD29B11C0B00307621 /* mark_export.json */; };
85B267192A780FA60028FDD1 /* ReordableViews in Frameworks */ = {isa = PBXBuildFile; productRef = 85B267182A780FA60028FDD1 /* ReordableViews */; };
85B2671C2A7813950028FDD1 /* SwiftUIReorderableForEach in Frameworks */ = {isa = PBXBuildFile; productRef = 85B2671B2A7813950028FDD1 /* SwiftUIReorderableForEach */; };
85E00E7C29F34D2D00FF9E78 /* ScrollState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85E00E7B29F34D2D00FF9E78 /* ScrollState.swift */; };
85E00E7E29F34D3700FF9E78 /* ScrollStateRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85E00E7D29F34D3700FF9E78 /* ScrollStateRequest.swift */; };
85F01DF82978787800F317B4 /* AveriaSerifLibre-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 85F01DF72978787800F317B4 /* AveriaSerifLibre-Regular.ttf */; };
85F01DFB2978790400F317B4 /* xe-Dogma-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 85F01DFA2978790400F317B4 /* xe-Dogma-Bold.ttf */; };
85FE3EAB2B08181600666A3A /* GRDBQuery in Frameworks */ = {isa = PBXBuildFile; productRef = 85FE3EAA2B08181600666A3A /* GRDBQuery */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@ -57,7 +55,6 @@
85431A8C2905F4F600EE0760 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
85431A8F2905F4F600EE0760 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
85431A912905F4F600EE0760 /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = "<group>"; };
85431A942905F4F600EE0760 /* gloss.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = gloss.xcdatamodel; sourceTree = "<group>"; };
85431A9B2905F5D800EE0760 /* SwiftUIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIView.swift; sourceTree = "<group>"; };
8590D96629A183EE001EF84F /* AppDatabase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDatabase.swift; sourceTree = "<group>"; };
8590D96829A18A6C001EF84F /* LineRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LineRequest.swift; sourceTree = "<group>"; };
@ -79,7 +76,6 @@
85F01DFC29787B3500F317B4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
85F01DFD297A4EEA00F317B4 /* gloss.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = gloss.entitlements; sourceTree = "<group>"; };
85F01DFF297A4EEA00F317B4 /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; };
A7BAAF4EF300457DE01C135B /* Pods_gloss.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_gloss.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -87,11 +83,10 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
85B267192A780FA60028FDD1 /* ReordableViews in Frameworks */,
854207E82BF50C310027A2E7 /* WrappingHStack in Frameworks */,
854207E22BF3E6110027A2E7 /* SwiftUIIntrospect in Frameworks */,
8514D5BF299F04710054F185 /* GRDB in Frameworks */,
85B2671C2A7813950028FDD1 /* SwiftUIReorderableForEach in Frameworks */,
85942EE729AD083600307621 /* Introspect in Frameworks */,
8514D5C2299F04A20054F185 /* GRDBQuery in Frameworks */,
85FE3EAB2B08181600666A3A /* GRDBQuery in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -153,7 +148,6 @@
85431A9B2905F5D800EE0760 /* SwiftUIView.swift */,
85431A8C2905F4F600EE0760 /* Assets.xcassets */,
85431A912905F4F600EE0760 /* Persistence.swift */,
85431A932905F4F600EE0760 /* gloss.xcdatamodeld */,
85431A8E2905F4F600EE0760 /* Preview Content */,
852774C029A150B100458CA7 /* Line.swift */,
);
@ -190,7 +184,6 @@
isa = PBXGroup;
children = (
85F01DFF297A4EEA00F317B4 /* AuthenticationServices.framework */,
A7BAAF4EF300457DE01C135B /* Pods_gloss.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@ -213,10 +206,9 @@
name = gloss;
packageProductDependencies = (
8514D5BE299F04710054F185 /* GRDB */,
8514D5C1299F04A20054F185 /* GRDBQuery */,
85942EE629AD083600307621 /* Introspect */,
85B267182A780FA60028FDD1 /* ReordableViews */,
85B2671B2A7813950028FDD1 /* SwiftUIReorderableForEach */,
85FE3EAA2B08181600666A3A /* GRDBQuery */,
854207E12BF3E6110027A2E7 /* SwiftUIIntrospect */,
854207E72BF50C310027A2E7 /* WrappingHStack */,
);
productName = gloss;
productReference = 85431A852905F4F500EE0760 /* gloss.app */;
@ -230,7 +222,7 @@
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1320;
LastUpgradeCheck = 1420;
LastUpgradeCheck = 1430;
TargetAttributes = {
85431A842905F4F500EE0760 = {
CreatedOnToolsVersion = 13.2.1;
@ -249,9 +241,8 @@
packageReferences = (
8514D5BD299F04710054F185 /* XCRemoteSwiftPackageReference "GRDB.swift" */,
8514D5C0299F04A20054F185 /* XCRemoteSwiftPackageReference "GRDBQuery" */,
85942EE529AD083600307621 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */,
85B267172A780FA60028FDD1 /* XCRemoteSwiftPackageReference "ReordableViews" */,
85B2671A2A7813950028FDD1 /* XCRemoteSwiftPackageReference "swiftui-reorderable-foreach" */,
854207E02BF3E6110027A2E7 /* XCRemoteSwiftPackageReference "swiftui-introspect" */,
854207E62BF50C310027A2E7 /* XCRemoteSwiftPackageReference "WrappingHStack" */,
);
productRefGroup = 85431A862905F4F500EE0760 /* Products */;
projectDirPath = "";
@ -290,7 +281,6 @@
85942EF529B108C600307621 /* Seg.swift in Sources */,
85E00E7C29F34D2D00FF9E78 /* ScrollState.swift in Sources */,
8528897529B2B86B003F2E16 /* CrownOfThorns.swift in Sources */,
85431A952905F4F600EE0760 /* gloss.xcdatamodeld in Sources */,
85E00E7E29F34D3700FF9E78 /* ScrollStateRequest.swift in Sources */,
85942EE929AD51A100307621 /* Ribbon.swift in Sources */,
8590D96729A183EE001EF84F /* AppDatabase.swift in Sources */,
@ -424,7 +414,6 @@
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
@ -439,10 +428,11 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = gloss/gloss.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"gloss/Preview Content\"";
DEVELOPMENT_TEAM = C8XWX9329P;
DEVELOPMENT_TEAM = V8B2B34W7R;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = gloss/Info.plist;
@ -451,14 +441,15 @@
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.emily.gloss;
PRODUCT_BUNDLE_IDENTIFIER = com.aingel.gloss;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@ -475,10 +466,11 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = gloss/gloss.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_ASSET_PATHS = "\"gloss/Preview Content\"";
DEVELOPMENT_TEAM = C8XWX9329P;
DEVELOPMENT_TEAM = V8B2B34W7R;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = gloss/Info.plist;
@ -487,14 +479,15 @@
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.emily.gloss;
PRODUCT_BUNDLE_IDENTIFIER = com.aingel.gloss;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@ -544,30 +537,22 @@
minimumVersion = 0.5.1;
};
};
85942EE529AD083600307621 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */ = {
854207E02BF3E6110027A2E7 /* XCRemoteSwiftPackageReference "swiftui-introspect" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/siteline/SwiftUI-Introspect.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.2.3;
};
};
85B267172A780FA60028FDD1 /* XCRemoteSwiftPackageReference "ReordableViews" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/gadirom/ReordableViews";
requirement = {
branch = main;
kind = branch;
};
};
85B2671A2A7813950028FDD1 /* XCRemoteSwiftPackageReference "swiftui-reorderable-foreach" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/globulus/swiftui-reorderable-foreach";
repositoryURL = "https://github.com/siteline/swiftui-introspect";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.0;
};
};
854207E62BF50C310027A2E7 /* XCRemoteSwiftPackageReference "WrappingHStack" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/ksemianov/WrappingHStack";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.2.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
@ -576,40 +561,22 @@
package = 8514D5BD299F04710054F185 /* XCRemoteSwiftPackageReference "GRDB.swift" */;
productName = GRDB;
};
8514D5C1299F04A20054F185 /* GRDBQuery */ = {
854207E12BF3E6110027A2E7 /* SwiftUIIntrospect */ = {
isa = XCSwiftPackageProductDependency;
package = 854207E02BF3E6110027A2E7 /* XCRemoteSwiftPackageReference "swiftui-introspect" */;
productName = SwiftUIIntrospect;
};
854207E72BF50C310027A2E7 /* WrappingHStack */ = {
isa = XCSwiftPackageProductDependency;
package = 854207E62BF50C310027A2E7 /* XCRemoteSwiftPackageReference "WrappingHStack" */;
productName = WrappingHStack;
};
85FE3EAA2B08181600666A3A /* GRDBQuery */ = {
isa = XCSwiftPackageProductDependency;
package = 8514D5C0299F04A20054F185 /* XCRemoteSwiftPackageReference "GRDBQuery" */;
productName = GRDBQuery;
};
85942EE629AD083600307621 /* Introspect */ = {
isa = XCSwiftPackageProductDependency;
package = 85942EE529AD083600307621 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */;
productName = Introspect;
};
85B267182A780FA60028FDD1 /* ReordableViews */ = {
isa = XCSwiftPackageProductDependency;
package = 85B267172A780FA60028FDD1 /* XCRemoteSwiftPackageReference "ReordableViews" */;
productName = ReordableViews;
};
85B2671B2A7813950028FDD1 /* SwiftUIReorderableForEach */ = {
isa = XCSwiftPackageProductDependency;
package = 85B2671A2A7813950028FDD1 /* XCRemoteSwiftPackageReference "swiftui-reorderable-foreach" */;
productName = SwiftUIReorderableForEach;
};
/* End XCSwiftPackageProductDependency section */
/* Begin XCVersionGroup section */
85431A932905F4F600EE0760 /* gloss.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
85431A942905F4F600EE0760 /* gloss.xcdatamodel */,
);
currentVersion = 85431A942905F4F600EE0760 /* gloss.xcdatamodel */;
path = gloss.xcdatamodeld;
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
};
/* End XCVersionGroup section */
};
rootObject = 85431A7D2905F4F500EE0760 /* Project object */;
}

View File

@ -1,30 +1,12 @@
{
"pins" : [
{
"identity" : "cgmath",
"kind" : "remoteSourceControl",
"location" : "https://github.com/gadirom/CGMath",
"state" : {
"revision" : "ed3125a2d6d9a98f4a7d58a4f79fc9c159498650",
"version" : "1.0.4"
}
},
{
"identity" : "containergeometry",
"kind" : "remoteSourceControl",
"location" : "https://github.com/gadirom/ContainerGeometry",
"state" : {
"revision" : "4e6a5916da407e48ef4458bb970508527b9e05cc",
"version" : "1.0.2"
}
},
{
"identity" : "grdb.swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/groue/GRDB.swift.git",
"state" : {
"branch" : "master",
"revision" : "ba68e3b02d9ed953a0c9ff43183f856f20c9b7ce"
"revision" : "f1f8e8438ad815086b48660ddf87c788f9abe966"
}
},
{
@ -32,17 +14,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/groue/GRDBQuery",
"state" : {
"revision" : "df514f2bd74548f94e082f3233022190e594fce4",
"version" : "0.5.1"
}
},
{
"identity" : "reordableviews",
"kind" : "remoteSourceControl",
"location" : "https://github.com/gadirom/ReordableViews",
"state" : {
"branch" : "main",
"revision" : "636703c4f4aba60bfac7c09115516db82ea354d3"
"revision" : "be64298b4f9d70510226fa7e698aef84f41cec02",
"version" : "0.7.0"
}
},
{
@ -50,17 +23,17 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/siteline/SwiftUI-Introspect.git",
"state" : {
"revision" : "c18951c747ab62af7c15e17a81bd37d4fd5a9979",
"version" : "0.2.3"
"revision" : "7dc5b287f8040e4ad5038739850b758e78f77808",
"version" : "1.1.4"
}
},
{
"identity" : "swiftui-reorderable-foreach",
"identity" : "wrappinghstack",
"kind" : "remoteSourceControl",
"location" : "https://github.com/globulus/swiftui-reorderable-foreach",
"location" : "https://github.com/ksemianov/WrappingHStack",
"state" : {
"revision" : "47f6ca1ad906ef2ae1f872ed34a10cc615ad99ca",
"version" : "1.0.0"
"revision" : "3300f68b6bf5f8a75ee7ca8a40f136a558053d10",
"version" : "0.2.0"
}
}
],

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1420"
LastUpgradeVersion = "1430"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "2FEB6A3D-6E5D-4217-8815-CC53223502A6"
type = "1"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "19620363-AF5F-4353-862D-4E40746274F5"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "gloss/ContentView.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "572"
endingLineNumber = "572"
landmarkName = "body"
landmarkType = "24">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "A3202903-6BE5-4879-8970-4CE7B825E6DD"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "gloss/ContentView.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "574"
endingLineNumber = "574"
landmarkName = "body"
landmarkType = "24">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "DCBFFF14-138E-43D2-BA78-A5265A13CD4F"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "gloss/ContentView.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "465"
endingLineNumber = "465"
landmarkName = "body"
landmarkType = "24">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "1FDEB1B0-A696-4F5A-86AB-30728070E82F"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "gloss/ContentView.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "433"
endingLineNumber = "433"
landmarkName = "body"
landmarkType = "24">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@ -1,106 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>Associations (Playground) 1.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>12</integer>
</dict>
<key>Associations (Playground) 2.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>13</integer>
</dict>
<key>Associations (Playground).xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>11</integer>
</dict>
<key>MyPlayground (Playground) 1.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>9</integer>
</dict>
<key>MyPlayground (Playground) 2.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>10</integer>
</dict>
<key>MyPlayground (Playground).xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>8</integer>
</dict>
<key>Tour (Playground) 1.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>6</integer>
</dict>
<key>Tour (Playground) 2.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>7</integer>
</dict>
<key>Tour (Playground).xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>5</integer>
</dict>
<key>TransactionObserver (Playground) 1.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>3</integer>
</dict>
<key>TransactionObserver (Playground) 2.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>4</integer>
</dict>
<key>TransactionObserver (Playground).xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>1</integer>
</dict>
<key>gloss.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>2</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>85431A842905F4F500EE0760</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View File

@ -5,13 +5,12 @@
// Created by Saint on 10/23/22.
//
import SwiftUI
import GRDB
import GRDBQuery
import Introspect
import SwiftUIIntrospect
import os
import SwiftUIReorderableForEach
import SwiftUI
import WrappingHStack
let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "network")
var currentId: String?
@ -24,8 +23,8 @@ var disableDrop = false
// var curBook = "John"
extension UserDefaults {
public func optionalInt(forKey defaultName: String) -> Int? {
public extension UserDefaults {
func optionalInt(forKey defaultName: String) -> Int? {
let defaults = self
if let value = defaults.value(forKey: defaultName) {
return value as? Int
@ -33,7 +32,7 @@ extension UserDefaults {
return nil
}
public func optionalBool(forKey defaultName: String) -> Bool? {
func optionalBool(forKey defaultName: String) -> Bool? {
let defaults = self
if let value = defaults.value(forKey: defaultName) {
return value as? Bool
@ -49,10 +48,8 @@ func goToRibbon(selectedRibbon: Ribbon,
refresh: Binding<Bool>,
showOverlay: Binding<Bool>,
appDatabase: AppDatabase,
loading: Bool
)
loading: Bool)
{
Task {
// print("SELECTED RIBBON", selectedRibbon)
var scrollOffsetToSave = currentOffset
@ -60,14 +57,15 @@ func goToRibbon(selectedRibbon: Ribbon,
var updatedRibbon = selectedRibbon
if (selectedRibbon.id != destRibbon.id! || loading) {
if selectedRibbon.id != destRibbon.id! || loading {
print("switching ribbons")
// withAnimation(.spring(response: 0.05)) {
// showOverlay.wrappedValue = true
showOverlay.wrappedValue = true
// }
if (loading) {
if loading {
currentId = destRibbon.scrollId
// currentOffset = CGFloat(destRibbon.scrollOffset)
}
@ -79,7 +77,6 @@ func goToRibbon(selectedRibbon: Ribbon,
// print("end setting scroll offset")
refresh.wrappedValue.toggle()
var updateSelectRibbon = SelectedRibbon(id: Int64(1), ribbonId: destRibbon.id!)
// print("Saving selected ribbon")
// print(updateSelectRibbon)
@ -90,7 +87,7 @@ func goToRibbon(selectedRibbon: Ribbon,
}
}
if (!loading) {
if !loading {
print("not loading")
updatedRibbon.scrollOffset = Int(floor(scrollOffsetToSave!))
updatedRibbon.scrollId = scrollIdToSave!
@ -135,17 +132,14 @@ struct RibbonCrown : View {
@Query(SelectedRibbonRequest()) private var sr: [Ribbon]
@State var saveOffset = CGFloat()
var body: some View {
ZStack {
MyIcon().frame(
width: CGFloat(100 * 1.66 * scale),
height: CGFloat(100 * scale),
alignment: .center
).foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4)))
.if(draggedRibbon != nil && draggedRibbon!.id == ribbon.id && isDragging) { $0.overlay(Color(red: 0.1, green: 0.1, blue: 0.1)) }
// .offset(x: 10)
@ -160,7 +154,6 @@ struct RibbonCrown : View {
maxHeight: height,
alignment: .center)
.if(draggedRibbon != nil && draggedRibbon!.id == ribbon.id && isDragging) { $0.overlay(Color(red: 0.1, green: 0.1, blue: 0.1)) }
// .if(!isDragging || draggedRibbon == nil || draggedRibbon!.id != ribbon.id) { $0.background(Color(red: 0.1, green: 0.1, blue: 0.1)) }
@ -174,10 +167,8 @@ struct RibbonCrown : View {
// .minimumScaleFactor(0.5)
// .padding([.top, .bottom], 10)
.font(Font.custom("AveriaSerifLibre-Regular", size: CGFloat(10)))
}
.frame(width: CGFloat(100 * 1.66 * scale + 10), height: CGFloat(100 * scale + 5))
}
}
@ -190,7 +181,7 @@ func makeVerseView(seg: SegDenorm) -> some View {
var retView = Text("")
var segSplit = seg.body.components(separatedBy: ";;")
let decoder = JSONDecoder()
segSplit.enumerated().forEach({ (index, item) in
for (index, item) in segSplit.enumerated() {
let verse = try! decoder.decode(Verse.self, from: item.data(using: .utf8)!)
retView = retView + Text(String(verse.verse))
@ -201,7 +192,7 @@ func makeVerseView(seg: SegDenorm) -> some View {
retView = retView + Text(verse.body)
.foregroundColor(Color.white)
.font(Font.custom("AveriaSerifLibre-Regular", size: 15))
})
}
return retView
}
@ -211,13 +202,19 @@ private struct SegRow: View {
var body: some View {
var retView = Text("")
// .onTapGesture {
// // selectedLine = seg.id
// // Print(selectedLine)
// Print("meow")
// // Print(verse.body)
// }
var segSplit = seg.body.components(separatedBy: ";;")
let decoder = JSONDecoder()
// Text(segSplit[0].body)
// .id(seg.id)
// VStack {
// ForEach(segSplit.indices) { i in
segSplit.enumerated().forEach({ (index, item) in
segSplit.enumerated().forEach { _, item in
let verse = try! decoder.decode(Verse.self, from: item.data(using: .utf8)!)
var attributedString: AttributedString {
@ -236,22 +233,19 @@ private struct SegRow: View {
.baselineOffset(6.0)
.foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
retView = retView + Text(attributedString)
// .frame(maxWidth: .infinity, alignment: .leading)
// .contentShape(Rectangle())
retView = retView +
Text(attributedString)
.foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
.font(Font.custom("AveriaSerifLibre-Regular", size: 20))
// .frame(maxWidth: .infinity, alignment: .leading)
// .contentShape(Rectangle())
// .listRowBackground(Color(red: 0.2, green: 0.8, blue: 0.2))
// .listRowInsets(EdgeInsets())
// .padding(EdgeInsets(top: 10, leading: 20, bottom: 40, trailing: 20))
// .listRowSeparator(.hidden)
// .id(String(seg.id) + "body" + String(i))
// .id(seg.id)
//.onTapGesture {
// selectedLine = seg.id
//Print(selectedLine)
//}
// .listRowBackground(Color(red: 0.2, green: 0.8, blue: 0.2))
// .listRowInsets(EdgeInsets())
@ -263,14 +257,36 @@ private struct SegRow: View {
// selectedLine = seg.id
// Print(selectedLine)
// }
})
}
// }
return retView
let myText = "There was a man sent from God, whose name was John. This man came for a witness, to give testimony of the light, that all men might believe through him. He was not the light, but was to give testimony of the light. That was the true light, which enlighteneth every man that cometh into this world. He was in the world, and the world was made by him, and the world knew him not."
let arrayOfText = myText.components(separatedBy: " ")
var wordSelected = ""
var newView = WrappingHStack(alignment: .leading, horizontalSpacing: 3.5) {
ForEach(0..<arrayOfText.count, id: \.self) { index in
Text(arrayOfText[index])
.foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
.font(Font.custom("AveriaSerifLibre-Regular", size: 20))
.foregroundColor(Color.white)
// .background(Color.black)
.padding(.horizontal, 0)
.onTapGesture {
Print(arrayOfText[index])
Print(index)
}
}
}
// return retView
return newView } }
struct ContentView: View {
@State var viewState = CGSize.zero
@State var pulledOut = CGSize.zero
@State var taskTitle: String = "FIRST DOGGG"
@ -290,7 +306,6 @@ struct ContentView: View {
@State var vertSep = CGFloat(20)
@Environment(\.appDatabase) private var appDatabase
@Query(SegDenormRequest(book: "bible.mark")) private var segs: [SegDenorm]
@ -316,13 +331,11 @@ struct ContentView: View {
@State var reorder = true
@Query(RibbonRequest()) private var ribbons: [Ribbon]
@Query<SelectedRibbonRequest> var selectedRibbon: [Ribbon]
// @Query(RibbonRequest(id: Int64(UserDefaults.standard.optionalInt(forKey: "lastRibbonId") ?? 1))) private var selectedRibbon: [Ribbon]
init() {
UITableView.appearance().backgroundColor = UIColor(Color(red: 0.2, green: 0.2, blue: 0.2))
_selectedRibbon = Query(SelectedRibbonRequest())
@ -358,8 +371,7 @@ struct ContentView: View {
showOverlay: $showOverlay,
refresh: $refresh,
draggedRibbon: draggedRibbon,
isDragging: isDragging
)
isDragging: isDragging)
.onDrag {
self.draggedRibbon = ribbon
return NSItemProvider()
@ -368,22 +380,18 @@ struct ContentView: View {
delegate: DropViewDelegate(destinationItem: ribbon,
draggedItem: $draggedRibbon,
isDragging: $isDragging,
appDatabase: appDatabase)
)
appDatabase: appDatabase))
.offset(x: 6, y: 6)
}
// .foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
}
.frame(width: geometry.size.width, height: geometry.size.height - 100, alignment: .topLeading)
.background(Color(red: 0.1, green: 0.1, blue: 0.1))
.zIndex(0)
.animation(.default, value: ribbons)
.onDrop(of: [.item],
delegate: DropViewDelegate2(isDragging: $isDragging)
)
delegate: DropViewDelegate2(isDragging: $isDragging))
// Spacer()
@ -406,7 +414,6 @@ struct ContentView: View {
// .animation(nil)
VStack {
ScrollViewReader { proxy in
VisibilityTrackingScrollView(action: handleVisibilityChanged) {
// ScrollView {
@ -414,8 +421,7 @@ struct ContentView: View {
LazyVStack {
ForEach(segs) { seg in
SegRow(seg: seg,
ribbonId: selectedRibbon[0].id!
)
ribbonId: selectedRibbon[0].id!)
.id("\(seg.id)")
.offset(x: -dragOffset)
// .offset(x: pulledOut.width)
@ -437,7 +443,7 @@ struct ContentView: View {
.background(Color(red: 0.18, green: 0.18, blue: 0.18))
}
.onAppear() {
.onAppear {
Print("APPEAR")
// Print(selectedRibbon[0])
// scrollId = "3"
@ -452,9 +458,8 @@ struct ContentView: View {
showOverlay: $showOverlay,
appDatabase: appDatabase,
loading: true)
}
.onChange(of: refresh) { target in
.onChange(of: refresh) { _ in
// if let target = target {
// gTracker!.visibleViews["123123"] = CGFloat(100)
// Print("ON CHANGE", gTracker!.visibleViews)
@ -469,11 +474,10 @@ struct ContentView: View {
// if (currentId != scrollId!) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
Print(" scroll id target", scrollId)
Print(" current id ", currentId)
Print(gTracker!.sortedViewIDs)
if (currentId! != scrollId!) {
if currentId! != scrollId! {
Print("NO MATCH")
}
@ -482,7 +486,7 @@ struct ContentView: View {
var curOffset = gTracker!.visibleViews[scrollId!]
Print(" stats", gTracker!.visibleViews)
// // setScrollOffset = CGFloat(Int(currentOffset!) * -1 + Int(scrollOffset!))
if (curOffset != nil) {
if curOffset != nil {
setScrollOffset = CGFloat(Int(scrollOffset!) - Int(curOffset!))
Print("applying scroll offset \(setScrollOffset)")
// // setScrollOffset = CGFloat(Int(scrollOffset!))
@ -494,7 +498,6 @@ struct ContentView: View {
setScrollOffset = CGFloat(adjust)
refresh.toggle()
}
// // currentId = scrollId!
@ -507,16 +510,16 @@ struct ContentView: View {
}
}
}
.introspectScrollView { scrollView in
Print("introspect")
// scrollView.delegate = scrollDelegate
.introspect(.scrollView, on: .iOS(.v13, .v14, .v15, .v16, .v17)) { scrollView in Print("introspect")
// Print("Scroll delegate offset", scrollDelegate.scrollOffset)
if (setScrollOffset != nil) {
if setScrollOffset != nil {
// Print("Setting scroll offset in introspect", setScrollOffset)
DispatchQueue.main.async {
scrollView.contentOffset.y = scrollView.contentOffset.y + setScrollOffset!
setScrollOffset = nil
// self.showOverlay = false
withAnimation {
showOverlay = false
}
@ -543,7 +546,7 @@ struct ContentView: View {
DragGesture()
.onChanged { gesture in
if (endedDrag) {
if endedDrag {
endedDrag = false
scrollOffset = readOffset.y - 20
// _ = Print("meow")
@ -551,9 +554,9 @@ struct ContentView: View {
// logger.error("hello222")
// NSLog("hellooo")
Print(viewState.width)
if (abs(gesture.translation.width) > 20) {
if abs(gesture.translation.width) > 20 {
viewState.width = gesture.translation.width
if (gesture.translation.width < -50 && pulledOut.width == CGFloat(0)) {
if gesture.translation.width < -50, pulledOut.width == CGFloat(0) {
dragOffset = gesture.translation.width + 50
}
}
@ -563,10 +566,9 @@ struct ContentView: View {
.onEnded { _ in
endedDrag = true
var pulledOutWidth = CGFloat(0)
if (viewState.width < 0) {
if viewState.width < 0 {
pulledOutWidth = CGFloat(0)
}
else if abs(viewState.width + pulledOut.width ) > 30 {
} else if abs(viewState.width + pulledOut.width) > 30 {
pulledOutWidth = CGFloat(200)
}
@ -578,7 +580,7 @@ struct ContentView: View {
}
)
Text("DRAG").foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
Text("separator").foregroundColor(Color(UIColor(red: 0.76, green: 0.76, blue: 0.76, alpha: 1.00)))
.gesture(
DragGesture()
.onChanged { gesture in
@ -620,17 +622,15 @@ struct ContentView: View {
// }
)
ScrollViewReader { proxy in
ScrollViewReader { _ in
VisibilityTrackingScrollView(action: handleVisibilityChanged2) {
// ScrollView {
LazyVStack {
ForEach(segs) { seg in
SegRow(seg: seg,
ribbonId: selectedRibbon[0].id!
)
ribbonId: selectedRibbon[0].id!)
.id("\(seg.id)")
.padding(EdgeInsets(top: 10, leading: 20, bottom: 40, trailing: 20))
.trackVisibility(id: "\(seg.id)")
@ -648,7 +648,7 @@ struct ContentView: View {
.background(Color(red: 0.18, green: 0.18, blue: 0.18))
}
.onAppear() {
.onAppear {
Print("APPEAR")
// Print(selectedRibbon[0])
// scrollId = "3"
@ -663,7 +663,6 @@ struct ContentView: View {
// showOverlay: $showOverlay,
// appDatabase: appDatabase,
// loading: true)
}
// .onChange(of: refresh) { target in
// //if let target = target {
@ -693,7 +692,6 @@ struct ContentView: View {
// Print("NO MATCH")
// }
// // Print(" scroll offset target", scrollOffset)
// Print(" current offset ", gTracker!.visibleViews[scrollId!])
// var curOffset = gTracker!.visibleViews[scrollId!]
@ -760,7 +758,7 @@ struct ContentView: View {
DragGesture()
.onChanged { gesture in
if (endedDrag) {
if endedDrag {
endedDrag = false
scrollOffset = readOffset.y - 20
// _ = Print("meow")
@ -768,7 +766,7 @@ struct ContentView: View {
// logger.error("hello222")
// NSLog("hellooo")
Print(viewState.width)
if (abs(gesture.translation.width) > 20) {
if abs(gesture.translation.width) > 20 {
viewState.width = gesture.translation.width
}
// offset.y = gesture.translation.width
@ -777,10 +775,9 @@ struct ContentView: View {
.onEnded { _ in
endedDrag = true
var pulledOutWidth = CGFloat(0)
if (viewState.width < 0) {
if viewState.width < 0 {
pulledOutWidth = CGFloat(0)
}
else if abs(viewState.width + pulledOut.width ) > 30 {
} else if abs(viewState.width + pulledOut.width) > 30 {
pulledOutWidth = CGFloat(200)
}
@ -790,13 +787,11 @@ struct ContentView: View {
}
}
)
}
if (showOverlay) {
if showOverlay {
Rectangle()
.frame(width: geometry.size.width - 50, height: geometry.size.height + 200)
.background(.ultraThinMaterial)
// .blur(radius: 0.8)
@ -807,21 +802,15 @@ struct ContentView: View {
// .frame(width: geometry.size.width - 50)
.offset(x: pulledOut.width)
.offset(x: viewState.width, y: viewState.height)
.zIndex(2)
}
}
}
}
func handleVisibilityChanged2(_: String, change _: VisibilityChange, tracker _: VisibilityTracker<String>) {}
func handleVisibilityChanged2(_ id: String, change: VisibilityChange, tracker: VisibilityTracker<String>) {
}
func handleVisibilityChanged(_ id: String, change: VisibilityChange, tracker: VisibilityTracker<String>) {
func handleVisibilityChanged(_: String, change _: VisibilityChange, tracker: VisibilityTracker<String>) {
// var printRate: Int64 = 10
gTracker = tracker
@ -843,8 +832,7 @@ struct ContentView: View {
// }
let visibleViews2 = Array(tracker.visibleViews.keys)
if (visibleViews2.count == 0) {
if visibleViews2.count == 0 {
return
}
@ -878,52 +866,48 @@ private let itemFormatter: DateFormatter = {
struct DropViewDelegate2: DropDelegate {
@Binding var isDragging: Bool
func dropUpdated(info: DropInfo) -> DropProposal? {
func dropUpdated(info _: DropInfo) -> DropProposal? {
return DropProposal(operation: .move)
}
func performDrop(info: DropInfo) -> Bool {
func performDrop(info _: DropInfo) -> Bool {
isDragging = false
return true
}
func dropEntered(info: DropInfo) {
func dropEntered(info _: DropInfo) {
isDragging = true
print("SECOND DROPPPOOO")
}
}
struct DropViewDelegate: DropDelegate {
let destinationItem: Ribbon
// @Binding var colors: [Color]
@Binding var draggedItem: Ribbon?
@Binding var isDragging: Bool
let appDatabase: AppDatabase
func dropUpdated(info: DropInfo) -> DropProposal? {
func dropUpdated(info _: DropInfo) -> DropProposal? {
return DropProposal(operation: .move)
}
func dropExited(info: DropInfo) {
func dropExited(info _: DropInfo) {
print("EXITED")
isDragging = false
}
func dropEntered(info: DropInfo) {
func dropEntered(info _: DropInfo) {
Task {
isDragging = true
if (draggedItem == nil) {
if draggedItem == nil {
return
}
if disableDrop {
return;
return
}
var newRibbon = draggedItem!
var newDest = destinationItem
@ -935,8 +919,7 @@ struct DropViewDelegate: DropDelegate {
print("dest item")
print(destinationItem)
if (draggedItem!.id! == destinationItem.id!) {
if draggedItem!.id! == destinationItem.id! {
return
}
@ -953,7 +936,7 @@ struct DropViewDelegate: DropDelegate {
}
}
func performDrop(info: DropInfo) -> Bool {
func performDrop(info _: DropInfo) -> Bool {
print("PERFORMED DROPPPP")
draggedItem = nil
isDragging = false
@ -971,7 +954,9 @@ struct ContentView_Previews: PreviewProvider {
extension View {
func Print(_ vars: Any...) -> some View {
for v in vars { print(v) }
for v in vars {
print(v)
}
return EmptyView()
}
}

View File

@ -1,8 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
<true/>
</dict>
<dict/>
</plist>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>gloss.xcdatamodel</string>
</dict>
</plist>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithCloudKit="false" userDefinedModelVersionIdentifier="">
<entity name="Item" representedClassName="Item" syncable="YES" codeGenerationType="class">
<attribute name="timestamp" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
</entity>
<elements>
<element name="Item" positionX="-63" positionY="-18" width="128" height="44"/>
</elements>
</model>