             button.bindFrameToSuperviewBounds()
         }
     }
+    
+    private var canShowPlayIcon: Bool {
+        activePlayback?.state == .paused || activePlayback?.state == .idle
+    }
+    
+    private var canShowPauseIcon: Bool {
+        activePlayback?.state == .playing
+    }
 
     override open func bindEvents() {
         bindPlaybackEvents()

        activePlayback?.play()
    }
    
    public func changeIcon() {
        guard let playback = activePlayback else { return }

        if playback.state == .paused {
            button.setImage(playIcon, for: .normal)
        } else if playback.state == .playing {
            button.setImage(pauseIcon, for: .normal)
        }
    }
}


    open func onPlay() {
        show()
        changeToPauseIcon()
    }

    private func onPause() {
        show()
        changeToPlayIcon()
    }

    public func hide() {
