├── .github ├── FUNDING.yml └── workflows │ └── main.yml ├── .gitignore ├── .idea ├── SideMenu.iml ├── encodings.xml ├── misc.xml ├── modules.xml ├── runConfigurations │ └── SideMenu.xml ├── vcs.xml └── xcode.xml ├── .ruby-version ├── .swiftlint.yml ├── .swiftpm └── xcode │ └── package.xcworkspace │ └── contents.xcworkspacedata ├── .travis.yml ├── CHANGELOG.md ├── Example ├── AppDelegate.swift ├── Assets.xcassets │ └── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-20.png │ │ ├── Icon-20@2x-1.png │ │ ├── Icon-20@2x.png │ │ ├── Icon-20@3x.png │ │ ├── Icon-29.png │ │ ├── Icon-29@2x-1.png │ │ ├── Icon-29@2x.png │ │ ├── Icon-29@3x.png │ │ ├── Icon-40.png │ │ ├── Icon-40@2x-2.png │ │ ├── Icon-40@2x.png │ │ ├── Icon-40@3x-1.png │ │ ├── Icon-512@2x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-76.png │ │ ├── Icon-76@2x.png │ │ └── Icon-83.5@2x.png ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist ├── MenuViewController.swift ├── OtherExampleViewController.swift ├── PreferencesViewController.swift ├── UINavigationController+Extension.swift └── WorkWithOtherViewController.swift ├── Gemfile ├── Gemfile.lock ├── Images ├── Above+None.gif ├── Below+Slide.gif ├── Logo.png ├── SideBySide+Fade.gif ├── SideBySide+HideOnMenu.gif ├── SideMneu.sketch └── StoryboardSample.png ├── LICENSE ├── Package.resolved ├── Package.swift ├── README.md ├── SideMenu.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── xcschemes │ ├── SideMenu.xcscheme │ ├── SideMenuExample.xcscheme │ └── SideMenuExampleUITests.xcscheme ├── SideMenuExampleUITests ├── Info.plist ├── SideMenuExampleUITests.swift ├── SideMenuRightUITests.swift └── UITestHelpers.swift ├── SideMenuSwift.podspec ├── Sources ├── PrivacyInfo.xcprivacy └── SideMenu │ ├── BasicTransitionAnimator.swift │ ├── Delegate.swift │ ├── Info.plist │ ├── Preferences.swift │ ├── Segue.swift │ ├── SideMenu.h │ ├── SideMenuController.swift │ ├── StatusBar.swift │ ├── TransitionContext.swift │ ├── UIView+Container.swift │ ├── UIViewController+Container.swift │ └── UIViewController+SideMenu.swift ├── Tests └── SideMenuTests │ ├── Info.plist │ └── SideMenuTests.swift ├── docs ├── css │ ├── 523.e9a069b0.css │ ├── 675.40c3bcb2.css │ ├── documentation-topic.b186e79f.css │ ├── index.ff036a9e.css │ ├── topic.672a9049.css │ └── tutorials-overview.6eb589ed.css ├── data │ └── documentation │ │ ├── sidemenu.json │ │ └── sidemenu │ │ ├── basictransitionanimator.json │ │ ├── basictransitionanimator │ │ ├── animatetransition(using:).json │ │ ├── init(options:duration:).json │ │ └── transitionduration(using:).json │ │ ├── sidemenucontroller.json │ │ ├── sidemenucontroller │ │ ├── cache(viewcontroller:with:).json │ │ ├── cache(viewcontrollergenerator:with:).json │ │ ├── childforstatusbarhidden.json │ │ ├── childforstatusbarstyle.json │ │ ├── clearcache(with:).json │ │ ├── contentsegueid.json │ │ ├── contentviewcontroller.json │ │ ├── currentcacheidentifier().json │ │ ├── delegate.json │ │ ├── gesturerecognizer(_:shouldreceive:).json │ │ ├── gesturerecognizershouldbegin(_:).json │ │ ├── hidemenu(animated:completion:).json │ │ ├── init(contentviewcontroller:menuviewcontroller:).json │ │ ├── initwithcoder:.json │ │ ├── initwithnibname:bundle:.json │ │ ├── ismenurevealed.json │ │ ├── menusegueid.json │ │ ├── menuviewcontroller.json │ │ ├── preferences-swift.struct.json │ │ ├── preferences-swift.struct │ │ │ ├── animation-swift.property.json │ │ │ ├── animation-swift.struct.json │ │ │ ├── animation-swift.struct │ │ │ │ ├── dampingratio.json │ │ │ │ ├── hideduration.json │ │ │ │ ├── initialspringvelocity.json │ │ │ │ ├── options.json │ │ │ │ ├── revealduration.json │ │ │ │ ├── shadowalpha.json │ │ │ │ ├── shadowcolor.json │ │ │ │ ├── shouldaddblurwhenrevealing.json │ │ │ │ └── shouldaddshadowwhenrevealing.json │ │ │ ├── basic.json │ │ │ ├── configuration.json │ │ │ ├── configuration │ │ │ │ ├── defaultcachekey.json │ │ │ │ ├── direction.json │ │ │ │ ├── enablepangesture.json │ │ │ │ ├── enablerubbereffectwhenpanning.json │ │ │ │ ├── forcerighttoleft.json │ │ │ │ ├── hidemenuwhenenteringbackground.json │ │ │ │ ├── keepsmenuopenafterrotation.json │ │ │ │ ├── menuwidth.json │ │ │ │ ├── pangesturesensitivity.json │ │ │ │ ├── position.json │ │ │ │ ├── shouldautorotate.json │ │ │ │ ├── shouldrespectlanguagedirection.json │ │ │ │ ├── shouldusecontentsupportedorientations.json │ │ │ │ ├── statusbarbehavior.json │ │ │ │ └── supportedorientations.json │ │ │ ├── menudirection.json │ │ │ ├── menudirection │ │ │ │ ├── !=(_:_:).json │ │ │ │ ├── equatable-implementations.json │ │ │ │ ├── left.json │ │ │ │ └── right.json │ │ │ ├── menuposition.json │ │ │ ├── menuposition │ │ │ │ ├── !=(_:_:).json │ │ │ │ ├── above.json │ │ │ │ ├── equatable-implementations.json │ │ │ │ ├── sidebyside.json │ │ │ │ └── under.json │ │ │ ├── statusbarbehavior.json │ │ │ └── statusbarbehavior │ │ │ │ ├── !=(_:_:).json │ │ │ │ ├── equatable-implementations.json │ │ │ │ ├── fade.json │ │ │ │ ├── hideonmenu.json │ │ │ │ ├── none.json │ │ │ │ └── slide.json │ │ ├── preferences-swift.type.property.json │ │ ├── prepare(for:sender:).json │ │ ├── revealmenu(animated:completion:).json │ │ ├── setcontentviewcontroller(to:animated:completion:).json │ │ ├── setcontentviewcontroller(with:animated:completion:).json │ │ ├── shouldautorotate.json │ │ ├── supportedinterfaceorientations.json │ │ ├── uigesturerecognizerdelegate-implementations.json │ │ ├── viewdidload().json │ │ └── viewwilltransition(to:with:).json │ │ ├── sidemenucontrollerdelegate.json │ │ ├── sidemenucontrollerdelegate │ │ ├── sidemenucontroller(_:animationcontrollerfrom:to:)-4esbs.json │ │ ├── sidemenucontroller(_:animationcontrollerfrom:to:)-9p7d7.json │ │ ├── sidemenucontroller(_:didshow:animated:)-54dgd.json │ │ ├── sidemenucontroller(_:didshow:animated:)-67m06.json │ │ ├── sidemenucontroller(_:willshow:animated:)-1hl81.json │ │ ├── sidemenucontroller(_:willshow:animated:)-1juiy.json │ │ ├── sidemenucontrollerdidhidemenu(_:)-2ufp3.json │ │ ├── sidemenucontrollerdidhidemenu(_:)-5bj9p.json │ │ ├── sidemenucontrollerdidrevealmenu(_:)-11kew.json │ │ ├── sidemenucontrollerdidrevealmenu(_:)-6umvn.json │ │ ├── sidemenucontrollergetmenuwidth(_:for:)-6nrbw.json │ │ ├── sidemenucontrollergetmenuwidth(_:for:)-xmh9.json │ │ ├── sidemenucontrollershouldrevealmenu(_:)-703eu.json │ │ ├── sidemenucontrollershouldrevealmenu(_:)-9y55z.json │ │ ├── sidemenucontrollerwillhidemenu(_:)-359mo.json │ │ ├── sidemenucontrollerwillhidemenu(_:)-8i6tb.json │ │ ├── sidemenucontrollerwillrevealmenu(_:)-4q697.json │ │ └── sidemenucontrollerwillrevealmenu(_:)-79vnu.json │ │ ├── sidemenusegue.json │ │ ├── sidemenusegue │ │ ├── contenttype-swift.enum.json │ │ ├── contenttype-swift.enum │ │ │ ├── !=(_:_:).json │ │ │ ├── content.json │ │ │ ├── equatable-implementations.json │ │ │ ├── hash(into:).json │ │ │ ├── hashvalue.json │ │ │ ├── init(rawvalue:).json │ │ │ ├── menu.json │ │ │ └── rawrepresentable-implementations.json │ │ ├── contenttype-swift.property.json │ │ ├── initwithidentifier:source:destination:.json │ │ └── perform().json │ │ ├── sidemenuversionnumber.json │ │ ├── sidemenuversionstring.json │ │ ├── uikit.json │ │ └── uikit │ │ ├── uiviewcontroller.json │ │ └── uiviewcontroller │ │ └── sidemenucontroller.json ├── developer-og-twitter.jpg ├── developer-og.jpg ├── documentation │ └── sidemenu │ │ ├── basictransitionanimator │ │ ├── animatetransition(using:) │ │ │ └── index.html │ │ ├── index.html │ │ ├── init(options:duration:) │ │ │ └── index.html │ │ └── transitionduration(using:) │ │ │ └── index.html │ │ ├── index.html │ │ ├── sidemenucontroller │ │ ├── cache(viewcontroller:with:) │ │ │ └── index.html │ │ ├── cache(viewcontrollergenerator:with:) │ │ │ └── index.html │ │ ├── childforstatusbarhidden │ │ │ └── index.html │ │ ├── childforstatusbarstyle │ │ │ └── index.html │ │ ├── clearcache(with:) │ │ │ └── index.html │ │ ├── contentsegueid │ │ │ └── index.html │ │ ├── contentviewcontroller │ │ │ └── index.html │ │ ├── currentcacheidentifier() │ │ │ └── index.html │ │ ├── delegate │ │ │ └── index.html │ │ ├── gesturerecognizer(_:shouldreceive:) │ │ │ └── index.html │ │ ├── gesturerecognizershouldbegin(_:) │ │ │ └── index.html │ │ ├── hidemenu(animated:completion:) │ │ │ └── index.html │ │ ├── index.html │ │ ├── init(contentviewcontroller:menuviewcontroller:) │ │ │ └── index.html │ │ ├── initwithcoder: │ │ │ └── index.html │ │ ├── initwithnibname:bundle: │ │ │ └── index.html │ │ ├── ismenurevealed │ │ │ └── index.html │ │ ├── menusegueid │ │ │ └── index.html │ │ ├── menuviewcontroller │ │ │ └── index.html │ │ ├── preferences-swift.struct │ │ │ ├── animation-swift.property │ │ │ │ └── index.html │ │ │ ├── animation-swift.struct │ │ │ │ ├── dampingratio │ │ │ │ │ └── index.html │ │ │ │ ├── hideduration │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── initialspringvelocity │ │ │ │ │ └── index.html │ │ │ │ ├── options │ │ │ │ │ └── index.html │ │ │ │ ├── revealduration │ │ │ │ │ └── index.html │ │ │ │ ├── shadowalpha │ │ │ │ │ └── index.html │ │ │ │ ├── shadowcolor │ │ │ │ │ └── index.html │ │ │ │ ├── shouldaddblurwhenrevealing │ │ │ │ │ └── index.html │ │ │ │ └── shouldaddshadowwhenrevealing │ │ │ │ │ └── index.html │ │ │ ├── basic │ │ │ │ └── index.html │ │ │ ├── configuration │ │ │ │ ├── defaultcachekey │ │ │ │ │ └── index.html │ │ │ │ ├── direction │ │ │ │ │ └── index.html │ │ │ │ ├── enablepangesture │ │ │ │ │ └── index.html │ │ │ │ ├── enablerubbereffectwhenpanning │ │ │ │ │ └── index.html │ │ │ │ ├── forcerighttoleft │ │ │ │ │ └── index.html │ │ │ │ ├── hidemenuwhenenteringbackground │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── keepsmenuopenafterrotation │ │ │ │ │ └── index.html │ │ │ │ ├── menuwidth │ │ │ │ │ └── index.html │ │ │ │ ├── pangesturesensitivity │ │ │ │ │ └── index.html │ │ │ │ ├── position │ │ │ │ │ └── index.html │ │ │ │ ├── shouldautorotate │ │ │ │ │ └── index.html │ │ │ │ ├── shouldrespectlanguagedirection │ │ │ │ │ └── index.html │ │ │ │ ├── shouldusecontentsupportedorientations │ │ │ │ │ └── index.html │ │ │ │ ├── statusbarbehavior │ │ │ │ │ └── index.html │ │ │ │ └── supportedorientations │ │ │ │ │ └── index.html │ │ │ ├── index.html │ │ │ ├── menudirection │ │ │ │ ├── !=(_:_:) │ │ │ │ │ └── index.html │ │ │ │ ├── equatable-implementations │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── left │ │ │ │ │ └── index.html │ │ │ │ └── right │ │ │ │ │ └── index.html │ │ │ ├── menuposition │ │ │ │ ├── !=(_:_:) │ │ │ │ │ └── index.html │ │ │ │ ├── above │ │ │ │ │ └── index.html │ │ │ │ ├── equatable-implementations │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── sidebyside │ │ │ │ │ └── index.html │ │ │ │ └── under │ │ │ │ │ └── index.html │ │ │ └── statusbarbehavior │ │ │ │ ├── !=(_:_:) │ │ │ │ └── index.html │ │ │ │ ├── equatable-implementations │ │ │ │ └── index.html │ │ │ │ ├── fade │ │ │ │ └── index.html │ │ │ │ ├── hideonmenu │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── none │ │ │ │ └── index.html │ │ │ │ └── slide │ │ │ │ └── index.html │ │ ├── preferences-swift.type.property │ │ │ └── index.html │ │ ├── prepare(for:sender:) │ │ │ └── index.html │ │ ├── revealmenu(animated:completion:) │ │ │ └── index.html │ │ ├── setcontentviewcontroller(to:animated:completion:) │ │ │ └── index.html │ │ ├── setcontentviewcontroller(with:animated:completion:) │ │ │ └── index.html │ │ ├── shouldautorotate │ │ │ └── index.html │ │ ├── supportedinterfaceorientations │ │ │ └── index.html │ │ ├── uigesturerecognizerdelegate-implementations │ │ │ └── index.html │ │ ├── viewdidload() │ │ │ └── index.html │ │ └── viewwilltransition(to:with:) │ │ │ └── index.html │ │ ├── sidemenucontrollerdelegate │ │ ├── index.html │ │ ├── sidemenucontroller(_:animationcontrollerfrom:to:)-4esbs │ │ │ └── index.html │ │ ├── sidemenucontroller(_:animationcontrollerfrom:to:)-9p7d7 │ │ │ └── index.html │ │ ├── sidemenucontroller(_:didshow:animated:)-54dgd │ │ │ └── index.html │ │ ├── sidemenucontroller(_:didshow:animated:)-67m06 │ │ │ └── index.html │ │ ├── sidemenucontroller(_:willshow:animated:)-1hl81 │ │ │ └── index.html │ │ ├── sidemenucontroller(_:willshow:animated:)-1juiy │ │ │ └── index.html │ │ ├── sidemenucontrollerdidhidemenu(_:)-2ufp3 │ │ │ └── index.html │ │ ├── sidemenucontrollerdidhidemenu(_:)-5bj9p │ │ │ └── index.html │ │ ├── sidemenucontrollerdidrevealmenu(_:)-11kew │ │ │ └── index.html │ │ ├── sidemenucontrollerdidrevealmenu(_:)-6umvn │ │ │ └── index.html │ │ ├── sidemenucontrollergetmenuwidth(_:for:)-6nrbw │ │ │ └── index.html │ │ ├── sidemenucontrollergetmenuwidth(_:for:)-xmh9 │ │ │ └── index.html │ │ ├── sidemenucontrollershouldrevealmenu(_:)-703eu │ │ │ └── index.html │ │ ├── sidemenucontrollershouldrevealmenu(_:)-9y55z │ │ │ └── index.html │ │ ├── sidemenucontrollerwillhidemenu(_:)-359mo │ │ │ └── index.html │ │ ├── sidemenucontrollerwillhidemenu(_:)-8i6tb │ │ │ └── index.html │ │ ├── sidemenucontrollerwillrevealmenu(_:)-4q697 │ │ │ └── index.html │ │ └── sidemenucontrollerwillrevealmenu(_:)-79vnu │ │ │ └── index.html │ │ ├── sidemenusegue │ │ ├── contenttype-swift.enum │ │ │ ├── !=(_:_:) │ │ │ │ └── index.html │ │ │ ├── content │ │ │ │ └── index.html │ │ │ ├── equatable-implementations │ │ │ │ └── index.html │ │ │ ├── hash(into:) │ │ │ │ └── index.html │ │ │ ├── hashvalue │ │ │ │ └── index.html │ │ │ ├── index.html │ │ │ ├── init(rawvalue:) │ │ │ │ └── index.html │ │ │ ├── menu │ │ │ │ └── index.html │ │ │ └── rawrepresentable-implementations │ │ │ │ └── index.html │ │ ├── contenttype-swift.property │ │ │ └── index.html │ │ ├── index.html │ │ ├── initwithidentifier:source:destination: │ │ │ └── index.html │ │ └── perform() │ │ │ └── index.html │ │ ├── sidemenuversionnumber │ │ └── index.html │ │ ├── sidemenuversionstring │ │ └── index.html │ │ └── uikit │ │ ├── index.html │ │ └── uiviewcontroller │ │ ├── index.html │ │ └── sidemenucontroller │ │ └── index.html ├── favicon.ico ├── favicon.svg ├── img │ ├── added-icon.832a5d2c.svg │ ├── deprecated-icon.7bf1740a.svg │ └── modified-icon.efb2697d.svg ├── index.html ├── index │ ├── availability.index │ ├── data.mdb │ ├── index.json │ └── navigator.index ├── js │ ├── 337.274a8ccc.js │ ├── 37.3cabdf6d.js │ ├── 523.3af1b2ef.js │ ├── 903.b3710a74.js │ ├── chunk-vendors.bdb7cbba.js │ ├── documentation-topic.f9ef3692.js │ ├── highlight-js-bash-js.702f0c5c.js │ ├── highlight-js-c-js.063069d3.js │ ├── highlight-js-cpp-js.458a9ae4.js │ ├── highlight-js-css-js.bfc4251f.js │ ├── highlight-js-custom-markdown.78c9f6ed.js │ ├── highlight-js-custom-swift.738731d1.js │ ├── highlight-js-diff-js.4db9a783.js │ ├── highlight-js-http-js.f78e83c2.js │ ├── highlight-js-java-js.4fe21e94.js │ ├── highlight-js-javascript-js.dfc9d16d.js │ ├── highlight-js-json-js.2a1856ba.js │ ├── highlight-js-llvm-js.26121771.js │ ├── highlight-js-markdown-js.a2f456af.js │ ├── highlight-js-objectivec-js.74dea052.js │ ├── highlight-js-perl-js.da6eda82.js │ ├── highlight-js-php-js.c458ffa4.js │ ├── highlight-js-python-js.60354774.js │ ├── highlight-js-ruby-js.7272231f.js │ ├── highlight-js-scss-js.adcd11a2.js │ ├── highlight-js-shell-js.0ad5b20f.js │ ├── highlight-js-swift-js.bdd5bff5.js │ ├── highlight-js-xml-js.0d78f903.js │ ├── index.2871ffbd.js │ ├── topic.2687cdff.js │ └── tutorials-overview.2eff1231.js └── metadata.json ├── fastlane ├── Appfile ├── Fastfile └── README.md └── package.json /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [kukushi] 4 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | on: [push, pull_request] 2 | name: Test 3 | jobs: 4 | test: 5 | name: Test 6 | runs-on: macOS-14 7 | steps: 8 | - name: Checkout 9 | uses: actions/checkout@v4 10 | with: 11 | fetch-depth: 1 12 | - uses: ruby/setup-ruby@v1 13 | with: 14 | bundler-cache: true 15 | - name: Build and test 16 | run: | 17 | gem update --system 18 | gem install bundler 19 | bundle install 20 | bundle exec fastlane test 21 | -------------------------------------------------------------------------------- /.idea/SideMenu.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/runConfigurations/SideMenu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/xcode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.0.6 -------------------------------------------------------------------------------- /.swiftlint.yml: -------------------------------------------------------------------------------- 1 | disabled_rules: 2 | # TODO 3 | - function_body_length 4 | # TODO 5 | - cyclomatic_complexity 6 | # TODO 7 | - type_body_length 8 | - nesting 9 | 10 | opt_in_rules: 11 | - force_unwrapping 12 | - implicitly_unwrapped_optional 13 | - legacy_random 14 | - overridden_super_call 15 | - override_in_extension 16 | - prohibited_super_call 17 | - redundant_type_annotation 18 | - static_operator 19 | - toggle_bool 20 | 21 | included: # paths to ignore during linting. Takes precedence over `included`. 22 | - SideMenu 23 | - Example 24 | 25 | identifier_name: 26 | excluded: # excluded via string array 27 | - ID 28 | # Used by UIKit 29 | # `func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath)` 30 | - to 31 | file_length: 32 | warning: 999 33 | error: 1500 34 | line_length: 140 -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: swift 2 | 3 | osx_image: xcode10.2 4 | 5 | cache: bundler 6 | 7 | before_install: 8 | - gem update --system 9 | - gem install bundler 10 | 11 | sudo: false 12 | 13 | script: 14 | - bundle exec fastlane test -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | ### [2.1.1](https://github.com/kukushi/SideMenu/compare/v2.0.8...v2.1.1) (2024-02-26) 6 | 7 | 8 | ### Features 9 | 10 | * add privacy ([9c7efc1](https://github.com/kukushi/SideMenu/commit/9c7efc1306c006f51fe270185a051caa6a5596e4)) 11 | * disable library evolution ([59f0d95](https://github.com/kukushi/SideMenu/commit/59f0d95b1bfc785a14e07d1cd246a370ae93cbe1)) 12 | * support keeps open when rotation ([db5812b](https://github.com/kukushi/SideMenu/commit/db5812b10b923da2c0bb695fa9ea97c1fa2edee1)) 13 | * update doc ([f0d1d96](https://github.com/kukushi/SideMenu/commit/f0d1d966505e2fc0ca213441aa3967d64ba634d9)) 14 | * usding DocC as the documentation format ([fc8fc18](https://github.com/kukushi/SideMenu/commit/fc8fc18bc767e5425170b686a200640833192ad4)) 15 | 16 | 17 | ### Bug Fixes 18 | 19 | * lint warnings ([4e80913](https://github.com/kukushi/SideMenu/commit/4e80913e2c82946625c5273f2b5ddad576a0bb63)) 20 | * swiftlint in run phase ([07b7b5b](https://github.com/kukushi/SideMenu/commit/07b7b5b2d9f1a9a9da76f576f4a4db6dabca2753)) 21 | 22 | ## [2.0.19] 23 | 24 | - Bump deployment target to iOS 12.0 25 | 26 | ## [2.0.9](https://github.com/kukushi/SideMenu/compare/v2.0.8...v2.0.9) (2022-04-24) 27 | 28 | ### Features 29 | 30 | * update doc ([f0d1d96](https://github.com/kukushi/SideMenu/commit/f0d1d966505e2fc0ca213441aa3967d64ba634d9)) 31 | * usding DocC as the documentation format ([fc8fc18](https://github.com/kukushi/SideMenu/commit/fc8fc18bc767e5425170b686a200640833192ad4)) 32 | 33 | ## [2.0.7] 34 | 35 | - [Add `panGestureSensitivity`](https://github.com/kukushi/SideMenu/issues/71)) 36 | 37 | ## [2.0.6] 38 | 39 | - fix: menu view controller life cycle 40 | 41 | ## [2.0.5] 42 | 43 | - Add `shouldAutorotate` 44 | 45 | ## [2.0.4] 46 | 47 | - Update docs 48 | 49 | ## [2.0.3] 50 | 51 | - Fix gesture backing [issue](https://github.com/kukushi/SideMenu/issues/67) 52 | 53 | ## [2.0.2] 54 | 55 | - Disable status bar animation on iOS 13 56 | 57 | ## [2.0.1] 58 | 59 | - Fix orientation size [issue](https://github.com/kukushi/SideMenu/issues/64) 60 | 61 | ## [2.0.0] 62 | 63 | - Update to Swift 5.0 64 | 65 | ## [1.0.2] 66 | 67 | - Remove shadow effect for `.under` position. 68 | 69 | ## [1.0.1] 70 | 71 | - Add `shadowColor` 72 | 73 | ## [1.0.0] 74 | 75 | - Update to Swift 4.2 76 | - Rename some APIs to make it more swift. 77 | 78 | ## [0.5.0] 79 | 80 | - Adds supports for transition animation 81 | - Adds `...willShowViewController` , `...didShowViewController` delegate methods 82 | 83 | ## [0.4.1] 84 | 85 | - Introduces the new `shouldRespectLanguageDirection` option in preference which reverses the direction of the side menu when using RTL language. 86 | - Disable pan gesture when there is another gesture recognizer. -------------------------------------------------------------------------------- /Example/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SideMenuExample 4 | // 5 | // Created by kukushi on 11/02/2018. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SideMenu 11 | 12 | @UIApplicationMain 13 | class AppDelegate: UIResponder, UIApplicationDelegate { 14 | 15 | var window: UIWindow? 16 | 17 | func application(_ application: UIApplication, 18 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 19 | 20 | #if DEBUG 21 | var arguments = ProcessInfo.processInfo.arguments 22 | arguments.removeFirst() 23 | setupTestingEnvironment(with: arguments) 24 | #endif 25 | 26 | configureSideMenu() 27 | return true 28 | } 29 | 30 | private func configureSideMenu() { 31 | SideMenuController.preferences.basic.menuWidth = 240 32 | SideMenuController.preferences.basic.defaultCacheKey = "0" 33 | } 34 | 35 | } 36 | 37 | #if DEBUG 38 | extension AppDelegate { 39 | private func setupTestingEnvironment(with arguments: [String]) { 40 | if arguments.contains("SwitchToRight") { 41 | SideMenuController.preferences.basic.direction = .right 42 | } 43 | } 44 | } 45 | #endif 46 | -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-20@2x-1.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-29@2x-1.png", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-29@3x.png", 25 | "scale" : "3x" 26 | }, 27 | { 28 | "size" : "40x40", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-40@2x-2.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-40@3x-1.png", 37 | "scale" : "3x" 38 | }, 39 | { 40 | "size" : "60x60", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-60@2x.png", 43 | "scale" : "2x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-60@3x.png", 49 | "scale" : "3x" 50 | }, 51 | { 52 | "size" : "20x20", 53 | "idiom" : "ipad", 54 | "filename" : "Icon-20.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-20@2x.png", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "size" : "29x29", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-29.png", 67 | "scale" : "1x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-29@2x.png", 73 | "scale" : "2x" 74 | }, 75 | { 76 | "size" : "40x40", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-40.png", 79 | "scale" : "1x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-40@2x.png", 85 | "scale" : "2x" 86 | }, 87 | { 88 | "size" : "76x76", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-76.png", 91 | "scale" : "1x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-76@2x.png", 97 | "scale" : "2x" 98 | }, 99 | { 100 | "size" : "83.5x83.5", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-83.5@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "1024x1024", 107 | "idiom" : "ios-marketing", 108 | "filename" : "Icon-512@2x.png", 109 | "scale" : "1x" 110 | } 111 | ], 112 | "info" : { 113 | "version" : 1, 114 | "author" : "xcode" 115 | } 116 | } -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-20.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-20@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-20@2x-1.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-29.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-2.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-40@3x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-40@3x-1.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-512@2x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /Example/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Example/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png -------------------------------------------------------------------------------- /Example/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | UIInterfaceOrientationPortraitUpsideDown 37 | 38 | UISupportedInterfaceOrientations~ipad 39 | 40 | UIInterfaceOrientationPortrait 41 | UIInterfaceOrientationPortraitUpsideDown 42 | UIInterfaceOrientationLandscapeLeft 43 | UIInterfaceOrientationLandscapeRight 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Example/OtherExampleViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdViewController.swift 3 | // SideMenuExample 4 | // 5 | // Created by kukushi on 21/02/2018. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SideMenu 11 | 12 | class OtherExampleViewController: UIViewController { 13 | 14 | override func viewDidLoad() { 15 | super.viewDidLoad() 16 | 17 | title = "Example" 18 | } 19 | 20 | @IBAction func menuButtonDidClicked(_ sender: Any) { 21 | sideMenuController?.revealMenu() 22 | } 23 | 24 | override var preferredStatusBarStyle: UIStatusBarStyle { 25 | return .default 26 | } 27 | 28 | @IBAction func switchToProgrammaticallyExample(_ sender: Any) { 29 | let contentViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ContentNavigation") 30 | let menuViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MenuNavigation") 31 | let sideMenuController = SideMenuController(contentViewController: contentViewController, menuViewController: menuViewController) 32 | UIApplication.shared.keyWindow?.rootViewController = sideMenuController 33 | } 34 | 35 | @IBAction func switchToIBExample(_ sender: Any) { 36 | let sideMenuController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SideMenu") 37 | UIApplication.shared.keyWindow?.rootViewController = sideMenuController 38 | } 39 | 40 | @IBAction func switchToHybridExample(_ sender: Any) { 41 | let contentViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ContentNavigation") 42 | let menuViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MenuNavigation") 43 | guard let sideMenuController = UIStoryboard(name: "Main", bundle: nil) 44 | .instantiateViewController(withIdentifier: "SingleSideMenu") as? SideMenuController else { 45 | fatalError("Missing SingleSideMenu view controller in storyboard") 46 | } 47 | sideMenuController.contentViewController = contentViewController 48 | sideMenuController.menuViewController = menuViewController 49 | UIApplication.shared.keyWindow?.rootViewController = sideMenuController 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Example/UINavigationController+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UINavigationController+Extension.swift 3 | // SideMenuExample 4 | // 5 | // Created by kukushi on 25/02/2018. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class NavigationController: UINavigationController { 12 | 13 | open override var childForStatusBarHidden: UIViewController? { 14 | return self.topViewController 15 | } 16 | 17 | open override var childForStatusBarStyle: UIViewController? { 18 | return self.topViewController 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | gem "jazzy" 5 | gem "cocoapods" 6 | gem "xcpretty", "0.3.0" -------------------------------------------------------------------------------- /Images/Above+None.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Images/Above+None.gif -------------------------------------------------------------------------------- /Images/Below+Slide.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Images/Below+Slide.gif -------------------------------------------------------------------------------- /Images/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Images/Logo.png -------------------------------------------------------------------------------- /Images/SideBySide+Fade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Images/SideBySide+Fade.gif -------------------------------------------------------------------------------- /Images/SideBySide+HideOnMenu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Images/SideBySide+HideOnMenu.gif -------------------------------------------------------------------------------- /Images/SideMneu.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Images/SideMneu.sketch -------------------------------------------------------------------------------- /Images/StoryboardSample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/Images/StoryboardSample.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 kukushi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "object": { 3 | "pins": [ 4 | { 5 | "package": "SwiftDocCPlugin", 6 | "repositoryURL": "https://github.com/apple/swift-docc-plugin", 7 | "state": { 8 | "branch": null, 9 | "revision": "3303b164430d9a7055ba484c8ead67a52f7b74f6", 10 | "version": "1.0.0" 11 | } 12 | } 13 | ] 14 | }, 15 | "version": 1 16 | } 17 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.1 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "SideMenu", 8 | platforms: [ 9 | .iOS(.v12) 10 | ], 11 | products: [ 12 | // Products define the executables and libraries produced by a package, and make them visible to other packages. 13 | .library( 14 | name: "SideMenu", 15 | targets: ["SideMenu"]), 16 | ], 17 | dependencies: [ 18 | .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"), 19 | ], 20 | targets: [ 21 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 22 | // Targets can depend on other targets in this package, and on products in packages which this package depends on. 23 | .target( 24 | name: "SideMenu", 25 | dependencies: []), 26 | .testTarget( 27 | name: "SideMenuTests", 28 | dependencies: ["SideMenu"]), 29 | ] 30 | ) 31 | -------------------------------------------------------------------------------- /SideMenu.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SideMenu.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SideMenu.xcodeproj/xcshareddata/xcschemes/SideMenuExampleUITests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 14 | 15 | 17 | 23 | 24 | 25 | 26 | 27 | 37 | 38 | 44 | 45 | 47 | 48 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /SideMenuExampleUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /SideMenuExampleUITests/SideMenuExampleUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SideMenuExampleUITests.swift 3 | // SideMenuExampleUITests 4 | // 5 | // Created by kukushi on 2018/4/8. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | import SideMenu 11 | 12 | class SideMenuBasicUITests: XCTestCase { 13 | var app: XCUIApplication! 14 | 15 | override func setUp() { 16 | super.setUp() 17 | 18 | continueAfterFailure = false 19 | app = XCUIApplication() 20 | app.launch() 21 | } 22 | 23 | override func tearDown() { 24 | super.tearDown() 25 | } 26 | 27 | func testRevealAndHide() { 28 | let app = XCUIApplication() 29 | let menuView = app.tables.containing(.staticText, identifier: "SIDEMENU").element 30 | 31 | assert(element: menuView, isVisible: false) 32 | 33 | // Show 34 | app.navigationBars["Preferences"].buttons["Menu"].tap() 35 | 36 | waitForElementToAppear(menuView) 37 | 38 | // Hide 39 | let element = app.otherElements["ContentShadowOverlay"] 40 | element.tap() 41 | 42 | print(app.debugDescription) 43 | 44 | waitForElementToDisappear(menuView) 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /SideMenuExampleUITests/SideMenuRightUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SideMenuRightUITests.swift 3 | // SideMenuExampleUITests 4 | // 5 | // Created by kukushi on 2018/5/15. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class SideMenuRightUITests: XCTestCase { 12 | 13 | var app: XCUIApplication! 14 | 15 | override func setUp() { 16 | super.setUp() 17 | 18 | continueAfterFailure = false 19 | 20 | let app = XCUIApplication() 21 | app.launchArguments = ["SwitchToRight"] 22 | app.launch() 23 | } 24 | 25 | override func tearDown() { 26 | // Put teardown code here. This method is called after the invocation of each test method in the class. 27 | super.tearDown() 28 | } 29 | 30 | func testRevealAndHide() { 31 | let app = XCUIApplication() 32 | let menuView = app.tables.containing(.staticText, identifier: "SIDEMENU").element 33 | 34 | assert(element: menuView, isVisible: false) 35 | 36 | // Show 37 | app.navigationBars["Preferences"].buttons["Menu"].tap() 38 | 39 | waitForElementToAppear(menuView) 40 | 41 | print(menuView.debugDescription) 42 | 43 | // Hide 44 | let element = app.otherElements["ContentShadowOverlay"] 45 | element.tap() 46 | 47 | print(app.debugDescription) 48 | 49 | waitForElementToDisappear(menuView) 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /SideMenuExampleUITests/UITestHelpers.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BaseTest.swift 3 | // SideMenuExampleUITests 4 | // 5 | // Created by kukushi on 2018/4/20. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | extension XCTestCase { 12 | 13 | /// Validates that given element is visible/invisible 14 | /// 15 | /// - Parameters: 16 | /// - element: the element 17 | /// - isVisible: true - if need to check if visible, false - if hidden 18 | internal func assert(element: XCUIElement, isVisible: Bool, file: String = #file, line: Int = #line) { 19 | var visible = element.exists && element.isHittable 20 | visible = isVisible ? visible : !visible 21 | UIAssert(visible, "elements should be \(isVisible ? "visible" : "invisible")", file: file, line: line) 22 | } 23 | 24 | func UIAssert(_ value: Bool, _ description: String = "-", file: String = #file, line: Int = #line) { 25 | if !value { 26 | record(XCTIssue(type: .assertionFailure, compactDescription: description)) 27 | } 28 | } 29 | 30 | /// waits for element to appear 31 | func waitForElementToAppear(_ element: XCUIElement, file: String = #file, line: Int = #line) { 32 | let predicate = NSPredicate(format: "exists == true AND isHittable == true") 33 | waitFor(element, to: predicate, trueOrFalse: true, timeout: 5, file: file, line: line) 34 | } 35 | 36 | func waitForElementToDisappear(_ element: XCUIElement, file: String = #file, line: Int = #line) { 37 | let predicate = NSPredicate(format: "isHittable == false") 38 | waitFor(element, to: predicate, trueOrFalse: false, timeout: 5, file: file, line: line) 39 | } 40 | 41 | func waitFor(_ element: XCUIElement, 42 | to: NSPredicate, 43 | trueOrFalse: Bool, 44 | timeout: TimeInterval, 45 | file: String = #file, 46 | line: Int = #line) { 47 | expectation(for: to, evaluatedWith: element, handler: nil) 48 | waitForExpectations(timeout: timeout) { (error) -> Void in 49 | if error != nil { 50 | let message = "Failed to find \(element) after \(timeout) seconds." 51 | self.record(XCTIssue(type: .assertionFailure, compactDescription: message)) 52 | } 53 | } 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /SideMenuSwift.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | 3 | s.name = "SideMenuSwift" 4 | s.version = "2.1.1" 5 | s.summary = "An interactive iOS side menu with rich features." 6 | 7 | s.description = <<-DESC 8 | SideMenuSwift is an iOS container view controller written in Swift. Its easy-to-use and supports both storyboard and code. It provides several ways to reveal the menu and animate the status bar. 9 | DESC 10 | 11 | s.homepage = "https://github.com/kukushi/SideMenu" 12 | s.license = "MIT" 13 | s.author = { "kukushi" => "" } 14 | s.platform = :ios, "12.0" 15 | s.source = { :git => "https://github.com/kukushi/SideMenu.git", :tag => s.version } 16 | s.source_files = "Sources/SideMenu/*.{h,m,swift}" 17 | s.swift_version = "5.0" 18 | s.requires_arc = true 19 | 20 | end 21 | -------------------------------------------------------------------------------- /Sources/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyAccessedAPITypes 6 | 7 | NSPrivacyCollectedDataTypes 8 | 9 | NSPrivacyTracking 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Sources/SideMenu/BasicTransitionAnimator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TransitionAnimator.swift 3 | // SideMenu 4 | // 5 | // Created by kukushi on 2018/8/8. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | // A Simple transition animator can be configured with animation options. 12 | public class BasicTransitionAnimator: NSObject, UIViewControllerAnimatedTransitioning { 13 | let animationOptions: UIView.AnimationOptions 14 | let duration: TimeInterval 15 | 16 | /// Initialize a new animator with animation options and duration. 17 | /// 18 | /// - Parameters: 19 | /// - options: animation options 20 | /// - duration: animation duration 21 | public init(options: UIView.AnimationOptions = .transitionCrossDissolve, duration: TimeInterval = 0.4) { 22 | self.animationOptions = options 23 | self.duration = duration 24 | } 25 | 26 | // MARK: UIViewControllerAnimatedTransitioning 27 | 28 | public func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { 29 | return duration 30 | } 31 | 32 | public func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { 33 | guard let fromViewController = transitionContext.viewController(forKey: .from), 34 | let toViewController = transitionContext.viewController(forKey: .to) else { 35 | return 36 | } 37 | 38 | transitionContext.containerView.addSubview(toViewController.view) 39 | 40 | let duration = transitionDuration(using: transitionContext) 41 | 42 | UIView.transition(from: fromViewController.view, 43 | to: toViewController.view, 44 | duration: duration, 45 | options: animationOptions, 46 | completion: { (_) in 47 | transitionContext.completeTransition(!transitionContext.transitionWasCancelled) 48 | }) 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Sources/SideMenu/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Sources/SideMenu/Segue.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SideMenuSegue.swift 3 | // SideMenu 4 | // 5 | // Created by kukushi on 2018/8/8. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | /// Custom Segue that is required for ``SideMenuController`` to be used in Storyboard. 12 | open class SideMenuSegue: UIStoryboardSegue { 13 | 14 | /// The type of segue 15 | public enum ContentType: String { 16 | /// represent the content scene of side menu 17 | case content = "SideMenu.Content" 18 | /// represent the menu scene of side menu 19 | case menu = "SideMenu.Menu" 20 | } 21 | 22 | /// current content type 23 | public var contentType = ContentType.content 24 | 25 | /// Performing the segue, will change the corresponding view controller of side menu to `destination` view controller. 26 | /// This method is called when loading from storyboard. 27 | open override func perform() { 28 | guard let sideMenuController = source as? SideMenuController else { 29 | return 30 | } 31 | 32 | switch contentType { 33 | case .content: 34 | sideMenuController.contentViewController = destination 35 | case .menu: 36 | sideMenuController.menuViewController = destination 37 | } 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Sources/SideMenu/SideMenu.h: -------------------------------------------------------------------------------- 1 | // 2 | // SideMenu.h 3 | // SideMenu 4 | // 5 | // Created by kukushi on 03/02/2018. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for SideMenu. 12 | FOUNDATION_EXPORT double SideMenuVersionNumber; 13 | 14 | //! Project version string for SideMenu. 15 | FOUNDATION_EXPORT const unsigned char SideMenuVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Sources/SideMenu/StatusBar.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StatusBar.swift 3 | // SideMenu 4 | // 5 | // Created by kukushi on 22/02/2018. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIWindow { 12 | 13 | // swiftlint:disable identifier_name 14 | /// Returns current application's `statusBarWindows` 15 | static var sb: UIWindow? { 16 | // We use a non-public key here to obtain the `statusBarWindow` window. 17 | // We have been using it in real world app and it won't be rejected by the review team for using this key. 18 | let s = "status", b = "Bar", w = "Window" 19 | if #available(iOS 13, *) { 20 | return nil 21 | } else { 22 | return UIApplication.shared.value(forKey: s+b+w) as? UIWindow 23 | } 24 | } 25 | 26 | /// Changes the windows' visibility with custom behavior 27 | /// 28 | /// - Parameters: 29 | /// - hidden: the windows hidden status 30 | /// - behavior: status bar behavior 31 | internal func setStatusBarHidden(_ hidden: Bool, with behavior: SideMenuController.Preferences.StatusBarBehavior) { 32 | guard behavior != .none else { 33 | return 34 | } 35 | 36 | switch behavior { 37 | case .fade, .hideOnMenu: 38 | alpha = hidden ? 0 : 1 39 | case .slide: 40 | let statusBarHeight = UIApplication.shared.statusBarFrame.height 41 | transform = hidden ? CGAffineTransform(translationX: 0, y: -statusBarHeight) : .identity 42 | default: 43 | return 44 | } 45 | } 46 | 47 | internal func isStatusBarHidden(with behavior: SideMenuController.Preferences.StatusBarBehavior) -> Bool { 48 | switch behavior { 49 | case .none: 50 | return false 51 | case .fade, .hideOnMenu: 52 | return alpha == 0 53 | case .slide: 54 | return transform != .identity 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Sources/SideMenu/TransitionContext.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SideMenuTransitionContext.swift 3 | // SideMenu 4 | // 5 | // Created by kukushi on 2018/8/8. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | /// A internal transitioning context used for triggering the transition animation 12 | extension SideMenuController { 13 | class TransitionContext: NSObject, UIViewControllerContextTransitioning { 14 | var isAnimated = true 15 | var targetTransform: CGAffineTransform = .identity 16 | 17 | let containerView: UIView 18 | let presentationStyle: UIModalPresentationStyle 19 | 20 | private var viewControllers = [UITransitionContextViewControllerKey: UIViewController]() 21 | 22 | var isInteractive = false 23 | 24 | var transitionWasCancelled: Bool { 25 | // Our non-interactive transition can't be cancelled 26 | return false 27 | } 28 | 29 | var completion: ((Bool) -> Void)? 30 | 31 | init(with fromViewController: UIViewController, toViewController: UIViewController) { 32 | guard let superView = fromViewController.view.superview else { 33 | fatalError("fromViewController's view should have a parent view") 34 | } 35 | presentationStyle = .custom 36 | containerView = superView 37 | viewControllers = [ 38 | .from: fromViewController, 39 | .to: toViewController 40 | ] 41 | 42 | super.init() 43 | } 44 | 45 | func completeTransition(_ didComplete: Bool) { 46 | completion?(didComplete) 47 | } 48 | 49 | func viewController(forKey key: UITransitionContextViewControllerKey) -> UIViewController? { 50 | return viewControllers[key] 51 | } 52 | 53 | func view(forKey key: UITransitionContextViewKey) -> UIView? { 54 | switch key { 55 | case .from: 56 | return viewControllers[.from]?.view 57 | case .to: 58 | return viewControllers[.to]?.view 59 | default: 60 | return nil 61 | } 62 | } 63 | 64 | // swiftlint:disable identifier_name 65 | func initialFrame(for vc: UIViewController) -> CGRect { 66 | return containerView.frame 67 | } 68 | 69 | func finalFrame(for vc: UIViewController) -> CGRect { 70 | return containerView.frame 71 | } 72 | 73 | // MARK: Interactive, not supported yet 74 | 75 | func updateInteractiveTransition(_ percentComplete: CGFloat) {} 76 | func finishInteractiveTransition() {} 77 | func cancelInteractiveTransition() {} 78 | func pauseInteractiveTransition() {} 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Sources/SideMenu/UIView+Container.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Container.swift 3 | // SideMenu 4 | // 5 | // Created by kukushi on 2018/9/12. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIView { 12 | var parentViewController: UIViewController? { 13 | var parentResponder: UIResponder? = self 14 | while parentResponder != nil { 15 | // swiftlint:disable:next force_unwrapping 16 | parentResponder = parentResponder!.next 17 | if let viewController = parentResponder as? UIViewController { 18 | return viewController 19 | } 20 | } 21 | return nil 22 | } 23 | 24 | var parentNavigationController: UINavigationController? { 25 | let currentViewController = parentViewController 26 | if let navigationController = currentViewController as? UINavigationController { 27 | return navigationController 28 | } 29 | return currentViewController?.navigationController 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Sources/SideMenu/UIViewController+Container.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Container.swift 3 | // SideMenu 4 | // 5 | // Created by kukushi on 2018/8/8. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIViewController { 12 | 13 | func load(_ viewController: UIViewController?, on view: UIView) { 14 | guard let viewController = viewController else { 15 | return 16 | } 17 | 18 | // `willMoveToParentViewController:` is called automatically when adding 19 | 20 | addChild(viewController) 21 | 22 | viewController.view.frame = view.bounds 23 | viewController.view.translatesAutoresizingMaskIntoConstraints = true 24 | viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 25 | 26 | view.addSubview(viewController.view) 27 | 28 | viewController.didMove(toParent: self) 29 | } 30 | 31 | func unload(_ viewController: UIViewController?) { 32 | guard let viewController = viewController else { 33 | return 34 | } 35 | 36 | viewController.willMove(toParent: nil) 37 | viewController.view.removeFromSuperview() 38 | viewController.removeFromParent() 39 | // `didMoveToParentViewController:` is called automatically when removing 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Sources/SideMenu/UIViewController+SideMenu.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+Extension.swift 3 | // SideMenu 4 | // 5 | // Created by kukushi on 10/02/2018. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | // Provides access to the side menu controller 12 | public extension UIViewController { 13 | 14 | /// Access the nearest ancestor view controller hierarchy that is a side menu controller. 15 | var sideMenuController: SideMenuController? { 16 | return findSideMenuController(from: self) 17 | } 18 | 19 | fileprivate func findSideMenuController(from viewController: UIViewController) -> SideMenuController? { 20 | var sourceViewController: UIViewController? = viewController 21 | repeat { 22 | sourceViewController = sourceViewController?.parent 23 | if let sideMenuController = sourceViewController as? SideMenuController { 24 | return sideMenuController 25 | } 26 | } while (sourceViewController != nil) 27 | return nil 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Tests/SideMenuTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Tests/SideMenuTests/SideMenuTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SideMenuTests.swift 3 | // SideMenuTests 4 | // 5 | // Created by kukushi on 03/02/2018. 6 | // Copyright © 2018 kukushi. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import SideMenu 11 | 12 | class SideMenuTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/sidemenucontroller/currentcacheidentifier().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["iOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"currentCacheIdentifier"},{"kind":"text","text":"() -> "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"?","kind":"text"}]}]},{"content":[{"level":2,"type":"heading","text":"Return Value","anchor":"return-value"},{"type":"paragraph","inlineContent":[{"type":"text","text":"if not exist, returns nil."}]}],"kind":"content"}],"variants":[{"paths":["\/documentation\/sidemenu\/sidemenucontroller\/currentcacheidentifier()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/currentCacheIdentifier()","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Method","externalID":"s:8SideMenu0aB10ControllerC22currentCacheIdentifierSSSgyF","title":"currentCacheIdentifier()","symbolKind":"method","role":"symbol","fragments":[{"text":"func","kind":"keyword"},{"kind":"text","text":" "},{"text":"currentCacheIdentifier","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?"}],"modules":[{"name":"SideMenu"}]},"abstract":[{"text":"Return the identifier of current content view controller.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"]]},"sections":[],"kind":"symbol","references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController/currentCacheIdentifier()":{"url":"\/documentation\/sidemenu\/sidemenucontroller\/currentcacheidentifier()","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/currentCacheIdentifier()","kind":"symbol","type":"topic","role":"symbol","abstract":[{"text":"Return the identifier of current content view controller.","type":"text"}],"title":"currentCacheIdentifier()","fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"currentCacheIdentifier","kind":"identifier"},{"kind":"text","text":"() -> "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"text":"?","kind":"text"}]},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]},"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController":{"url":"\/documentation\/sidemenu\/sidemenucontroller","type":"topic","title":"SideMenuController","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"SideMenuController"}],"navigatorTitle":[{"kind":"identifier","text":"SideMenuController"}],"abstract":[{"type":"text","text":"A container view controller owns a menu view controller and a content view controller."}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"}},"variantOverrides":[{"traits":[{"interfaceLanguage":"occ"}],"patch":[{"value":"SideMenuController","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/title","op":"replace"},{"path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/fragments","value":[{"text":"SideMenuController","kind":"identifier"}],"op":"replace"}]}]} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/sidemenucontroller/initwithcoder:.json: -------------------------------------------------------------------------------- 1 | {"kind":"symbol","identifier":{"interfaceLanguage":"occ","url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/initWithCoder:"},"variants":[{"traits":[{"interfaceLanguage":"occ"}],"paths":["\/documentation\/sidemenu\/sidemenucontroller\/initwithcoder:"]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"metadata":{"navigatorTitle":[{"text":"initWithCoder:","kind":"identifier"}],"modules":[{"name":"SideMenu"}],"roleHeading":"Instance Method","title":"initWithCoder:","externalID":"c:@M@SideMenu@objc(cs)SideMenuController(im)initWithCoder:","role":"symbol","symbolKind":"method","fragments":[{"text":"- ","kind":"text"},{"kind":"identifier","text":"initWithCoder:"}]},"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"]]},"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"text","text":"- ("},{"kind":"keyword","text":"id"},{"text":") ","kind":"text"},{"kind":"identifier","text":"initWithCoder:"},{"kind":"text","text":"("},{"preciseIdentifier":"c:objc(cs)NSCoder","kind":"typeIdentifier","text":"NSCoder"},{"text":" *) ","kind":"text"},{"kind":"internalParam","text":"coder"},{"text":";","kind":"text"}],"languages":["occ"],"platforms":["iOS"]}],"kind":"declarations"}],"references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController":{"url":"\/documentation\/sidemenu\/sidemenucontroller","type":"topic","title":"SideMenuController","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"SideMenuController"}],"navigatorTitle":[{"kind":"identifier","text":"SideMenuController"}],"abstract":[{"type":"text","text":"A container view controller owns a menu view controller and a content view controller."}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"},"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController/initWithCoder:":{"kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/initWithCoder:","title":"initWithCoder:","role":"symbol","fragments":[{"text":"- ","kind":"text"},{"kind":"identifier","text":"initWithCoder:"}],"navigatorTitle":[{"kind":"identifier","text":"initWithCoder:"}],"type":"topic","abstract":[],"url":"\/documentation\/sidemenu\/sidemenucontroller\/initwithcoder:"},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]}},"variantOverrides":[{"patch":[{"value":"SideMenuController","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/title","op":"replace"},{"op":"replace","value":[{"text":"SideMenuController","kind":"identifier"}],"path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/fragments"}],"traits":[{"interfaceLanguage":"occ"}]}]} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/sidemenucontroller/initwithnibname:bundle:.json: -------------------------------------------------------------------------------- 1 | {"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"]]},"variants":[{"paths":["\/documentation\/sidemenu\/sidemenucontroller\/initwithnibname:bundle:"],"traits":[{"interfaceLanguage":"occ"}]}],"identifier":{"interfaceLanguage":"occ","url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/initWithNibName:bundle:"},"primaryContentSections":[{"declarations":[{"platforms":["iOS"],"languages":["occ"],"tokens":[{"kind":"text","text":"- ("},{"text":"id","kind":"keyword"},{"text":") ","kind":"text"},{"text":"initWithNibName:","kind":"identifier"},{"text":"(","kind":"text"},{"preciseIdentifier":"c:objc(cs)NSString","text":"NSString","kind":"typeIdentifier"},{"kind":"text","text":" *) "},{"kind":"internalParam","text":"nibNameOrNil"},{"text":" ","kind":"text"},{"text":"bundle:","kind":"identifier"},{"text":"(","kind":"text"},{"text":"NSBundle","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)NSBundle"},{"text":" *) ","kind":"text"},{"text":"nibBundleOrNil","kind":"internalParam"},{"kind":"text","text":";"}]}],"kind":"declarations"}],"sections":[],"metadata":{"role":"symbol","roleHeading":"Instance Method","navigatorTitle":[{"kind":"identifier","text":"initWithNibName:bundle:"}],"title":"initWithNibName:bundle:","externalID":"c:@M@SideMenu@objc(cs)SideMenuController(im)initWithNibName:bundle:","symbolKind":"method","fragments":[{"kind":"text","text":"- "},{"kind":"identifier","text":"initWithNibName:bundle:"}],"modules":[{"name":"SideMenu"}]},"references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController":{"url":"\/documentation\/sidemenu\/sidemenucontroller","type":"topic","title":"SideMenuController","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"SideMenuController"}],"navigatorTitle":[{"kind":"identifier","text":"SideMenuController"}],"abstract":[{"type":"text","text":"A container view controller owns a menu view controller and a content view controller."}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"},"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController/initWithNibName:bundle:":{"url":"\/documentation\/sidemenu\/sidemenucontroller\/initwithnibname:bundle:","navigatorTitle":[{"text":"initWithNibName:bundle:","kind":"identifier"}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/initWithNibName:bundle:","kind":"symbol","type":"topic","role":"symbol","abstract":[],"title":"initWithNibName:bundle:","fragments":[{"kind":"text","text":"- "},{"text":"initWithNibName:bundle:","kind":"identifier"}]},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]}},"variantOverrides":[{"traits":[{"interfaceLanguage":"occ"}],"patch":[{"op":"replace","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/title","value":"SideMenuController"},{"op":"replace","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/fragments","value":[{"kind":"identifier","text":"SideMenuController"}]}]}]} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/sidemenucontroller/ismenurevealed.json: -------------------------------------------------------------------------------- 1 | {"sections":[],"identifier":{"url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/isMenuRevealed","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"isMenuRevealed","kind":"identifier"},{"kind":"text","text":": "},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"roleHeading":"Instance Property","externalID":"s:8SideMenu0aB10ControllerC02isB8RevealedSbvp","modules":[{"name":"SideMenu"}],"symbolKind":"property","title":"isMenuRevealed","role":"symbol"},"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isMenuRevealed"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"languages":["swift"],"platforms":["iOS"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/sidemenu\/sidemenucontroller\/ismenurevealed"]}],"abstract":[{"type":"text","text":"Return true if the menu is now revealing."}],"references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController/isMenuRevealed":{"url":"\/documentation\/sidemenu\/sidemenucontroller\/ismenurevealed","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/isMenuRevealed","kind":"symbol","type":"topic","role":"symbol","abstract":[{"type":"text","text":"Return true if the menu is now revealing."}],"title":"isMenuRevealed","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isMenuRevealed"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}]},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]},"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController":{"url":"\/documentation\/sidemenu\/sidemenucontroller","type":"topic","title":"SideMenuController","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"SideMenuController"}],"navigatorTitle":[{"kind":"identifier","text":"SideMenuController"}],"abstract":[{"type":"text","text":"A container view controller owns a menu view controller and a content view controller."}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"}},"variantOverrides":[{"patch":[{"op":"replace","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/title","value":"SideMenuController"},{"op":"replace","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/fragments","value":[{"kind":"identifier","text":"SideMenuController"}]}],"traits":[{"interfaceLanguage":"occ"}]}]} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/sidemenucontroller/menuviewcontroller.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"menuViewController","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UIViewController","preciseIdentifier":"c:objc(cs)UIViewController"},{"text":"! { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["iOS"]}],"kind":"declarations"}],"metadata":{"roleHeading":"Instance Property","modules":[{"name":"SideMenu"}],"symbolKind":"property","title":"menuViewController","role":"symbol","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"menuViewController"},{"kind":"text","text":": "},{"text":"UIViewController","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UIViewController"},{"kind":"text","text":"!"}],"externalID":"s:8SideMenu0aB10ControllerC08menuViewC0So06UIViewC0CSgvp"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"]]},"kind":"symbol","abstract":[{"type":"text","text":"The menu view controller. Its value should not be nil."}],"identifier":{"url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/menuViewController","interfaceLanguage":"swift"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/sidemenu\/sidemenucontroller\/menuviewcontroller"]}],"references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController/menuViewController":{"url":"\/documentation\/sidemenu\/sidemenucontroller\/menuviewcontroller","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController\/menuViewController","kind":"symbol","type":"topic","role":"symbol","abstract":[{"type":"text","text":"The menu view controller. Its value should not be nil."}],"title":"menuViewController","fragments":[{"text":"var","kind":"keyword"},{"kind":"text","text":" "},{"text":"menuViewController","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"UIViewController","preciseIdentifier":"c:objc(cs)UIViewController"},{"text":"!","kind":"text"}]},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]},"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuController":{"url":"\/documentation\/sidemenu\/sidemenucontroller","type":"topic","title":"SideMenuController","kind":"symbol","role":"symbol","fragments":[{"kind":"keyword","text":"class"},{"text":" ","kind":"text"},{"kind":"identifier","text":"SideMenuController"}],"navigatorTitle":[{"kind":"identifier","text":"SideMenuController"}],"abstract":[{"type":"text","text":"A container view controller owns a menu view controller and a content view controller."}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuController"}},"variantOverrides":[{"traits":[{"interfaceLanguage":"occ"}],"patch":[{"value":"SideMenuController","op":"replace","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/title"},{"value":[{"text":"SideMenuController","kind":"identifier"}],"op":"replace","path":"\/references\/doc:~1~1com.kukushi.SideMenu~1documentation~1SideMenu~1SideMenuController\/fragments"}]}]} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/sidemenuversionnumber.json: -------------------------------------------------------------------------------- 1 | {"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/sidemenu\/sidemenuversionnumber"],"traits":[{"interfaceLanguage":"occ"}]}],"abstract":[{"type":"text","text":"Project version number for SideMenu."}],"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu"]]},"metadata":{"fragments":[{"kind":"identifier","text":"SideMenuVersionNumber"}],"title":"SideMenuVersionNumber","role":"symbol","navigatorTitle":[{"kind":"identifier","text":"SideMenuVersionNumber"}],"externalID":"c:@SideMenuVersionNumber","modules":[{"name":"SideMenu"}],"symbolKind":"var","roleHeading":"Global Variable"},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"extern"},{"kind":"text","text":" "},{"preciseIdentifier":"c:d","text":"double","kind":"typeIdentifier"},{"text":" ","kind":"text"},{"kind":"identifier","text":"SideMenuVersionNumber"},{"text":";","kind":"text"}],"languages":["occ"],"platforms":["iOS"]}]}],"identifier":{"url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuVersionNumber","interfaceLanguage":"occ"},"sections":[],"kind":"symbol","references":{"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]},"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuVersionNumber":{"kind":"symbol","fragments":[{"kind":"identifier","text":"SideMenuVersionNumber"}],"type":"topic","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuVersionNumber","abstract":[{"text":"Project version number for SideMenu.","type":"text"}],"url":"\/documentation\/sidemenu\/sidemenuversionnumber","title":"SideMenuVersionNumber","role":"symbol"}}} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/sidemenuversionstring.json: -------------------------------------------------------------------------------- 1 | {"kind":"symbol","variants":[{"paths":["\/documentation\/sidemenu\/sidemenuversionstring"],"traits":[{"interfaceLanguage":"occ"}]}],"identifier":{"interfaceLanguage":"occ","url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuVersionString"},"schemaVersion":{"patch":0,"major":0,"minor":3},"metadata":{"roleHeading":"Global Variable","symbolKind":"var","role":"symbol","title":"SideMenuVersionString","navigatorTitle":[{"text":"SideMenuVersionString","kind":"identifier"}],"modules":[{"name":"SideMenu"}],"externalID":"c:@SideMenuVersionString","fragments":[{"kind":"identifier","text":"SideMenuVersionString"}]},"abstract":[{"text":"Project version string for SideMenu.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu"]]},"primaryContentSections":[{"declarations":[{"languages":["occ"],"tokens":[{"text":"extern","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"keyword","text":"const"},{"text":" ","kind":"text"},{"kind":"typeIdentifier","text":"unsigned char","preciseIdentifier":"c:c"},{"text":" ","kind":"text"},{"text":"SideMenuVersionString","kind":"identifier"},{"text":"[];","kind":"text"}],"platforms":["iOS"]}],"kind":"declarations"}],"sections":[],"references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/SideMenuVersionString":{"abstract":[{"text":"Project version string for SideMenu.","type":"text"}],"role":"symbol","type":"topic","title":"SideMenuVersionString","kind":"symbol","url":"\/documentation\/sidemenu\/sidemenuversionstring","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/SideMenuVersionString","fragments":[{"text":"SideMenuVersionString","kind":"identifier"}]},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]}}} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/uikit.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/sidemenu\/uikit"]}],"metadata":{"modules":[{"name":"SideMenu"}],"title":"UIKit","role":"collection","roleHeading":"Extended Module","symbolKind":"extension","externalID":"s:m:s:e:s:So16UIViewControllerC8SideMenuE04sidedB0AC0cdB0CSgvp"},"schemaVersion":{"minor":3,"patch":0,"major":0},"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit"},"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu"]]},"topicSections":[{"title":"Extended Classes","identifiers":["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit\/UIViewController"]}],"references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/UIKit":{"url":"\/documentation\/sidemenu\/uikit","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit","kind":"symbol","type":"topic","role":"collection","abstract":[],"title":"UIKit"},"doc://com.kukushi.SideMenu/documentation/SideMenu/UIKit/UIViewController":{"url":"\/documentation\/sidemenu\/uikit\/uiviewcontroller","navigatorTitle":[{"text":"UIViewController","kind":"identifier"}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit\/UIViewController","kind":"symbol","type":"topic","role":"symbol","abstract":[],"title":"UIViewController","fragments":[{"kind":"keyword","text":"extension"},{"kind":"text","text":" "},{"text":"UIViewController","kind":"identifier","preciseIdentifier":"c:objc(cs)UIViewController"}]},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]}}} -------------------------------------------------------------------------------- /docs/data/documentation/sidemenu/uikit/uiviewcontroller.json: -------------------------------------------------------------------------------- 1 | {"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit\/UIViewController"},"metadata":{"navigatorTitle":[{"text":"UIViewController","kind":"identifier"}],"title":"UIViewController","extendedModule":"UIKit","symbolKind":"extension","roleHeading":"Extended Class","role":"symbol","externalID":"s:e:s:So16UIViewControllerC8SideMenuE04sidedB0AC0cdB0CSgvp","fragments":[{"text":"extension","kind":"keyword"},{"text":" ","kind":"text"},{"text":"UIViewController","preciseIdentifier":"c:objc(cs)UIViewController","kind":"identifier"}],"modules":[{"name":"SideMenu","relatedModules":["UIKit"]}]},"hierarchy":{"paths":[["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit"]]},"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"topicSections":[{"title":"Instance Properties","identifiers":["doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit\/UIViewController\/sideMenuController"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["iOS"],"tokens":[{"text":"extension","kind":"keyword"},{"kind":"text","text":" "},{"text":"UIViewController","kind":"typeIdentifier","preciseIdentifier":"c:objc(cs)UIViewController"}],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/sidemenu\/uikit\/uiviewcontroller"]}],"references":{"doc://com.kukushi.SideMenu/documentation/SideMenu/UIKit":{"url":"\/documentation\/sidemenu\/uikit","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit","kind":"symbol","type":"topic","role":"collection","abstract":[],"title":"UIKit"},"doc://com.kukushi.SideMenu/documentation/SideMenu":{"url":"\/documentation\/sidemenu","kind":"symbol","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu","type":"topic","title":"SideMenu","role":"collection","abstract":[]},"doc://com.kukushi.SideMenu/documentation/SideMenu/UIKit/UIViewController":{"url":"\/documentation\/sidemenu\/uikit\/uiviewcontroller","navigatorTitle":[{"text":"UIViewController","kind":"identifier"}],"identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit\/UIViewController","kind":"symbol","type":"topic","role":"symbol","abstract":[],"title":"UIViewController","fragments":[{"kind":"keyword","text":"extension"},{"kind":"text","text":" "},{"text":"UIViewController","kind":"identifier","preciseIdentifier":"c:objc(cs)UIViewController"}]},"doc://com.kukushi.SideMenu/documentation/SideMenu/UIKit/UIViewController/sideMenuController":{"url":"\/documentation\/sidemenu\/uikit\/uiviewcontroller\/sidemenucontroller","identifier":"doc:\/\/com.kukushi.SideMenu\/documentation\/SideMenu\/UIKit\/UIViewController\/sideMenuController","kind":"symbol","type":"topic","role":"symbol","abstract":[{"text":"Access the nearest ancestor view controller hierarchy that is a side menu controller.","type":"text"}],"title":"sideMenuController","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"sideMenuController","kind":"identifier"},{"kind":"text","text":": "},{"text":"SideMenuController","preciseIdentifier":"c:@M@SideMenu@objc(cs)SideMenuController","kind":"typeIdentifier"},{"text":"?","kind":"text"}]}}} -------------------------------------------------------------------------------- /docs/developer-og-twitter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/docs/developer-og-twitter.jpg -------------------------------------------------------------------------------- /docs/developer-og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/docs/developer-og.jpg -------------------------------------------------------------------------------- /docs/documentation/sidemenu/basictransitionanimator/animatetransition(using:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/basictransitionanimator/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/basictransitionanimator/init(options:duration:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/basictransitionanimator/transitionduration(using:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/cache(viewcontroller:with:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/cache(viewcontrollergenerator:with:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/childforstatusbarhidden/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/childforstatusbarstyle/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/clearcache(with:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/contentsegueid/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/contentviewcontroller/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/currentcacheidentifier()/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/delegate/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/gesturerecognizer(_:shouldreceive:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/gesturerecognizershouldbegin(_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/hidemenu(animated:completion:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/init(contentviewcontroller:menuviewcontroller:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/initwithcoder:/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/initwithnibname:bundle:/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/ismenurevealed/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/menusegueid/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/menuviewcontroller/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.property/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/dampingratio/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/hideduration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/initialspringvelocity/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/options/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/revealduration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/shadowalpha/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/shadowcolor/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/shouldaddblurwhenrevealing/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/animation-swift.struct/shouldaddshadowwhenrevealing/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/basic/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/defaultcachekey/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/direction/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/enablepangesture/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/enablerubbereffectwhenpanning/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/forcerighttoleft/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/hidemenuwhenenteringbackground/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/keepsmenuopenafterrotation/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/menuwidth/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/pangesturesensitivity/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/position/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/shouldautorotate/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/shouldrespectlanguagedirection/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/shouldusecontentsupportedorientations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/statusbarbehavior/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/configuration/supportedorientations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menudirection/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menudirection/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menudirection/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menudirection/left/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menudirection/right/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menuposition/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menuposition/above/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menuposition/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menuposition/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menuposition/sidebyside/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/menuposition/under/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/statusbarbehavior/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/statusbarbehavior/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/statusbarbehavior/fade/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/statusbarbehavior/hideonmenu/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/statusbarbehavior/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/statusbarbehavior/none/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.struct/statusbarbehavior/slide/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/preferences-swift.type.property/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/prepare(for:sender:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/revealmenu(animated:completion:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/setcontentviewcontroller(to:animated:completion:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/setcontentviewcontroller(with:animated:completion:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/shouldautorotate/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/supportedinterfaceorientations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/uigesturerecognizerdelegate-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/viewdidload()/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontroller/viewwilltransition(to:with:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontroller(_:animationcontrollerfrom:to:)-4esbs/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontroller(_:animationcontrollerfrom:to:)-9p7d7/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontroller(_:didshow:animated:)-54dgd/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontroller(_:didshow:animated:)-67m06/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontroller(_:willshow:animated:)-1hl81/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontroller(_:willshow:animated:)-1juiy/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerdidhidemenu(_:)-2ufp3/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerdidhidemenu(_:)-5bj9p/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerdidrevealmenu(_:)-11kew/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerdidrevealmenu(_:)-6umvn/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollergetmenuwidth(_:for:)-6nrbw/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollergetmenuwidth(_:for:)-xmh9/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollershouldrevealmenu(_:)-703eu/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollershouldrevealmenu(_:)-9y55z/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerwillhidemenu(_:)-359mo/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerwillhidemenu(_:)-8i6tb/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerwillrevealmenu(_:)-4q697/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenucontrollerdelegate/sidemenucontrollerwillrevealmenu(_:)-79vnu/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/!=(_:_:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/content/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/equatable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/hash(into:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/hashvalue/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/init(rawvalue:)/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/menu/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.enum/rawrepresentable-implementations/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/contenttype-swift.property/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/initwithidentifier:source:destination:/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenusegue/perform()/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenuversionnumber/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/sidemenuversionstring/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/uikit/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/uikit/uiviewcontroller/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/documentation/sidemenu/uikit/uiviewcontroller/sidemenucontroller/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/docs/favicon.ico -------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/added-icon.832a5d2c.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/deprecated-icon.7bf1740a.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/modified-icon.efb2697d.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | Documentation
-------------------------------------------------------------------------------- /docs/index/availability.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/docs/index/availability.index -------------------------------------------------------------------------------- /docs/index/data.mdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/docs/index/data.mdb -------------------------------------------------------------------------------- /docs/index/navigator.index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/touchasky/SideMenu/75875c500eda4220bcef4c97805dec4d9be1dd41/docs/index/navigator.index -------------------------------------------------------------------------------- /docs/js/highlight-js-bash-js.702f0c5c.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[393],{8780:function(e){function s(e){const s=e.regex,t={},n={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{className:"variable",variants:[{begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={className:"",begin:/\\"/},r={className:"string",begin:/'/,end:/'/},l={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]},d=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=e.SHEBANG({binary:`(${d.join("|")})`,relevance:10}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},u=["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],h=["true","false"],b={match:/(\/[a-z._-]+)+/},f=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],g=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],w=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],k=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:u,literal:h,built_in:[...f,...g,"set","shopt",...w,...k]},contains:[p,e.SHEBANG(),m,l,e.HASH_COMMENT_MODE,i,b,c,o,r,t]}}e.exports=s}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-custom-markdown.78c9f6ed.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | "use strict";(self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[642],{2003:function(e,n,a){function i(e){const n=e.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},r={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(r),r.contains.push(g);let o=[a,l];g.contains=g.contains.concat(o),r.contains=r.contains.concat(o),o=o.concat(g,r);const b={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},u={className:"quote",begin:"^>\\s+",contains:o,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[b,a,c,g,r,u,s,i,l,t]}}a.r(n),a.d(n,{default:function(){return l}});const s={begin:"",returnBegin:!0,contains:[{className:"link",begin:"doc:",end:">",excludeEnd:!0}]},c={className:"link",begin:/`{2}(?!`)/,end:/`{2}(?!`)/,excludeBegin:!0,excludeEnd:!0},t={begin:"^>\\s+[Note:|Tip:|Important:|Experiment:|Warning:]",end:"$",returnBegin:!0,contains:[{className:"quote",begin:"^>",end:"\\s+"},{className:"type",begin:"Note|Tip|Important|Experiment|Warning",end:":"},{className:"quote",begin:".*",end:"$",endsParent:!0}]},d={begin:"@",end:"[{\\)\\s]",returnBegin:!0,contains:[{className:"title",begin:"@",end:"[\\s+(]",excludeEnd:!0},{begin:":",end:"[,\\)\n\t]",excludeBegin:!0,keywords:{literal:"true false null undefined"},contains:[{className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",endsWithParent:!0,excludeEnd:!0},{className:"string",variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}],endsParent:!0},{className:"link",begin:"http|https",endsWithParent:!0,excludeEnd:!0}]}]};function l(e){const n=i(e),a=n.contains.find((({className:e})=>"code"===e));a.variants=a.variants.filter((({begin:e})=>!e.includes("( {4}|\\t)")));const l=[...n.contains.filter((({className:e})=>"code"!==e)),a];return{...n,contains:[c,s,t,d,...l]}}}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-diff-js.4db9a783.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[213],{7731:function(e){function n(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-http-js.f78e83c2.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[878],{8937:function(e){function n(e){const n=e.regex,a="HTTP/(2|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})",end:/$/,contains:[{className:"meta",begin:a},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},e.inherit(t,{relevance:0})]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-java-js.4fe21e94.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[788],{8257:function(e){var n="[0-9](_*[0-9])*",a=`\\.(${n})`,s="[0-9a-fA-F](_*[0-9a-fA-F])*",t={className:"number",variants:[{begin:`(\\b(${n})((${a})|\\.)?|(${a}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${a})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${a})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${s})\\.?|(${s})?\\.(${s}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${s})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function i(e,n,a){return-1===a?"":e.replace(n,(s=>i(e,n,a-1)))}function r(e){e.regex;const n="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",a=n+i("(?:<"+n+"~~~(?:\\s*,\\s*"+n+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],r=["super","this"],c=["false","true","null"],l=["char","boolean","long","float","int","byte","short","double"],b={keyword:s,literal:c,type:l,built_in:r},o={className:"meta",begin:"@"+n,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:b,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{begin:[n,/\s+/,n,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,n],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:b,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:b,relevance:0,contains:[o,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},t,o]}}e.exports=r}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-json-js.2a1856ba.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[82],{14:function(e){function n(e){const n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},c={match:/[{}[\],:]/,className:"punctuation",relevance:0},a={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[n,c,e.QUOTE_STRING_MODE,a,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-llvm-js.26121771.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[133],{4972:function(e){function n(e){const n=e.regex,a=/([-a-zA-Z$._][\w$.-]*)/,t={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},c={className:"punctuation",relevance:0,begin:/,/},l={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:n.concat(/%/,a)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:n.concat(/@/,a)},{begin:/@\d+/},{begin:n.concat(/!/,a)},{begin:n.concat(/!\d+/,a)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[t,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,c,i,s,r,l]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-markdown-js.a2f456af.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[113],{1312:function(e){function n(e){const n=e.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},c={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},s={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},d=/[A-Za-z][A-Za-z0-9+.-]*/,l={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,d,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},g={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},b={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};g.contains.push(b),b.contains.push(g);let o=[a,l];g.contains=g.contains.concat(o),b.contains=b.contains.concat(o),o=o.concat(g,b);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:o}]}]},u={className:"quote",begin:"^>\\s+",contains:o,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,a,s,g,b,u,c,i,l,t]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-objectivec-js.74dea052.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[637],{2446:function(e){function n(e){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_=/[a-zA-Z@][a-zA-Z0-9_]*/,i=["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],t=["false","true","FALSE","TRUE","nil","YES","NO","NULL"],a=["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],r={$pattern:_,keyword:i,literal:t,built_in:a},s={$pattern:_,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:r,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+s.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:s,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-python-js.60354774.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[435],{8245:function(e){function n(e){const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s=["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],t=["__debug__","Ellipsis","False","None","NotImplemented","True"],r=["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"],l={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:s,literal:t,type:r},b={className:"meta",begin:/^(>>>|\.\.\.) /},o={className:"subst",begin:/\{/,end:/\}/,keywords:l,illegal:/#/},c={begin:/\{\{/,relevance:0},d={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,b],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,b],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,b,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,b,c,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,c,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,c,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},p="[0-9](_?[0-9])*",_=`(\\b(${p}))?\\.(${p})|\\b(${p})\\.`,g={className:"number",relevance:0,variants:[{begin:`(\\b(${p})|(${_}))[eE][+-]?(${p})[jJ]?\\b`},{begin:`(${_})[jJ]?`},{begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${p})[jJ]\\b`}]},m={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:l,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},f={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:["self",b,g,d,e.HASH_COMMENT_MODE]}]};return o.contains=[d,g,b],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:l,illegal:/(<\/|->|\?)|=>/,contains:[b,g,{begin:/\bself\b/},{beginKeywords:"if",relevance:0},d,m,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[f]},{variants:[{match:[/class/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/class/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,f,d]}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-shell-js.0ad5b20f.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[176],{7874:function(s){function e(s){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}s.exports=e}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-xml-js.0d78f903.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (self["webpackChunkswift_docc_render"]=self["webpackChunkswift_docc_render"]||[]).push([[490],{4610:function(e){function n(e){const n=e.regex,a=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,t={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},c={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=e.inherit(c,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),r=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),g={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[c,r,l,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[c,i,r,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},t,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[g],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[g],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:a,relevance:0,starts:g}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(a,/>/))),contains:[{className:"name",begin:a,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}e.exports=n}}]); -------------------------------------------------------------------------------- /docs/metadata.json: -------------------------------------------------------------------------------- 1 | {"bundleDisplayName":"SideMenu","schemaVersion":{"major":0,"minor":1,"patch":0},"bundleIdentifier":"com.kukushi.SideMenu"} -------------------------------------------------------------------------------- /fastlane/Appfile: -------------------------------------------------------------------------------- 1 | # app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app 2 | # apple_id("[[APPLE_ID]]") # Your Apple email address 3 | 4 | 5 | # For more information about the Appfile, see: 6 | # https://docs.fastlane.tools/advanced/#appfile 7 | -------------------------------------------------------------------------------- /fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | # This file contains the fastlane.tools configuration 2 | # You can find the documentation at https://docs.fastlane.tools 3 | # 4 | # For a list of all available actions, check out 5 | # 6 | # https://docs.fastlane.tools/actions 7 | # 8 | # For a list of all available plugins, check out 9 | # 10 | # https://docs.fastlane.tools/plugins/available-plugins 11 | # 12 | 13 | # Uncomment the line if you want fastlane to automatically update itself 14 | # update_fastlane 15 | 16 | default_platform(:ios) 17 | 18 | platform :ios do 19 | desc "Generates documentation for given version." 20 | lane :doc do |options| 21 | Actions.sh('cd .. && xcodebuild docbuild -scheme SideMenu -destination generic/platform=iOS OTHER_DOCC_FLAGS="--transform-for-static-hosting --hosting-base-path SideMenu --output-path docs"') 22 | end 23 | 24 | desc "Runs all the tests" 25 | lane :test do 26 | 27 | scan( 28 | scheme: "SideMenu", 29 | devices: ['iPhone Xʀ'] 30 | ) 31 | end 32 | end 33 | -------------------------------------------------------------------------------- /fastlane/README.md: -------------------------------------------------------------------------------- 1 | fastlane documentation 2 | ---- 3 | 4 | # Installation 5 | 6 | Make sure you have the latest version of the Xcode command line tools installed: 7 | 8 | ```sh 9 | xcode-select --install 10 | ``` 11 | 12 | For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) 13 | 14 | # Available Actions 15 | 16 | ## iOS 17 | 18 | ### ios doc 19 | 20 | ```sh 21 | [bundle exec] fastlane ios doc 22 | ``` 23 | 24 | Generates documentation for given version. 25 | 26 | ### ios test 27 | 28 | ```sh 29 | [bundle exec] fastlane ios test 30 | ``` 31 | 32 | Runs all the tests 33 | 34 | ---- 35 | 36 | This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. 37 | 38 | More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). 39 | 40 | The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). 41 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "release": "standard-version" 4 | }, 5 | "version": "2.1.1" 6 | } 7 | --------------------------------------------------------------------------------