code: public static function urlDecode(string $data): self
      {
          $decoded = base64_decode(strtr($data, '-_,', '+/='), true);
  
          if (\function_exists('gzdecode') && false !== ($uncompressed = @gzdecode($decoded))) {
              $decoded = $uncompressed;
          }
  
          $json = @json_decode($decoded, true);
  
          if (null === $json) {
              throw new \InvalidArgumentException('Invalid JSON data');
          }
  
          return new self($json['context'], $json['extras'], $json['value'], $json['current']);
      }
docs: Initializes the object from the URL data.
  
  @throws \InvalidArgumentException