From a71ca30dd6e5e8a89a65fc6fe85a3901486f7141 Mon Sep 17 00:00:00 2001 From: John <109105353+jpeng-ms@users.noreply.github.com> Date: Mon, 5 Dec 2022 11:33:30 -0800 Subject: [PATCH] init --- .gitignore | 3 + FluentTest.xcodeproj/project.pbxproj | 422 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 12301 bytes .../xcschemes/xcschememanagement.plist | 14 + .../xcschemes/xcschememanagement.plist | 14 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 84394 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 42 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 29707 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + FluentTest/Assets.xcassets/Contents.json | 6 + FluentTest/AvatarGroupContainer.swift | 25 ++ FluentTest/ContentView.swift | 64 +++ FluentTest/FluentTestApp.swift | 17 + FluentTest/ParticipantAvatarGroup.swift | 71 +++ .../Preview Assets.xcassets/Contents.json | 6 + 21 files changed, 747 insertions(+) create mode 100644 .gitignore create mode 100644 FluentTest.xcodeproj/project.pbxproj create mode 100644 FluentTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 FluentTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 FluentTest.xcodeproj/project.xcworkspace/xcuserdata/emlyn.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 FluentTest.xcodeproj/xcuserdata/emlyn.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 FluentTest.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 FluentTest.xcworkspace/contents.xcworkspacedata create mode 100644 FluentTest.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 FluentTest.xcworkspace/xcuserdata/emlyn.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 FluentTest.xcworkspace/xcuserdata/emlyn.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 FluentTest.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 FluentTest.xcworkspace/xcuserdata/john.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 FluentTest/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 FluentTest/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 FluentTest/Assets.xcassets/Contents.json create mode 100644 FluentTest/AvatarGroupContainer.swift create mode 100644 FluentTest/ContentView.swift create mode 100644 FluentTest/FluentTestApp.swift create mode 100644 FluentTest/ParticipantAvatarGroup.swift create mode 100644 FluentTest/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7c545e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ + +FluentTest/.DS_Store +.DS_Store diff --git a/FluentTest.xcodeproj/project.pbxproj b/FluentTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4450fbd --- /dev/null +++ b/FluentTest.xcodeproj/project.pbxproj @@ -0,0 +1,422 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 4B3DDE4BDFA539FFBF3886F7 /* Pods_FluentTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14613DA9FA0D847BBDBCC8C6 /* Pods_FluentTest.framework */; }; + 52E298C5293E75F0006CDC63 /* AvatarGroupContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E298C4293E75F0006CDC63 /* AvatarGroupContainer.swift */; }; + 52E298C7293E7664006CDC63 /* ParticipantAvatarGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52E298C6293E7664006CDC63 /* ParticipantAvatarGroup.swift */; }; + 7518D9B8291ABCE10022E6FF /* FluentTestApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7518D9B7291ABCE10022E6FF /* FluentTestApp.swift */; }; + 7518D9BA291ABCE10022E6FF /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7518D9B9291ABCE10022E6FF /* ContentView.swift */; }; + 7518D9BC291ABCE40022E6FF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7518D9BB291ABCE40022E6FF /* Assets.xcassets */; }; + 7518D9BF291ABCE40022E6FF /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7518D9BE291ABCE40022E6FF /* Preview Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 14613DA9FA0D847BBDBCC8C6 /* Pods_FluentTest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FluentTest.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 40FD717EB6AA29168FD3C384 /* Pods-FluentTest.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FluentTest.debug.xcconfig"; path = "Target Support Files/Pods-FluentTest/Pods-FluentTest.debug.xcconfig"; sourceTree = ""; }; + 52E298C4293E75F0006CDC63 /* AvatarGroupContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarGroupContainer.swift; sourceTree = ""; }; + 52E298C6293E7664006CDC63 /* ParticipantAvatarGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticipantAvatarGroup.swift; sourceTree = ""; }; + 7518D9B4291ABCE10022E6FF /* FluentTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FluentTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7518D9B7291ABCE10022E6FF /* FluentTestApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FluentTestApp.swift; sourceTree = ""; }; + 7518D9B9291ABCE10022E6FF /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 7518D9BB291ABCE40022E6FF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 7518D9BE291ABCE40022E6FF /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + EA36E74FA478377DF13FCCFB /* Pods-FluentTest.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FluentTest.release.xcconfig"; path = "Target Support Files/Pods-FluentTest/Pods-FluentTest.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7518D9B1291ABCE10022E6FF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B3DDE4BDFA539FFBF3886F7 /* Pods_FluentTest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4D55D7D8766C1EE0DE67BC63 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 14613DA9FA0D847BBDBCC8C6 /* Pods_FluentTest.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7518D9AB291ABCE10022E6FF = { + isa = PBXGroup; + children = ( + 7518D9B6291ABCE10022E6FF /* FluentTest */, + 7518D9B5291ABCE10022E6FF /* Products */, + C0AE7897844F72E1AEFACEFE /* Pods */, + 4D55D7D8766C1EE0DE67BC63 /* Frameworks */, + ); + sourceTree = ""; + }; + 7518D9B5291ABCE10022E6FF /* Products */ = { + isa = PBXGroup; + children = ( + 7518D9B4291ABCE10022E6FF /* FluentTest.app */, + ); + name = Products; + sourceTree = ""; + }; + 7518D9B6291ABCE10022E6FF /* FluentTest */ = { + isa = PBXGroup; + children = ( + 7518D9B7291ABCE10022E6FF /* FluentTestApp.swift */, + 7518D9B9291ABCE10022E6FF /* ContentView.swift */, + 7518D9BB291ABCE40022E6FF /* Assets.xcassets */, + 7518D9BD291ABCE40022E6FF /* Preview Content */, + 52E298C4293E75F0006CDC63 /* AvatarGroupContainer.swift */, + 52E298C6293E7664006CDC63 /* ParticipantAvatarGroup.swift */, + ); + path = FluentTest; + sourceTree = ""; + }; + 7518D9BD291ABCE40022E6FF /* Preview Content */ = { + isa = PBXGroup; + children = ( + 7518D9BE291ABCE40022E6FF /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + C0AE7897844F72E1AEFACEFE /* Pods */ = { + isa = PBXGroup; + children = ( + 40FD717EB6AA29168FD3C384 /* Pods-FluentTest.debug.xcconfig */, + EA36E74FA478377DF13FCCFB /* Pods-FluentTest.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7518D9B3291ABCE10022E6FF /* FluentTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7518D9C2291ABCE40022E6FF /* Build configuration list for PBXNativeTarget "FluentTest" */; + buildPhases = ( + A5258D6FDD0E84539FC0B58E /* [CP] Check Pods Manifest.lock */, + 7518D9B0291ABCE10022E6FF /* Sources */, + 7518D9B1291ABCE10022E6FF /* Frameworks */, + 7518D9B2291ABCE10022E6FF /* Resources */, + 0D28941CD3930F303808EACF /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FluentTest; + productName = FluentTest; + productReference = 7518D9B4291ABCE10022E6FF /* FluentTest.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7518D9AC291ABCE10022E6FF /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1410; + LastUpgradeCheck = 1410; + TargetAttributes = { + 7518D9B3291ABCE10022E6FF = { + CreatedOnToolsVersion = 14.1; + }; + }; + }; + buildConfigurationList = 7518D9AF291ABCE10022E6FF /* Build configuration list for PBXProject "FluentTest" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7518D9AB291ABCE10022E6FF; + productRefGroup = 7518D9B5291ABCE10022E6FF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7518D9B3291ABCE10022E6FF /* FluentTest */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7518D9B2291ABCE10022E6FF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7518D9BF291ABCE40022E6FF /* Preview Assets.xcassets in Resources */, + 7518D9BC291ABCE40022E6FF /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0D28941CD3930F303808EACF /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FluentTest/Pods-FluentTest-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FluentTest/Pods-FluentTest-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FluentTest/Pods-FluentTest-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + A5258D6FDD0E84539FC0B58E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FluentTest-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7518D9B0291ABCE10022E6FF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 52E298C5293E75F0006CDC63 /* AvatarGroupContainer.swift in Sources */, + 7518D9BA291ABCE10022E6FF /* ContentView.swift in Sources */, + 52E298C7293E7664006CDC63 /* ParticipantAvatarGroup.swift in Sources */, + 7518D9B8291ABCE10022E6FF /* FluentTestApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7518D9C0291ABCE40022E6FF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7518D9C1291ABCE40022E6FF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7518D9C3291ABCE40022E6FF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40FD717EB6AA29168FD3C384 /* Pods-FluentTest.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"FluentTest/Preview Content\""; + DEVELOPMENT_TEAM = UBF8T346G9; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.microsoft.FluentTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7518D9C4291ABCE40022E6FF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EA36E74FA478377DF13FCCFB /* Pods-FluentTest.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"FluentTest/Preview Content\""; + DEVELOPMENT_TEAM = UBF8T346G9; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.microsoft.FluentTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7518D9AF291ABCE10022E6FF /* Build configuration list for PBXProject "FluentTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7518D9C0291ABCE40022E6FF /* Debug */, + 7518D9C1291ABCE40022E6FF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7518D9C2291ABCE40022E6FF /* Build configuration list for PBXNativeTarget "FluentTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7518D9C3291ABCE40022E6FF /* Debug */, + 7518D9C4291ABCE40022E6FF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7518D9AC291ABCE10022E6FF /* Project object */; +} diff --git a/FluentTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/FluentTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/FluentTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/FluentTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/FluentTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/FluentTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/FluentTest.xcodeproj/project.xcworkspace/xcuserdata/emlyn.xcuserdatad/UserInterfaceState.xcuserstate b/FluentTest.xcodeproj/project.xcworkspace/xcuserdata/emlyn.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..8558fe2f846e81548058a330a0f8d9798de370b9 GIT binary patch literal 12301 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 + + + + SchemeUserState + + FluentTest.xcscheme_^#shared#^_ + + orderHint + 3 + + + + diff --git a/FluentTest.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist b/FluentTest.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..9639c9c --- /dev/null +++ b/FluentTest.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + FluentTest.xcscheme_^#shared#^_ + + orderHint + 3 + + + + diff --git a/FluentTest.xcworkspace/contents.xcworkspacedata b/FluentTest.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..fa83e2b --- /dev/null +++ b/FluentTest.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/FluentTest.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/FluentTest.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/FluentTest.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/FluentTest.xcworkspace/xcuserdata/emlyn.xcuserdatad/UserInterfaceState.xcuserstate b/FluentTest.xcworkspace/xcuserdata/emlyn.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..86ada7957d6830669f4a86dcaebdba09416c93b1 GIT binary patch literal 84394 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 literal 0 HcmV?d00001 diff --git a/FluentTest.xcworkspace/xcuserdata/emlyn.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/FluentTest.xcworkspace/xcuserdata/emlyn.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..f7d3577 --- /dev/null +++ b/FluentTest.xcworkspace/xcuserdata/emlyn.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + diff --git a/FluentTest.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate b/FluentTest.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..58bdd9befd3600800c680f7d254bde6d7efe0b8d GIT binary patch literal 29707 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 literal 0 HcmV?d00001 diff --git a/FluentTest.xcworkspace/xcuserdata/john.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/FluentTest.xcworkspace/xcuserdata/john.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..9df2515 --- /dev/null +++ b/FluentTest.xcworkspace/xcuserdata/john.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/FluentTest/Assets.xcassets/AccentColor.colorset/Contents.json b/FluentTest/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/FluentTest/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FluentTest/Assets.xcassets/AppIcon.appiconset/Contents.json b/FluentTest/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/FluentTest/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FluentTest/Assets.xcassets/Contents.json b/FluentTest/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/FluentTest/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FluentTest/AvatarGroupContainer.swift b/FluentTest/AvatarGroupContainer.swift new file mode 100644 index 0000000..4d90f0b --- /dev/null +++ b/FluentTest/AvatarGroupContainer.swift @@ -0,0 +1,25 @@ +// +//  Copyright (c) Microsoft Corporation. All rights reserved. +//  Licensed under the MIT License. +// + +import SwiftUI + +struct AvatarGroupContainer: UIViewRepresentable { + + var participantList: [ParticipantInfoModel] + var avatarGroup: ParticipantAvatarGroup + + func makeUIView(context: Context) -> ParticipantAvatarGroup { + avatarGroup.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) + return avatarGroup + } + + func updateUIView(_ uiView: ParticipantAvatarGroup, context: Context) { + avatarGroup.setAvatars(to: participantList) + } +} + +struct ParticipantInfoModel { + var displayName: String +} diff --git a/FluentTest/ContentView.swift b/FluentTest/ContentView.swift new file mode 100644 index 0000000..b7294e6 --- /dev/null +++ b/FluentTest/ContentView.swift @@ -0,0 +1,64 @@ +// +// ContentView.swift +// FluentTest +// +// Created by Emlyn Bolton-Maggs on 2022-11-08. +// + +import SwiftUI + +struct ContentView: View { + @ObservedObject var viewmodel = ViewModel() + + var body: some View { + VStack { + Image(systemName: "globe") + .imageScale(.large) + .foregroundColor(.accentColor) + Text("Hello, world!") + AvatarGroupContainer(participantList: viewmodel.participants, + avatarGroup: viewmodel.avatarGroup) + } + .padding() + .onAppear { + DispatchQueue.main.asyncAfter(deadline: .now() + 1.9, execute: { + viewmodel.participants = [ + ParticipantInfoModel(displayName: "pp"), + ParticipantInfoModel(displayName: "sd"), + ParticipantInfoModel(displayName: "jj"), + ParticipantInfoModel(displayName: "jm"), + ParticipantInfoModel(displayName: "jd"), + ParticipantInfoModel(displayName: "jq") + ] + }) + DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: { + viewmodel.participants = [ + ParticipantInfoModel(displayName: "jj"), + ParticipantInfoModel(displayName: "jm"), + ParticipantInfoModel(displayName: "jd"), + ParticipantInfoModel(displayName: "jq") + ] + }) + DispatchQueue.main.asyncAfter(deadline: .now() + 2.1, execute: { + viewmodel.participants = [ + ParticipantInfoModel(displayName: "oo"), + ParticipantInfoModel(displayName: "oo"), + ] + }) + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} + +class ViewModel: ObservableObject { + var avatarGroup = ParticipantAvatarGroup() + @Published var participants: [ParticipantInfoModel] = [ + ParticipantInfoModel(displayName: "oo"), + ParticipantInfoModel(displayName: "oo"), + ] +} diff --git a/FluentTest/FluentTestApp.swift b/FluentTest/FluentTestApp.swift new file mode 100644 index 0000000..8fc0b10 --- /dev/null +++ b/FluentTest/FluentTestApp.swift @@ -0,0 +1,17 @@ +// +// FluentTestApp.swift +// FluentTest +// +// Created by Emlyn Bolton-Maggs on 2022-11-08. +// + +import SwiftUI + +@main +struct FluentTestApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/FluentTest/ParticipantAvatarGroup.swift b/FluentTest/ParticipantAvatarGroup.swift new file mode 100644 index 0000000..0539db0 --- /dev/null +++ b/FluentTest/ParticipantAvatarGroup.swift @@ -0,0 +1,71 @@ +// +//  Copyright (c) Microsoft Corporation. All rights reserved. +//  Licensed under the MIT License. +// + +import FluentUI +import UIKit + +class ParticipantAvatarGroup: UIView { + + private var group: MSFAvatarGroup? + private var lastSeen: [ParticipantInfoModel]? + private var avatarCount: Int = 0 + + private enum Constants { + static let avatarWidth: CGFloat = 16.0 + static let maxAvatarAllowed: Int = 2 + static let overflowCount: Int = 0 + } + + override init(frame: CGRect) { + super.init(frame: frame) + initAvatarGroup() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + initAvatarGroup() + } + +} + +extension ParticipantAvatarGroup { + private func initAvatarGroup() { + group = MSFAvatarGroup(style: .stack, size: .xsmall) + guard let group = group else { + return + } + group.state.overflowCount = Constants.overflowCount + // total avatar shown would be 3 + // (max allowed 2 + 1 to show number of remaining participants) + group.state.maxDisplayedAvatars = Constants.maxAvatarAllowed + group.isAccessibilityElement = false + addSubview(group) + group.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + group.leftAnchor.constraint(equalTo: self.leftAnchor), + group.rightAnchor.constraint(equalTo: self.rightAnchor), + group.topAnchor.constraint(equalTo: self.topAnchor), + group.bottomAnchor.constraint(equalTo: self.bottomAnchor) + ]) + } + + func setAvatars(to newData: [ParticipantInfoModel]) { + guard let group = group else { + return + } + for _ in 0..