📄 useBrowserLocation¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 2 |
| 📦 Imports | 8 |
| 📊 Variables & Constants | 1 |
| 🟢 Vue Composition API | 2 |
| 📐 Interfaces | 2 |
| 📑 Type Aliases | 1 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/core/useBrowserLocation/index.ts
📦 Imports¶
| Name | Source |
|---|---|
Ref |
vue |
ConfigurableWindow |
../_configurable |
objectEntries |
@vueuse/shared |
deepRef |
vue |
reactive |
vue |
watch |
vue |
defaultWindow |
../_configurable |
useEventListener |
../useEventListener |
Variables & Constants¶
| Name | Type | Kind | Value | Exported |
|---|---|---|---|---|
WRITABLE_PROPERTIES |
readonly ["hash", "host", "hostname",... |
const | [ 'hash', 'host', 'hostname', 'href', 'pathname', 'port', 'protocol', 'search... |
✗ |
Vue Composition API¶
| Name | Type | Reactive Variables | Composables |
|---|---|---|---|
reactive |
reactive | none | none |
watch |
watch | none | none |
Functions¶
useBrowserLocation(options: UseBrowserLocationOptions): UseBrowserLocationReturn¶
Reactive browser location.
See: https://vueuse.org/useBrowserLocation
Tags: @__NO_SIDE_EFFECTS__
Raw JSDoc
Calls:
Object.fromEntriesWRITABLE_PROPERTIES.mapdeepRef (from vue)reactive (from vue)buildStateobjectEntries (from @vueuse/shared)watch (from vue)useEventListener (from ../useEventListener)
Code
export function useBrowserLocation(options: UseBrowserLocationOptions = {}): UseBrowserLocationReturn {
const { window = defaultWindow } = options
const refs = Object.fromEntries(
WRITABLE_PROPERTIES.map(key => [key, deepRef()]),
) as Record<typeof WRITABLE_PROPERTIES[number], Ref<string | undefined>>
const buildState = (trigger: string): BrowserLocationState => {
const { state, length } = window?.history || {}
const { origin } = window?.location || {}
for (const key of WRITABLE_PROPERTIES)
refs[key].value = window?.location?.[key]
return reactive({
trigger,
state,
length,
origin,
...refs,
})
}
const state = deepRef<BrowserLocationState>(buildState('load'))
for (const [key, ref] of objectEntries(refs)) {
watch(ref, (value) => {
if (!window?.location || window.location[key] === value)
return
window.location[key] = value!
})
}
if (window) {
const listenerOptions = { passive: true }
useEventListener(window, 'popstate', () => state.value = buildState('popstate'), listenerOptions)
useEventListener(window, 'hashchange', () => state.value = buildState('hashchange'), listenerOptions)
}
return state
}
Internal helpers¶
Declared inside another function in this file.
buildState(trigger: string): BrowserLocationState¶
Parameters:
triggerstring
Returns: BrowserLocationState
Calls:
reactive (from vue)
Code
Interfaces¶
UseBrowserLocationOptions¶
BrowserLocationState¶
Interface Code
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
trigger |
string |
✗ | not shown |
state |
any |
✓ | not shown |
length |
number |
✓ | not shown |
origin |
string |
✓ | not shown |
hash |
string |
✓ | not shown |
host |
string |
✓ | not shown |
hostname |
string |
✓ | not shown |
href |
string |
✓ | not shown |
pathname |
string |
✓ | not shown |
port |
string |
✓ | not shown |
protocol |
string |
✓ | not shown |
search |
string |
✓ | not shown |
Type Aliases¶
UseBrowserLocationReturn¶
Generated by Syntax Scribe