{"id":2698,"url":"https://github.com/JonyFang/FFPopup","last_synced_at":"2025-08-03T00:32:21.100Z","repository":{"id":37951200,"uuid":"159120292","full_name":"JonyFang/FFPopup","owner":"JonyFang","description":"⛩ Presenting custom views as a popup in iOS.","archived":false,"fork":false,"pushed_at":"2023-09-07T09:09:19.000Z","size":1292,"stargazers_count":864,"open_issues_count":5,"forks_count":56,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-04-13T21:04:11.196Z","etag":null,"topics":["alert","objective-c","popup","swift"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JonyFang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"open_collective":"ffpopup"}},"created_at":"2018-11-26T06:17:28.000Z","updated_at":"2024-04-12T04:09:22.000Z","dependencies_parsed_at":"2023-09-29T08:51:34.358Z","dependency_job_id":null,"html_url":"https://github.com/JonyFang/FFPopup","commit_stats":{"total_commits":197,"total_committers":4,"mean_commits":49.25,"dds":0.02030456852791873,"last_synced_commit":"4bf3fbb97d9e7701925084f36a6f38879232b534"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonyFang%2FFFPopup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonyFang%2FFFPopup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonyFang%2FFFPopup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonyFang%2FFFPopup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JonyFang","download_url":"https://codeload.github.com/JonyFang/FFPopup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228510774,"owners_count":17931761,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alert","objective-c","popup","swift"],"created_at":"2024-01-05T20:16:20.460Z","updated_at":"2024-12-06T18:30:41.427Z","avatar_url":"https://github.com/JonyFang.png","language":"Objective-C","funding_links":["https://opencollective.com/ffpopup"],"categories":["UI","UI Components"],"sub_categories":["Popup"],"readme":"![FFPopup](/Resources/ffpopup-logo.png)\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://travis-ci.org/JonyFang/FFPopup\"\u003e\n        \u003cimg src=\"https://travis-ci.org/JonyFang/FFPopup.svg?branch=master\" alt=\"CI Status\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://codecov.io/gh/JonyFang/FFPopup\"\u003e\n    \t\u003cimg src=\"https://codecov.io/gh/JonyFang/FFPopup/branch/master/graph/badge.svg\" alt=\"Codecov Status\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"http://cocoapods.org/pods/FFPopup\"\u003e\n        \u003cimg src=\"https://img.shields.io/cocoapods/v/FFPopup.svg\" alt=\"Cocoapods Version\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Carthage/Carthage\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat\" alt=\"Carthage compatible\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://cocoapods.org/pods/FFPopup\"\u003e\n        \u003cimg src=\"https://img.shields.io/cocoapods/p/FFPopup.svg\" alt=\"Platform\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\n        \u003cimg src=\"https://img.shields.io/cocoapods/l/FFPopup.svg\" alt=\"MIT License\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/jonyfang/FFPopup/issues\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat\" alt=\"FFPopup Issues\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://twitter.com/jony_chunfang\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/twitter-@JonyFang-blue.svg?style=flat\" alt=\"Twitter\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eFFPopup is a lightweight library for presenting custom views as a popup.\u003c/p\u003e\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eBounce from Top \u0026 Bounce to Bottom\u003c/th\u003e\n\u003cth\u003eBounce from Top \u0026 Bounce to Top\u003c/th\u003e\n\u003cth\u003eBounce in \u0026 Bounce out\u003c/th\u003e\n\u003cth\u003eGrow in \u0026 Shrink out\u003c/th\u003e\n\u003cth\u003eBounce from Bottom \u0026 Slide to Bottom\u003c/th\u003e\n\u003cth\u003eSlide from Bottom \u0026 Slide to Bottom\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cimg src=\"/Resources/001_bounce_from_top\u0026Bounce_to_bottom.gif\"/\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"/Resources/002_bounce_from_top\u0026bounce_to_top.gif\"/\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"/Resources/003_bounce_in\u0026bounce_out.gif\"/\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"/Resources/004_grow_in\u0026shrink_out.gif\"/\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"/Resources/005_bounce_from_bottom\u0026slide_to_bottom.gif\"/\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"/Resources/006_slide_from_bottom\u0026slide_to_bottom.gif\"/\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## Features\n\n- Support several popup show types\n\t- [x] None\n\t- [x] Fade In\n\t- [x] Grow In\n\t- [x] Shrink In\n\t- [x] Slide In from top, bottom, left, right\n\t- [x] Bounce In from top, bottom, left, right, center\n\t- [ ] Support custom\n\n- Support several popup dismiss types\n\t- [x] None\n\t- [x] Fade Out\n\t- [x] Grow Out\n\t- [x] Shrink Out\n\t- [x] Slide Out to top, bottom, left, right\n\t- [x] Bounce Out to top, bottom, left, right, center\n\t- [ ] Support custom\n\n- Layout the popup in the horizontal direction\n\t- [x] Left\n\t- [x] Right\n\t- [x] Center\n\t- [x] Left of center\n\t- [x] Right of center\n\t- [ ] Support custom\n\n- Layout the popup in the vertical direction\n\t- [x] Top\n\t- [x] Bottom\n\t- [x] Center\n\t- [x] Above center\n\t- [x] Below center\n\t- [ ] Support custom\n\n- Controlled whether to allow interaction with the underlying view\n\t- [x] Allow interaction with underlying view\n\t- [x] Don't allow interaction with underlying view\n\t- [x] Don't allow interaction with underlying view, dim background\n\t- [ ] Don't allow interaction with underlying view, blur background\n\t- [ ] Support custom\n\n- Others\n\t- [ ] Complete Documentation\n\n## Requirements\n\n- iOS 8.0+ / macOS 10.13.6+\n- Xcode 10.1 (10B61) +\n\n## Example\n\nTo run the `FFPopup` project, clone the Repo, and start `FFPopup` in Xcode.\n\n```bash\n$ git clone https://github.com/JonyFang/FFPopup.git\n$ cd FFPopup\n$ cd Shell \u0026\u0026 sh install-bundle.sh \u0026\u0026 sh install-pods.sh \u0026\u0026 cd ..\n$ open FFPopup.xcworkspace\n```\n\n## Installation\n\nThere are three ways to use `FFPopup` in your project:\n\n- Installation with `CocoaPods`\n- Installation with `Carthage`\n- `Manually` install\n\n#### CocoaPods\n\n[CocoaPods](http://cocoapods.org/) is a dependency manager, which automates and simplifies the process of using 3rd-party libraries like `FFPopup` in your projects. First, add the following line to your [Podfile](http://guides.cocoapods.org/using/using-cocoapods.html):\n\n```ruby\npod 'FFPopup'\n```\n\nIf you want to use the latest features of `FFPopup` use normal external source dependencies.\n\n```ruby\npod 'FFPopup', :git =\u003e 'https://github.com/JonyFang/FFPopup.git'\n```\n\nThis pulls from the master branch directly.\n\nSecond, install `FFPopup` into your project:\n\n```bash\n$ pod install\n```\n\n#### Carthage\n\n[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.\n\nYou can install Carthage with [Homebrew](http://brew.sh/) using the following command:\n\n```bash\n$ brew update\n$ brew install carthage\n```\n\nTo integrate `FFPopup` into your Xcode project using Carthage, specify it in your `Cartfile`:\n\n```bash\ngithub \"JonyFang/FFPopup\"\n```\n\nRun the following command to build the framework:\n\n```bash\n$ carthage update\n```\n\nDrag the built `FFPopup.framework` binaries from `Carthage/Build/iOS` into your application’s Xcode project.\n\nOn your application targets’ `Build Phases` settings tab, click the `+ icon` and choose `New Run Script Phase`. Create a `Run Script` in which you specify your shell (ex: `/bin/sh`), add the following contents to the script area below the shell:\n\n```sh\n/usr/local/bin/carthage copy-frameworks\n```\n\nAdd the following paths to the frameworks you want to use under `Input Files`.\n\n```\n$(SRCROOT)/Carthage/Build/iOS/FFPopup.framework\n```\n\nFor an in depth guide, read on from [Adding frameworks to an application](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application)\n\n#### Manually\n\nAlternatively you can directly add the `FFPopup.h` and `FFPopup.m` source files to your project.\n\n- Download the [latest code version]() or add the repository as a git submodule to your git-tracked project.\n- Open your project in Xcode, then drag and drop `FFPopup.h` and `FFPopup.m` onto your project (use the `\"Product Navigator view\"`). Make sure to select `Copy items` when asked if you extracted the code archive outside of your project.\n- Include `FFPopup` wherever you need it with `#import \"FFPopup.h\"`.\n\n## Swift\n\nEven though `FFPopup` is written in Objective-C, it can be used in Swift with no hassle. If you use [CocoaPods](http://cocoapods.org/) add the following line to your [Podfile](http://guides.cocoapods.org/using/using-cocoapods.html):\n\n```ruby\nuse_frameworks!\n```\n\nIf you added `FFPopup` manually, just add a [bridging header](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html) file to your project with the `FFPopup` header included.\n\n## Usage\n\nImport the library where you want to use it.\n\n- Objective-C\n\n```objc\n#import \u003cFFPopup.h\u003e\n\n- (void)showPopup {\n    FFPopup *popup = [FFPopup popupWithContentView:self.contentView showType:FFPopupShowType_BounceIn dismissType:FFPopupDismissType_ShrinkOut maskType:FFPopupMaskType_Dimmed dismissOnBackgroundTouch:YES dismissOnContentTouch:NO];\n    FFPopupLayout layout = FFPopupLayoutMake(FFPopupHorizontalLayout_Center, FFPopupVerticalLayout_Center);\n    [popup showWithLayout:layout];\n}\n``` \n\n- Swift\n\n```swift\nimport FFPopup\n\nfunc showPopup() {\n    let popup = FFPopup(contentView: self.contentView, showType: .bounceIn, dismissType: .shrinkOut, maskType: .dimmed, dismissOnBackgroundTouch: true, dismissOnContentTouch: false)\n    let layout = FFPopupLayout(horizontal: .center, vertical: .center)\n    popup.show(layout: layout)\n}\n```\n\n## Customization\n\n#### 1.FFPopupShowType\n\nAnimation transition for presenting contentView. Controlled how the popup will be presented.\n\nThe default value is `FFPopupShowType_BounceInFromTop`.\n\n| FFPopupShowType |\n| :------ |\n| FFPopupShowType_None |\n| FFPopupShowType_FadeIn |\n| FFPopupShowType_GrowIn |\n| FFPopupShowType_ShrinkIn |\n| FFPopupShowType_SlideInFromTop |\n| FFPopupShowType_SlideInFromBottom |\n| FFPopupShowType_SlideInFromLeft |\n| FFPopupShowType_SlideInFromRight |\n| FFPopupShowType_BounceIn |\n| FFPopupShowType_BounceInFromTop |\n| FFPopupShowType_BounceInFromBottom |\n| FFPopupShowType_BounceInFromLeft |\n| FFPopupShowType_BounceInFromRight |\n\n#### 2.FFPopupDismissType\n\nAnimation transition for dismissing contentView. Controlled how the popup will be dismissed.\n\nThe default value is `FFPopupDismissType_BounceOutToBottom`.\n\n| FFPopupDismissType |\n| :------ |\n| FFPopupDismissType_None |\n| FFPopupDismissType_FadeOut |\n| FFPopupDismissType_GrowOut |\n| FFPopupDismissType_ShrinkOut |\n| FFPopupDismissType_SlideOutToTop |\n| FFPopupDismissType_SlideOutToBottom |\n| FFPopupDismissType_SlideOutToLeft |\n| FFPopupDismissType_SlideOutToRight |\n| FFPopupDismissType_BounceOut |\n| FFPopupDismissType_BounceOutToTop |\n| FFPopupDismissType_BounceOutToBottom |\n| FFPopupDismissType_BounceOutToLeft |\n| FFPopupDismissType_BounceOutToRight |\n\n#### 3.FFPopupMaskType\n\nMask prevents background touches from passing to underlying views. Controlled whether to allow interaction with the underlying view.\n\nThe default value is `FFPopupMaskType_Dimmed`.\n\n| FFPopupMaskType |\n| :------ |\n| FFPopupMaskType_None |\n| FFPopupMaskType_Clear |\n| FFPopupMaskType_Dimmed |\n\n#### 4.Other Properties\n\n| Property Name | Description | Default Value |\n| :------ | :------ | :------: |\n| dimmedMaskAlpha | Overrides alpha value for dimmed mask. | 0.5 |\n| showInDuration | Overrides animation duration for show in. | 0.15 |\n| dismissOutDuration | Overrides animation duration for dismiss out. | 0.15 |\n| shouldDismissOnBackgroundTouch | If `YES`, the popup will dismiss when background is touched. | YES |\n| shouldDismissOnContentTouch | If `YES`, the popup will dismiss when content view is touched. | NO |\n\n#### 5.Blocks\n\n```objc\n/**\n A block to be executed when showing animation started.\n The default value is nil.\n */\n@property (nonatomic, copy, nullable) void(^willStartShowingBlock)(void);\n\n/**\n A block to be executed when showing animation finished.\n The default value is nil.\n */\n@property (nonatomic, copy, nullable) void(^didFinishShowingBlock)(void);\n\n/**\n A block to be executed when dismissing animation started.\n The default value is nil.\n */\n@property (nonatomic, copy, nullable) void(^willStartDismissingBlock)(void);\n\n/**\n A block to be executed when dismissing animation finished.\n The default value is nil.\n */\n@property (nonatomic, copy, nullable) void(^didFinishDismissingBlock)(void);\n```\n\n#### 6.Convenience Initializers\n\nCreate a new popup with custom values.\n\n```objc\n/**\n Convenience Initializers\n Create a new popup with `contentView`.\n */\n+ (FFPopup *)popupWithContentView:(UIView *)contentView;\n\n/**\n Convenience Initializers\n Create a new popup with custom values.\n \n @param contentView The view you want to appear in popup.\n @param showType    The default value is `FFPopupShowType_BounceInFromTop`.\n @param dismissType The default value is `FFPopupDismissType_BounceOutToBottom`.\n @param maskType    The default value is `FFPopupMaskType_Dimmed`.\n @param shouldDismissOnBackgroundTouch  The default value is `YES`.\n @param shouldDismissOnContentTouch     The default value is `NO`.\n */\n+ (FFPopup *)popupWithContentView:(UIView *)contentView\n                         showType:(FFPopupShowType)showType\n                      dismissType:(FFPopupDismissType)dismissType\n                         maskType:(FFPopupMaskType)maskType\n         dismissOnBackgroundTouch:(BOOL)shouldDismissOnBackgroundTouch\n            dismissOnContentTouch:(BOOL)shouldDismissOnContentTouch;\n```\n\n#### 7.Showing the Popup\n\n```objc\n/**\n Show popup with center layout.\n `FFPopupVerticalLayout_Center` \u0026 `FFPopupHorizontalLayout_Center`\n Showing animation is determined by `showType`.\n */\n- (void)show;\n\n/**\n Show popup with specified layout.\n Showing animation is determined by `showType`.\n */\n- (void)showWithLayout:(FFPopupLayout)layout;\n\n/**\n Show and then dismiss popup after `duration`.\n If duration is `0.0` or `less`, it will be considered infinity.\n */\n- (void)showWithDuration:(NSTimeInterval)duration;\n\n/**\n Show popup with specified `layout` and then dismissed after `duration`.\n If duration is `0.0` or `less`, it will be considered infinity.\n */\n- (void)showWithLayout:(FFPopupLayout)layout duration:(NSTimeInterval)duration;\n\n/**\n Show popup at point in view's coordinate system.\n If view is nil, will use screen base coordinates.\n */\n- (void)showAtCenterPoint:(CGPoint)point inView:(UIView *)view;\n\n/**\n Show popup at point in view's coordinate system and then dismissed after duration.\n If view is nil, will use screen base coordinates.\n If duration is `0.0` or `less`, it will be considered infinity.\n */\n- (void)showAtCenterPoint:(CGPoint)point inView:(UIView *)view duration:(NSTimeInterval)duration;\n```\n\n#### 8.Dismissing the Popup\n\n```objc\n/**\n Dismiss popup.\n Use `dismissType` if animated is `YES`.\n */\n- (void)dismissAnimated:(BOOL)animated;\n```\n\n```objc\n /**\n Dismiss all the popups in the app.\n */\n+ (void)dismissAllPopups;\n\n/**\n Dismiss the popup for contentView.\n */\n+ (void)dismissPopupForView:(UIView *)view animated:(BOOL)animated;\n\n/**\n Dismiss super popup.\n Iterate over superviews until you find a `FFPopup` and dismiss it.\n */\n+ (void)dismissSuperPopupIn:(UIView *)view animated:(BOOL)animated;\n```\n\n## TODO List\n\nThis is the to-do list for the `FFPopup` project. You can join us to become a contributor.\n\n- [ ] Support blur option for background mask\n- [ ] Support for keyboard show/hide\n- [ ] Support for drag-to-dismiss\n\nSee the [CONTRIBUTING](./CONTRIBUTING.md) file for contributing guidelines.\n\n## Live Demo\n\nMy app [Time Card -Countdown](https://itunes.apple.com/cn/app/%E6%97%B6%E9%97%B4%E5%8D%A1-%E7%B2%BE%E8%87%B4%E7%9A%84%E7%BA%AA%E5%BF%B5%E6%97%A5%E5%8A%A9%E6%89%8B/id1347998487?mt=8) (Never Forget Important Days) is using `FFPopup`. You can download it and try it on your multiple devices to experience the effect.\n\n\u003ca href=\"https://itunes.apple.com/cn/app/%E6%97%B6%E9%97%B4%E5%8D%A1-%E7%B2%BE%E8%87%B4%E7%9A%84%E7%BA%AA%E5%BF%B5%E6%97%A5%E5%8A%A9%E6%89%8B/id1347998487?mt=8\"\u003e\n  \u003cimg src=\"/Resources/download-on-the-appstore.png\"\u003e\n\u003c/a\u003e\n\n## Contributors\n\nThis project exists thanks to all the people who contribute. [Contribute](./CONTRIBUTING.md)\n\n\u003ca href=\"https://opencollective.com/ffpopup#backer\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/contributors.svg?width=890\" /\u003e\u003c/a\u003e\n\n## Backers\n\nThank you to all our backers! Your support is really important for the project and encourages us to continue. 🙏 [Become a backer](https://opencollective.com/ffpopup#backer)\n\n\u003ca href=\"https://opencollective.com/ffpopup#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/backers.svg?width=890\"\u003e\u003c/a\u003e\n\n## Sponsors\n\nThank you to all our sponsors! [Become a sponsor](https://opencollective.com/ffpopup#sponsor)\n\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/ffpopup/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ffpopup/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\n## License\n\n`FFPopup` is available under the [MIT license](/LICENSE). See the LICENSE file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJonyFang%2FFFPopup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJonyFang%2FFFPopup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJonyFang%2FFFPopup/lists"}