Skip to content

Commit

Permalink
Update example and docs
Browse files Browse the repository at this point in the history
  • Loading branch information
JAForbes committed Feb 15, 2024
1 parent d8f77a9 commit 7f3ebfa
Showing 1 changed file with 42 additions and 11 deletions.
53 changes: 42 additions & 11 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ A tiny history API with nested contexts.

## Example

Check out this example on [flems](https://flems.io/#0=N4IgZglgNgpgziAXAbVAOwIYFsZJAOgAsAXLKEAGhAGMB7NYmBvEAXwvW10QICsEqdBk2J4IWAA60ATsQAEWCnOBzqcOErqT6IuRjiq5rOWGm0scgOQliEuIgD0D+FnxxCDgEYZqxDAAEABnwATnwARgAmSwAdNHEpWTkAKj0Db18MEzMLa2JbeycXNw8MvyDQiOi4hJl5AGUAVwkYaUIIOGIZAE9s8ysbO0dnOFd3Bzhm1vbOnv80GAAPYli0OKFOuU9aaFaJKAxGOQBeVXUAAzi5ORIyJW2AE26lQnCXyJeAZheAFheAVheADYlBJlFdrgoMNIAOYQNCIOSBGBYADcEOuEgwDwe8JhiORaIhrAhtyg91oTwpTzkAD4UuC0JC5Li4PsMN1ETDpBAHuimZCsPCALSEGAQGEkRHhQKBABuhH51xJaEuazQG3kAHV4Q9aAB3E6qAAUxrlAEoTvTgBDNXIzI1GNIjXL8IdiNI4PgHU78NR2lAHsaVBJpDBIItEa73Z78KHwxBFkZzRCIWHiI1pEyzZbjvSMQpjZZ8PrdQbVszrkosEXMHKK5Wq2c4GrG8yAGSMtuV1nszlybm8pXdyHbaQPVrC7b5cyIuC0KC8uThCRJgDEAFEt8OR3pFzC0MKhIwGIjqCJWjuRxh94eIIwsPZVBfpFfu1icXjpSi323Bw9hQwR1aGFMAoANM8F0aLA0F-RteEaToIDAboj3oE9iDnLFzynGBiH1GAmDgyEVW7Vs22rIs2QwNB8EzKBLAoH1WnwGE8ONc040OQgUwFRtKMsajaNoCRiAgeg4EY5tyO7TsbT4kcwHQ4U4AgAAvGACXwIEfwLbsMgAa25WhGjQAC6HA6RETXSJbOI5kP1xNB8SRfB-l0hT9JkCdpGFaRsQgRCtMidyiU8ytSLbc4lAAKXqAB5AA5NwPTxZDumDe0YHZc9ETAG84BgZNeMbS05D0uQlGjfJY39aAHjDNAAH58Ey5jnVYErITK4k4l49YJPkABBCQwVOahTVza1UwFO1JhaNoOi6aRelOJoFpmZaMvk5l6AAYUIGi2MRY1aCm5RXDDBqMH1DjIs6uIIXm6Ylp6VjaCLBxIEwDUIAK5xcWIBxwksLq0zwzNs3Ogsa2LDBRobZkKV2aR2UYCrNAuCrrjk7HRx8IyHTMtDLMRTwDmoAz7NUBcZERfV2kYamlIYUDsGgfshp5G9qdgfJJ2o6gv2XVdmeUgiJSlZdZWIyLG1x8LmV7A5+3-an-2FB80ZgPyDSfT4UWXUxZbxzt6VSHbFOU1SNMRSIPO7OXIRkyFKJ1MyDTxpsVHaucpkW2YVvKxXK1BMMI0RSxEZHTQAwapgTp9kynWTK1g93Rsa3dvV9SUFQvZHdqC+7MOE0jKwvvhGihYKyx04z-jVDjxrE-tZPWlTvNi4zrOy1z+uG93JPHVabuG9LiOK5gQG67HjOncHysusXh6Q+ZBe5GXze4lXuJXCwEyGGNPVqGgkR8EeZ45BGiRzUoEBCtgXxxLQBAeH+H5EEiNgOBATAcDwH6dQ99jwiBYKwAAuqwIAA)
Check out this example on [flems](https://flems.io/#0=N4IgZglgNgpgziAXAbVAOwIYFsZJAOgAsAXLKEAGhAGMB7NYmBvEAXwvW10QICsEqdBk2J4IWAA60ATsQAEWCnOBzqcOErqT6IuRjiq5rOWGm0scgOQliEuIgD0D+FnxxCDgEYZqxDAAEABnwATnwARgAmSwAdNHEpWTkAKj0Db18MEzMLa2JbeycXNw8MvyDQiOi4hJl5AGUAVwkYaUIIOGIZAE9s8ysbO0dnOFd3Bzhm1vbOnorgwIBaNBgAD2IIgFZYtDihTrlPWmhWiSgMRjkAXlV1AAM4uTkSMiUjgBNupUJw78jvgDM3wALN9Nt8AGxKCTKR5PBQYaQAcwgaEQckCMCwAG44U8JBh3u9UUj0ZicXDWHCXlA3rRPnTPnIAHwpWFoeFyYlwM4YbropHSCDvXEc+FYVGLQgwCBIkjo8KBQIAN0IoqeVLFcIwiGVHQgjHe7M5dCgMnRjTQcBgxHVRjiD12aH28gA6qj3rQAO7XVQACj9yoAlNdWcA4S65GZGoxpL7lfgLsRpHB8NHY-hqO0oO8-SoJNIYJBVuiE0mU-gC0WIKsjEG4XDC8RGtIOYGQ1dWXiFH7LPgvR7vTtOU8lFhe5hlcOR6PbnBHTPOQAyY2Lznc3n8uSC4V2tdPI7Sd6tRZHfLmdFwWhQYVycISWsAYgAoq+9-uMDekWhFkJGAx0WoERWnfNdP1lH8DSxexVGA6RQMXAkiRJBUsQQmcd3eRYMBjWhFjAM0vUA69GiwNB0JHXhGk6CAwG6X96H-YhLwJIDTxtL0YCYCiNW7TkF0XMdex5DA0HwFsoEsCh01afAkRtP0g0rC5CHrMUZyEywRLE2gJGICB6DgKS5wEtcV3DdT9zARjFjgCAAC8YDJfAITQvjFwyABrQVaEtLDTXNORH0iEKePhJDiTQUkMXwTY3MstdD2PaRFmkQkIGo5zIjiikEpHTU1zuJQACl6gAeQAOTcZMSVo7o8yjGBeSA9EwE-a06zUmcQzkdylDLfIKyzaB3kLNAAH58AamS41YLr4R6yk4jUvZDPkABBCQYRuagAw7MMGzFSNJhaNoOi6aRehuJpTpmC76oszl6AAYUIUT5PRP1aH25RXELUaMC9RSCrrOI4RO6Zzp6OTaF7BxIEwZ0IHa5xiWIBxwksebGxtFs2x+7txz7DAtunTk6ROaReUYPqTPcp5zPp+EvJ8vyGLNaR0U8c5qE8sKAs5uQvXaRgwushh8OwaAt3WoVPzC2B8hPETqBQu8HzFmzONleU7yVCiQZnRm8vXDpNwFIURSZw2RxXVlUkeqybLsxz0UieK1xtp5TPhIT3TQT0vSZ8nlCjXzY0vKYztmS7epNwS5CrYt0UsMn91nYaczGz6VBmutQzj9O13Hf3A6UFRg6LmbK-T6FC2Tqx4dRUTVfayxC6LtdNGzUamBzsOY1afPOxrzue1L70lFHsfQ+r+OZ5DpOaxT1GDXb6ex+7kbs43mfpvDoe5oLomsAwVFM0YkQ04X-dNMaSTd5vuQKGQR+n6sTGlEsaIv4Ba-3-3AAXTfgvfAp8JB+hATfWsnY5DIFWJpG8xlLAAElGC5DkAAajkKsIMwD54AM5PNQh6cwEk0gQQkh8I-TIGFJoS+DBAH7SgU-ImGB-5UPTtgv0HdOELxmpWQseoYBA2FB2K4NwBHyWIIpfAYB75QAAAoqV4Xwhe40rCJl8BAZUMB16ULUTOFO+jDGd2IaYrudMDEWKXFo-SujVwWM7gLdEEgWxnBgGFJx9prFqJ9t4kOjsAmLkIPXdEAiqzCNEe8cxwTyb0GoDeXmfoYBBiCXEmcMBBEwF0QwAAIkWHCUAZGxIyfCKRsMxEsMIV7OJ7BVAMOIKUwxzTOGtMIe0p+tT36dM9r0+E3S5DmLUnNMGaBXBYF8gwP0npqCkREPgD4Xw5CbQkEGSgIBrSwG0YZPA4RwjAkQJsYEbAOAgEwDgPAmZ1AbL-CIFgrBAGsCAA)

## Quick Start

Expand All @@ -28,28 +28,33 @@ A.get()
A.go('/a/b/c/d/e')
A.go('/a/b/c/d/e/f', { replace: true })
A.get()
// { path: 'a/b/c/d/e/f' }
// { path: 'a/b/c/d/e/f', fullPath: '/a/b/c/d/e/f' }
A.back()
A.get()
// { path: 'a/b/c/d' }
// { path: 'a/b/c/d', fullPath: '/a/b/c/d' }


const B = A.get('/a/b')
const C = B.get('/c')

B.get()
// { path: '/c/d' }
// { path: '/c/d', fullPath: '/a/b/c/d' }

C.get()
// { path: '/d' }
// { path: '/d', fullPath: '/a/b/c/d' }

C.go('/g')
;[C.get(), B.get(), A.get()]
// [
// { path: '/g' },
// { path: '/c/g' } ,
// { path: '/a/b/c/g' }
// { path: '/g', fullPath: '/a/b/c/g' },
// { path: '/c/g', fullPath: '/a/b/c/g' } ,
// { path: '/a/b/c/g', fullPath: '/a/b/c/g' }
// ]

C.preview('/h')
// 'a/b/c/h'
C.get()
// { path: '/a/b/c/g', fullPath: '/a/b/c/g' }
```

## API
Expand All @@ -69,13 +74,20 @@ superhistory(

```typescript
type State = {
path: string | undefined
path: string | undefined,
fullPath: string | undefined
}

instance.get(): State
```

Returns the instance's path in its local context. Returns `undefined` if a nested history is not compatible with the current browser location pathname.
Returns the instance's `path` in its local context and the `fullPath`. Returns `undefined` for both properties if a nested history is not compatible with the current browser location pathname.

### `instance.preview(path: string): string`

Shows what the browser location path will be were you call `instance.go(path)`.

> Useful for generating `href`'s for anchor tags.
### `instance.go(...)`

Expand All @@ -85,7 +97,7 @@ instance.go(path: string, options?: { replace: boolean })

A simple wrapper around `history.pushState` / `history.replaceState` that works with nested contexts.

### `instance.back`
### `instance.back()`

```typescript
instance.back(): void
Expand Down Expand Up @@ -122,8 +134,27 @@ Create a nested istory context. All history operations will receive/return a lo

These operations are applied directly to the history API by the child instance using the concatenated prefixes of all of its parents.

## Utilities

### `superhistory.joinPath`

```typescript
superhistory.joinPath(a: string, b: string): string
```

The function used internally to combine any two paths.

### `superhistory.normalizePath`


## Advanced

```typescript
superhistory.normalizePath(path:string): string
```

The function used internally to normalize the formatting of paths.

### Extracting variables out of paths

This library isn't a router, its just a small wrapper around the browser history API that you could build a pattern matching router on top of.
Expand Down

0 comments on commit 7f3ebfa

Please sign in to comment.