1
0
mirror of https://github.com/squidfunk/mkdocs-material.git synced 2024-11-30 18:24:35 +01:00

Refactored to use URLs at all times

This commit is contained in:
squidfunk 2020-02-22 15:56:08 +01:00
parent eb82c8d586
commit c79b786ea6
9 changed files with 25 additions and 29 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"assets/javascripts/bundle.js": "assets/javascripts/bundle.14f179c1.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.14f179c1.min.js.map",
"assets/javascripts/bundle.js": "assets/javascripts/bundle.16398d48.min.js",
"assets/javascripts/bundle.js.map": "assets/javascripts/bundle.16398d48.min.js.map",
"assets/javascripts/worker/search.js": "assets/javascripts/worker/search.926ffd9e.min.js",
"assets/javascripts/worker/search.js.map": "assets/javascripts/worker/search.926ffd9e.min.js.map",
"assets/stylesheets/app-palette.scss": "assets/stylesheets/app-palette.3f90c815.min.css",

View File

@ -190,7 +190,7 @@
{% endblock %}
</div>
{% block scripts %}
<script src="{{ 'assets/javascripts/bundle.14f179c1.min.js' | url }}"></script>
<script src="{{ 'assets/javascripts/bundle.16398d48.min.js' | url }}"></script>
{%- set translations = {} -%}
{%- for key in [
"clipboard.copy",

View File

@ -58,7 +58,7 @@ interface MountOptions {
*/
export function mountHeaderTitle(
{ header$, viewport$ }: MountOptions
): OperatorFunction<HTMLElement, any> {
): OperatorFunction<HTMLElement, boolean> {
return pipe(
switchMap(el => useComponent("main")
.pipe(

View File

@ -59,7 +59,6 @@ import {
watchToggle,
setToggle,
getElements,
getLocation,
watchMedia,
watchDocument,
watchLocation,
@ -213,7 +212,7 @@ export function initialize(config: unknown) {
const navigation$ = useComponent("navigation")
.pipe(
mountNavigation({ header$, main$, viewport$, screen$ }),
shareReplay(1)
shareReplay(1) // shareReplay because there might be late subscribers
)
const toc$ = useComponent("toc")
@ -260,7 +259,8 @@ export function initialize(config: unknown) {
// Close drawer and search on hash change
// put into navigation...
hash$.subscribe(x => {
// TODO: replace with popstate?
hash$.subscribe(() => {
useToggle("drawer").subscribe(el => {
setToggle(el, false)
})

View File

@ -68,7 +68,7 @@ export function watchDocumentSwitch(
): Observable<Document> {
return location$
.pipe(
startWith(location), // TODO: getLocation should return URL or Location
startWith(getLocation()),
distinctUntilKeyChanged("pathname"),
skip(1),
@ -81,7 +81,7 @@ export function watchDocumentSwitch(
.pipe<Document, Document>(
pluck("response"),
catchError(() => {
setLocation(url.href) // TODO: setLocation should accept URL or location
setLocation(url)
return NEVER
})
)

View File

@ -20,8 +20,7 @@
* IN THE SOFTWARE.
*/
import { Subject, fromEvent } from "rxjs"
import { map } from "rxjs/operators"
import { Subject } from "rxjs"
/* ----------------------------------------------------------------------------
* Functions
@ -30,19 +29,24 @@ import { map } from "rxjs/operators"
/**
* Retrieve location
*
* @return Location
* This function will return a `URL` object (and not `Location`) in order to
* normalize typings across the application. Furthermore, locations need to be
* tracked without setting them and `Location` is a singleton which represents
* the current location.
*
* @return URL
*/
export function getLocation(): string {
return location.href
export function getLocation(): URL {
return new URL(location.href)
}
/**
* Set location
*
* @param value - New location
* @param url - URL to change to
*/
export function setLocation(value: string): void {
location.href = value
export function setLocation(url: URL): void {
location.href = url.href
}
/* ------------------------------------------------------------------------- */
@ -53,13 +57,5 @@ export function setLocation(value: string): void {
* @return Location subject
*/
export function watchLocation(): Subject<URL> {
const location$ = new Subject<URL>()
// fromEvent<PopStateEvent>(window, "popstate")
// .pipe(
// map(getLocation)
// )
// .subscribe(location$)
/* Return location subject */
return location$
return new Subject<URL>()
}