From 84ec33b6f001aa1c5ec825732d0b9d4976e7cab6 Mon Sep 17 00:00:00 2001 From: Tomasz Kurylik Date: Mon, 18 Nov 2024 12:57:14 +0100 Subject: [PATCH 01/16] hotfix --- Sources/Internal/UI/PopupView.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/Internal/UI/PopupView.swift b/Sources/Internal/UI/PopupView.swift index b59e99cff..f46bc9585 100644 --- a/Sources/Internal/UI/PopupView.swift +++ b/Sources/Internal/UI/PopupView.swift @@ -16,10 +16,10 @@ struct PopupView: View { let rootView: any View #endif - @ObservedObject var stack: PopupStack - private let topStackViewModel: VM.VerticalStack = .init(TopPopupConfig.self) - private let centerStackViewModel: VM.CenterStack = .init(CenterPopupConfig.self) - private let bottomStackViewModel: VM.VerticalStack = .init(BottomPopupConfig.self) + @StateObject var stack: PopupStack + @StateObject private var topStackViewModel: VM.VerticalStack = .init(TopPopupConfig.self) + @StateObject private var centerStackViewModel: VM.CenterStack = .init(CenterPopupConfig.self) + @StateObject private var bottomStackViewModel: VM.VerticalStack = .init(BottomPopupConfig.self) var body: some View { From 1ae515039ff1d8afcc4abd0720ba75a37033eb4a Mon Sep 17 00:00:00 2001 From: Tomasz Kurylik Date: Thu, 19 Dec 2024 16:17:02 +0100 Subject: [PATCH 02/16] 1 --- Sources/Internal/Containers/PopupStack.swift | 2 -- Sources/Internal/Models/AnyPopup.swift | 2 -- Sources/Internal/Models/ID+Popup.swift | 1 - Sources/Internal/View Models/ViewModel+CentreStack.swift | 3 --- Sources/Internal/View Models/ViewModel+VerticalStack.swift | 4 ---- Sources/Internal/View Models/ViewModel.swift | 2 -- Sources/Public/Setup/Public+Setup+SceneDelegate.swift | 1 - Tests/Tests+PopupID.swift | 2 -- Tests/Tests+PopupStack.swift | 2 -- Tests/Tests+ViewModel+PopupCenterStack.swift | 2 -- Tests/Tests+ViewModel+PopupVerticalStack.swift | 2 -- 11 files changed, 23 deletions(-) diff --git a/Sources/Internal/Containers/PopupStack.swift b/Sources/Internal/Containers/PopupStack.swift index 382385665..7d87ecb3c 100644 --- a/Sources/Internal/Containers/PopupStack.swift +++ b/Sources/Internal/Containers/PopupStack.swift @@ -27,7 +27,6 @@ extension PopupStack { } - // MARK: - STACK OPERATIONS @@ -96,7 +95,6 @@ private extension PopupStack { } - // MARK: - STACK CONTAINER OPERATIONS diff --git a/Sources/Internal/Models/AnyPopup.swift b/Sources/Internal/Models/AnyPopup.swift index e21246854..941754399 100644 --- a/Sources/Internal/Models/AnyPopup.swift +++ b/Sources/Internal/Models/AnyPopup.swift @@ -24,7 +24,6 @@ struct AnyPopup: Popup { } - // MARK: - INITIALIZE & UPDATE @@ -70,7 +69,6 @@ private extension AnyPopup { } - // MARK: - PROTOCOLS CONFORMANCE diff --git a/Sources/Internal/Models/ID+Popup.swift b/Sources/Internal/Models/ID+Popup.swift index 866463dbf..99d4d7ee7 100644 --- a/Sources/Internal/Models/ID+Popup.swift +++ b/Sources/Internal/Models/ID+Popup.swift @@ -37,7 +37,6 @@ extension PopupID { } - // MARK: - HELPERS diff --git a/Sources/Internal/View Models/ViewModel+CentreStack.swift b/Sources/Internal/View Models/ViewModel+CentreStack.swift index db6847549..2a83ca056 100644 --- a/Sources/Internal/View Models/ViewModel+CentreStack.swift +++ b/Sources/Internal/View Models/ViewModel+CentreStack.swift @@ -21,7 +21,6 @@ extension VM { class CenterStack: ViewModel { required init() {} }} - // MARK: - METHODS / VIEW MODEL / ACTIVE POPUP @@ -84,7 +83,6 @@ extension VM.CenterStack { } - // MARK: - METHODS / VIEW MODEL / SELECTED POPUP @@ -104,7 +102,6 @@ private extension VM.CenterStack { } - // MARK: - METHODS / VIEW diff --git a/Sources/Internal/View Models/ViewModel+VerticalStack.swift b/Sources/Internal/View Models/ViewModel+VerticalStack.swift index a29ca2e87..9779a9eaa 100644 --- a/Sources/Internal/View Models/ViewModel+VerticalStack.swift +++ b/Sources/Internal/View Models/ViewModel+VerticalStack.swift @@ -21,7 +21,6 @@ extension VM { class VerticalStack: ViewModel { required init() {} }} - // MARK: - METHODS / VIEW MODEL / ACTIVE POPUP @@ -171,7 +170,6 @@ extension VM.VerticalStack { } - // MARK: - METHODS / VIEW MODEL / SELECTED POPUP @@ -214,7 +212,6 @@ private extension VM.VerticalStack { } - // MARK: - METHODS / VIEW @@ -307,7 +304,6 @@ extension VM.VerticalStack { } - // MARK: - GESTURES diff --git a/Sources/Internal/View Models/ViewModel.swift b/Sources/Internal/View Models/ViewModel.swift index 4f852add0..ba25f6d24 100644 --- a/Sources/Internal/View Models/ViewModel.swift +++ b/Sources/Internal/View Models/ViewModel.swift @@ -35,7 +35,6 @@ enum VM {} } - // MARK: - INITIALIZE & SETUP @@ -54,7 +53,6 @@ extension ViewModel { } - // MARK: UPDATE diff --git a/Sources/Public/Setup/Public+Setup+SceneDelegate.swift b/Sources/Public/Setup/Public+Setup+SceneDelegate.swift index 3e391b15f..e7adacfe9 100644 --- a/Sources/Public/Setup/Public+Setup+SceneDelegate.swift +++ b/Sources/Public/Setup/Public+Setup+SceneDelegate.swift @@ -73,7 +73,6 @@ extension PopupSceneDelegate { } - // MARK: - WINDOW diff --git a/Tests/Tests+PopupID.swift b/Tests/Tests+PopupID.swift index c30460e79..a972982f1 100644 --- a/Tests/Tests+PopupID.swift +++ b/Tests/Tests+PopupID.swift @@ -16,7 +16,6 @@ import SwiftUI @MainActor final class PopupIDTests: XCTestCase {} - // MARK: - TEST CASES @@ -119,7 +118,6 @@ extension PopupIDTests { } - // MARK: - HELPERS diff --git a/Tests/Tests+PopupStack.swift b/Tests/Tests+PopupStack.swift index 148bae864..59cbb272b 100644 --- a/Tests/Tests+PopupStack.swift +++ b/Tests/Tests+PopupStack.swift @@ -20,7 +20,6 @@ import SwiftUI } - // MARK: - TEST CASES @@ -241,7 +240,6 @@ extension PopupStackTests { } - // MARK: - HELPERS diff --git a/Tests/Tests+ViewModel+PopupCenterStack.swift b/Tests/Tests+ViewModel+PopupCenterStack.swift index 47887c6aa..715d29109 100644 --- a/Tests/Tests+ViewModel+PopupCenterStack.swift +++ b/Tests/Tests+ViewModel+PopupCenterStack.swift @@ -37,7 +37,6 @@ private extension PopupCenterStackViewModelTests { } - // MARK: - TEST CASES @@ -223,7 +222,6 @@ private extension PopupCenterStackViewModelTests { } - // MARK: - HELPERS diff --git a/Tests/Tests+ViewModel+PopupVerticalStack.swift b/Tests/Tests+ViewModel+PopupVerticalStack.swift index 2ca6c8267..3601679ac 100644 --- a/Tests/Tests+ViewModel+PopupVerticalStack.swift +++ b/Tests/Tests+ViewModel+PopupVerticalStack.swift @@ -44,7 +44,6 @@ private extension PopupVerticalStackViewModelTests { } - // MARK: - TEST CASES @@ -1475,7 +1474,6 @@ private extension PopupVerticalStackViewModelTests { } - // MARK: - HELPERS From dcca2b5d7f0e3d231dd1b737d4b18759e6b38790 Mon Sep 17 00:00:00 2001 From: Tomasz Kurylik Date: Thu, 19 Dec 2024 18:39:07 +0100 Subject: [PATCH 03/16] 1 --- MijickPopups.podspec | 2 +- Sources/Internal/View Models/ViewModel+CentreStack.swift | 4 ++-- .../Internal/View Models/ViewModel+VerticalStack.swift | 6 +++--- Sources/Internal/View Models/ViewModel.swift | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/MijickPopups.podspec b/MijickPopups.podspec index 82f2d4904..88d92b05c 100644 --- a/MijickPopups.podspec +++ b/MijickPopups.podspec @@ -5,7 +5,7 @@ Pod::Spec.new do |s| MijickPopups solves two seemingly contradictory problems - to allow developers to create fully customizable popup, and to make the process as simple as possible. DESC - s.version = '4.0.0' + s.version = '4.0.1' s.ios.deployment_target = '14.0' s.osx.deployment_target = '12.0' s.tvos.deployment_target = '15.0' diff --git a/Sources/Internal/View Models/ViewModel+CentreStack.swift b/Sources/Internal/View Models/ViewModel+CentreStack.swift index 2a83ca056..257388fb1 100644 --- a/Sources/Internal/View Models/ViewModel+CentreStack.swift +++ b/Sources/Internal/View Models/ViewModel+CentreStack.swift @@ -16,8 +16,8 @@ extension VM { class CenterStack: ViewModel { required init() {} var popups: [AnyPopup] = [] var activePopupProperties: ActivePopupProperties = .init() var screen: Screen = .init() - var updatePopupAction: ((AnyPopup) async -> ())! - var closePopupAction: ((AnyPopup) async -> ())! + var updatePopupAction: ((AnyPopup) async -> ())? + var closePopupAction: ((AnyPopup) async -> ())? }} diff --git a/Sources/Internal/View Models/ViewModel+VerticalStack.swift b/Sources/Internal/View Models/ViewModel+VerticalStack.swift index 9779a9eaa..97f98cacc 100644 --- a/Sources/Internal/View Models/ViewModel+VerticalStack.swift +++ b/Sources/Internal/View Models/ViewModel+VerticalStack.swift @@ -16,8 +16,8 @@ extension VM { class VerticalStack: ViewModel { required init() {} var popups: [AnyPopup] = [] var activePopupProperties: ActivePopupProperties = .init() var screen: Screen = .init() - var updatePopupAction: ((AnyPopup) async -> ())! - var closePopupAction: ((AnyPopup) async -> ())! + var updatePopupAction: ((AnyPopup) async -> ())? + var closePopupAction: ((AnyPopup) async -> ())? }} @@ -367,7 +367,7 @@ extension VM.VerticalStack { } private extension VM.VerticalStack { func dismissLastPopupIfNeeded(_ popup: AnyPopup) async { switch activePopupProperties.translationProgress >= dragThreshold { - case true: await closePopupAction(popup) + case true: await closePopupAction?(popup) case false: return }} func calculateTargetDragHeight(_ activePopup: AnyPopup) async -> CGFloat { diff --git a/Sources/Internal/View Models/ViewModel.swift b/Sources/Internal/View Models/ViewModel.swift index ba25f6d24..9340bdb03 100644 --- a/Sources/Internal/View Models/ViewModel.swift +++ b/Sources/Internal/View Models/ViewModel.swift @@ -21,8 +21,8 @@ enum VM {} var screen: Screen { get set } // MARK: Actions - var updatePopupAction: ((AnyPopup) async -> ())! { get set } - var closePopupAction: ((AnyPopup) async -> ())! { get set } + var updatePopupAction: ((AnyPopup) async -> ())? { get set } + var closePopupAction: ((AnyPopup) async -> ())? { get set } // MARK: Methods func calculateActivePopupHeight() async -> CGFloat? @@ -93,7 +93,7 @@ extension ViewModel { let newHeight = await calculatePopupHeight(heightCandidate, popup) if newHeight != popup.height { - await updatePopupAction(popup.updatedHeight(newHeight)) + await updatePopupAction?(popup.updatedHeight(newHeight)) } } } @@ -101,7 +101,7 @@ extension ViewModel { // MARK: Popup Drag Height extension ViewModel { func updatePopupDragHeight(_ targetDragHeight: CGFloat, _ popup: AnyPopup) async { - await updatePopupAction(popup.updatedDragHeight(targetDragHeight)) + await updatePopupAction?(popup.updatedDragHeight(targetDragHeight)) } } From dc228cf2017c5c382b729b5aa0067ac369d903fa Mon Sep 17 00:00:00 2001 From: Tomasz Kurylik Date: Thu, 19 Dec 2024 19:45:17 +0100 Subject: [PATCH 04/16] 1 --- Sources/Internal/UI/PopupCenterStackView.swift | 4 ++-- Sources/Internal/UI/PopupVerticalStackView.swift | 4 ++-- Sources/Internal/UI/PopupView.swift | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Sources/Internal/UI/PopupCenterStackView.swift b/Sources/Internal/UI/PopupCenterStackView.swift index 0b6af71a2..e3d5526cb 100644 --- a/Sources/Internal/UI/PopupCenterStackView.swift +++ b/Sources/Internal/UI/PopupCenterStackView.swift @@ -15,12 +15,12 @@ struct PopupCenterStackView: View { @ObservedObject var viewModel: VM.CenterStack - var body: some View { + var body: some View { if viewModel.screen.height > 0 { ZStack(content: createPopupStack) .id(viewModel.popups.isEmpty) .transition(transition) .frame(maxWidth: .infinity, maxHeight: viewModel.screen.height) - } + }} } private extension PopupCenterStackView { func createPopupStack() -> some View { diff --git a/Sources/Internal/UI/PopupVerticalStackView.swift b/Sources/Internal/UI/PopupVerticalStackView.swift index cbeaa0685..67a0400e9 100644 --- a/Sources/Internal/UI/PopupVerticalStackView.swift +++ b/Sources/Internal/UI/PopupVerticalStackView.swift @@ -15,11 +15,11 @@ struct PopupVerticalStackView: View { @ObservedObject var viewModel: VM.VerticalStack - var body: some View { + var body: some View { if viewModel.screen.height > 0 { ZStack(alignment: (!viewModel.alignment).toAlignment(), content: createPopupStack) .frame(height: viewModel.screen.height, alignment: viewModel.alignment.toAlignment()) .onDragGesture(onChanged: viewModel.onPopupDragGestureChanged, onEnded: viewModel.onPopupDragGestureEnded, isEnabled: viewModel.dragGestureEnabled) - } + }} } private extension PopupVerticalStackView { func createPopupStack() -> some View { diff --git a/Sources/Internal/UI/PopupView.swift b/Sources/Internal/UI/PopupView.swift index f46bc9585..b59e99cff 100644 --- a/Sources/Internal/UI/PopupView.swift +++ b/Sources/Internal/UI/PopupView.swift @@ -16,10 +16,10 @@ struct PopupView: View { let rootView: any View #endif - @StateObject var stack: PopupStack - @StateObject private var topStackViewModel: VM.VerticalStack = .init(TopPopupConfig.self) - @StateObject private var centerStackViewModel: VM.CenterStack = .init(CenterPopupConfig.self) - @StateObject private var bottomStackViewModel: VM.VerticalStack = .init(BottomPopupConfig.self) + @ObservedObject var stack: PopupStack + private let topStackViewModel: VM.VerticalStack = .init(TopPopupConfig.self) + private let centerStackViewModel: VM.CenterStack = .init(CenterPopupConfig.self) + private let bottomStackViewModel: VM.VerticalStack = .init(BottomPopupConfig.self) var body: some View { From 351c94d840bc0d202534c40300ec9402cf878d04 Mon Sep 17 00:00:00 2001 From: Tomasz Kurylik Date: Thu, 19 Dec 2024 19:58:15 +0100 Subject: [PATCH 05/16] 1 --- Sources/Public/Setup/Public+Setup+View.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/Public/Setup/Public+Setup+View.swift b/Sources/Public/Setup/Public+Setup+View.swift index 676d277a4..239e53c19 100644 --- a/Sources/Public/Setup/Public+Setup+View.swift +++ b/Sources/Public/Setup/Public+Setup+View.swift @@ -44,11 +44,11 @@ public extension View { */ func registerPopups(id: PopupStackID = .shared, configBuilder: @escaping (GlobalConfigContainer) -> GlobalConfigContainer = { $0 }) -> some View { #if os(tvOS) - PopupView(rootView: self, stack: .registerStack(id: id)).onAppear { _ = configBuilder(.init()) } + PopupView(rootView: self, popupStack: .registerStack(id: id)).onAppear { _ = configBuilder(.init()) } #else self .frame(maxWidth: .infinity, maxHeight: .infinity) - .overlay(PopupView(stack: .registerStack(id: id)), alignment: .top) + .overlay(PopupView(rootView: self, popupStack: .registerStack(id: id)), alignment: .top) .onAppear { _ = configBuilder(.init()) } #endif } From c08dd8e63204891e5319e9f0c70a5ee01dcba507 Mon Sep 17 00:00:00 2001 From: Tomasz Kurylik Date: Thu, 19 Dec 2024 20:12:32 +0100 Subject: [PATCH 06/16] 1 --- Sources/Internal/UI/PopupView.swift | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Sources/Internal/UI/PopupView.swift b/Sources/Internal/UI/PopupView.swift index b59e99cff..c80dd5294 100644 --- a/Sources/Internal/UI/PopupView.swift +++ b/Sources/Internal/UI/PopupView.swift @@ -22,6 +22,14 @@ struct PopupView: View { private let bottomStackViewModel: VM.VerticalStack = .init(BottomPopupConfig.self) + init(rootView: any View, popupStack: PopupStack) { + #if os(tvOS) + self.rootView = rootView + #endif + self.stack = popupStack + + Task { [self] in await updateViewModels { await $0.updatePopups(stack.popups) } } + } var body: some View { #if os(tvOS) AnyView(rootView) From 5840fcfd75519cabe104a4b4e356c5312ca07d95 Mon Sep 17 00:00:00 2001 From: Tomasz Kurylik Date: Thu, 19 Dec 2024 20:13:39 +0100 Subject: [PATCH 07/16] 1 --- Tests/Tests+ViewModel+PopupVerticalStack.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Tests+ViewModel+PopupVerticalStack.swift b/Tests/Tests+ViewModel+PopupVerticalStack.swift index 3601679ac..b995cccc3 100644 --- a/Tests/Tests+ViewModel+PopupVerticalStack.swift +++ b/Tests/Tests+ViewModel+PopupVerticalStack.swift @@ -132,7 +132,7 @@ extension PopupVerticalStackViewModelTests { private extension PopupVerticalStackViewModelTests { func appendPopupsAndCheckPopups(viewModel: ViewModel, popups: [AnyPopup], updatedPopup: AnyPopup, expectedValue: (height: CGFloat?, dragHeight: CGFloat)) async { await viewModel.updatePopups(popups) - await viewModel.updatePopupAction(updatedPopup) + await viewModel.updatePopupAction?(updatedPopup) if let index = viewModel.popups.firstIndex(of: updatedPopup) { XCTAssertEqual(viewModel.popups[index].height, expectedValue.height) From c114e2acf5ff90248bc8d18699576c31e2c6f136 Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:15:49 +0100 Subject: [PATCH 08/16] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1a5c7089d..fa74b4d41 100644 --- a/README.md +++ b/README.md @@ -63,19 +63,19 @@

- Join us on Discord + Join us on Discord - See our other frameworks + See our other frameworks - Read us on Medium + Read us on Medium - Buy us a coffee + Buy us a coffee

From c6ec8ea04d2ff686954293eb8b578f0ee540fddc Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:17:30 +0100 Subject: [PATCH 09/16] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index fa74b4d41..2445f62fc 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,10 @@ Join us on Discord + + + Follow us on LinkedIn + See our other frameworks From 15dfa4b9aede1084877bfefc8b48ef1e759f5fdb Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:18:06 +0100 Subject: [PATCH 10/16] Update README.md --- README.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/README.md b/README.md index 2445f62fc..b17ecca02 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,95 @@

+ +# ✨ Features + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
πŸ™πŸ»Automatically handles permissions
πŸ–ΌοΈImage capture
🎬️Video capture (with or without sound)
πŸ“ΈCamera position changes
πŸ”οΈSupports manual zoom
πŸ‘οΈSupports manual focus
🎞️Changeable frame rate
πŸ“ΊοΈChangeable camera resolution
πŸ™ˆCamera filters
πŸ”¦Torch
πŸ“ΈFlash
⏱️Other camera settings (exposure duration, target bias, ISO, HDR mode and more)
☒️Displays error screen if permissions are not granted
πŸ–ΌοΈDisplays captured media screen
πŸ“±Modern and minimalistic UI
πŸ•ΊBeautiful animations
🚧Fully customizable screens
🀏🏼Gestures support
πŸ“²Blocks screen orientation change
⚑️Supports Swift 6
πŸš€... and others
+ # β˜€οΈ Why MijickPopups? MijickPopups solves two seemingly contradictory problems - to allow developers to create fully customizable popup, and to make the process as simple as possible. Here is why we think we have successfully met these objectives: From 0ccac4f5defbf92c03537809dd77a80a94aa2c26 Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:24:08 +0100 Subject: [PATCH 11/16] Update README.md --- README.md | 74 +------------------------------------------------------ 1 file changed, 1 insertion(+), 73 deletions(-) diff --git a/README.md b/README.md index b17ecca02..4c1e68116 100644 --- a/README.md +++ b/README.md @@ -86,81 +86,9 @@ # ✨ Features - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + From beb1dc0567da85dc0ebff72a57feaab896ec40b3 Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:44:33 +0100 Subject: [PATCH 12/16] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 0f03505ea..234427234 100644 --- a/README.md +++ b/README.md @@ -69,10 +69,6 @@ Follow us on LinkedIn - - - Follow us on LinkedIn - See our other frameworks From 9a54af5513eb23acb028c8a2a47697d914a0c7fa Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:48:23 +0100 Subject: [PATCH 13/16] Update README.md --- README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/README.md b/README.md index 234427234..e99f0ad2c 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 3d58054682a4a8fcae4133616aadd13f5afe6120 Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:50:58 +0100 Subject: [PATCH 14/16] Update README.md --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e99f0ad2c..f77457660 100644 --- a/README.md +++ b/README.md @@ -102,32 +102,32 @@ - + - + - + - + - + - + - + From ae11c1b2ff23d7f1f0e1248d912abc78266ef716 Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:52:54 +0100 Subject: [PATCH 15/16] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f77457660..911447fdd 100644 --- a/README.md +++ b/README.md @@ -91,19 +91,19 @@ - + - + - + - + From f5c2b04848d95949b346a86905eb1b12cfacc12f Mon Sep 17 00:00:00 2001 From: "Tomasz K." Date: Thu, 19 Dec 2024 20:54:16 +0100 Subject: [PATCH 16/16] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 911447fdd..e0b4785c0 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ Join the welcoming community of developers on [Discord](https://link.mijick.com/ # 🌼 Contribute To contribute a feature or idea to **MijickPopups**, create an [issue](https://github.com/Mijick/Popups/issues/new?assignees=FulcrumOne&labels=state%3A+inactive%2C+type%3A+feature&projects=&template=πŸš€-feature-request.md&title=%5BFREQ%5D) explaining your idea or bring it up on [Discord](https://discord.com/invite/dT5V7nm5SC).
If you find a bug, please create an [issue](https://github.com/Mijick/Popups/issues/new?assignees=FulcrumOne%2C+jay-jay-lama&labels=state%3A+inactive%2C+type%3A+bug&projects=&template=🦟-bug-report.md&title=%5BBUG%5D).
-If you would like to contribute, please refer to the [Contribution Guidelines](https://link.mijick.com/contribution-guidelines). +If you would like to contribute, please refer to the [Contribution Guidelines](https://github.com/Mijick/Popups/blob/main/.github/CONTRIBUTING.md). # πŸ’œ Sponsor our work
πŸ™πŸ»Automatically handles permissions
πŸ–ΌοΈImage capture
🎬️Video capture (with or without sound)
πŸ“ΈCamera position changes
πŸ”οΈSupports manual zoom
πŸ‘οΈSupports manual focus
🎞️Changeable frame rate
πŸ“ΊοΈChangeable camera resolution
πŸ™ˆCamera filters
πŸ”¦Torch
πŸ“ΈFlash
⏱️Other camera settings (exposure duration, target bias, ISO, HDR mode and more)
☒️Displays error screen if permissions are not granted
πŸ–ΌοΈDisplays captured media screen
πŸ“±Modern and minimalistic UI
πŸ•ΊBeautiful animations
🚧Fully customizable screens
🀏🏼Gestures support
πŸ“²Blocks screen orientation changeThree positions for the popups: Top, Center or Bottom
βš‘οΈπŸ“± Three positions for the popups: Top, Center or Bottom
Stackable popups
Three height modes: Automatic, Large or Fullscreen
Resizable popups
Automatic dismissal
Super easy to use from any place in the code
Fully customizable
Beautiful animations
Gestures support
Works with SwiftUI sheets
Supports iOS, macOS, tvOS, watchOS and visionOS
⚑️ Supports Swift 6 Resizable popups
Automatic dismissal
πŸ–– Super easy to use from any place in the code
🚧 Fully customizable
πŸ•Ί Beautiful animations
🀏🏼 Gestures support
🍏 Works with SwiftUI sheets
πŸ–₯️ Supports iOS, macOS, tvOS, watchOS and visionOS
Three positions for the popups: Top, Center or Bottom
🎁 Stackable popups
🐫 Three height modes: Automatic, Large or Fullscreen
⛹️ Resizable popups
πŸƒ Automatic dismissal