@furystack/shades 7.2.6 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +25 -8
- package/src/component-factory.spec.tsx +2 -1
- package/src/components/lazy-load.spec.tsx +9 -4
- package/src/components/route-link.spec.tsx +8 -3
- package/src/components/router.spec.tsx +11 -6
- package/src/components/router.tsx +2 -2
- package/src/models/render-options.ts +0 -4
- package/src/models/shade-component.ts +0 -1
- package/src/services/location-service.spec.ts +8 -3
- package/src/services/resource-manager.spec.ts +1 -0
- package/src/services/screen-service.spec.ts +7 -2
- package/src/shade-component.ts +0 -2
- package/src/shade-resources.integration.spec.tsx +8 -3
- package/src/shade.ts +0 -1
- package/src/shades.integration.spec.tsx +11 -6
- package/types/models/render-options.d.ts +0 -4
- package/types/models/render-options.d.ts.map +1 -1
- package/types/models/shade-component.d.ts +0 -1
- package/types/models/shade-component.d.ts.map +1 -1
- package/types/shade-component.d.ts +0 -2
- package/types/shade-component.d.ts.map +1 -1
- package/types/shade.d.ts +0 -1
- package/types/shade.d.ts.map +1 -1
- package/dist/component-factory.spec.js +0 -81
- package/dist/component-factory.spec.js.map +0 -1
- package/dist/components/index.js +0 -20
- package/dist/components/index.js.map +0 -1
- package/dist/components/lazy-load.js +0 -45
- package/dist/components/lazy-load.js.map +0 -1
- package/dist/components/lazy-load.spec.js +0 -72
- package/dist/components/lazy-load.spec.js.map +0 -1
- package/dist/components/route-link.js +0 -28
- package/dist/components/route-link.js.map +0 -1
- package/dist/components/route-link.spec.js +0 -28
- package/dist/components/route-link.spec.js.map +0 -1
- package/dist/components/router.js +0 -62
- package/dist/components/router.js.map +0 -1
- package/dist/components/router.spec.js +0 -84
- package/dist/components/router.spec.js.map +0 -1
- package/dist/index.js +0 -24
- package/dist/index.js.map +0 -1
- package/dist/initialize.js +0 -9
- package/dist/initialize.js.map +0 -1
- package/dist/jsx.js +0 -3
- package/dist/jsx.js.map +0 -1
- package/dist/models/children-list.js +0 -3
- package/dist/models/children-list.js.map +0 -1
- package/dist/models/index.js +0 -22
- package/dist/models/index.js.map +0 -1
- package/dist/models/partial-element.js +0 -3
- package/dist/models/partial-element.js.map +0 -1
- package/dist/models/render-options.js +0 -3
- package/dist/models/render-options.js.map +0 -1
- package/dist/models/selection-state.js +0 -3
- package/dist/models/selection-state.js.map +0 -1
- package/dist/models/shade-component.js +0 -14
- package/dist/models/shade-component.js.map +0 -1
- package/dist/services/index.js +0 -19
- package/dist/services/index.js.map +0 -1
- package/dist/services/location-service.js +0 -93
- package/dist/services/location-service.js.map +0 -1
- package/dist/services/location-service.spec.js +0 -86
- package/dist/services/location-service.spec.js.map +0 -1
- package/dist/services/resource-manager.js +0 -48
- package/dist/services/resource-manager.js.map +0 -1
- package/dist/services/resource-manager.spec.js +0 -32
- package/dist/services/resource-manager.spec.js.map +0 -1
- package/dist/services/screen-service.js +0 -72
- package/dist/services/screen-service.js.map +0 -1
- package/dist/services/screen-service.spec.js +0 -25
- package/dist/services/screen-service.spec.js.map +0 -1
- package/dist/shade-component.js +0 -101
- package/dist/shade-component.js.map +0 -1
- package/dist/shade-resources.integration.spec.js +0 -55
- package/dist/shade-resources.integration.spec.js.map +0 -1
- package/dist/shade.js +0 -185
- package/dist/shade.js.map +0 -1
- package/dist/shades.integration.spec.js +0 -251
- package/dist/shades.integration.spec.js.map +0 -1
- package/types/component-factory.spec.d.ts +0 -2
- package/types/component-factory.spec.d.ts.map +0 -1
- package/types/components/lazy-load.spec.d.ts +0 -2
- package/types/components/lazy-load.spec.d.ts.map +0 -1
- package/types/components/route-link.spec.d.ts +0 -2
- package/types/components/route-link.spec.d.ts.map +0 -1
- package/types/components/router.spec.d.ts +0 -2
- package/types/components/router.spec.d.ts.map +0 -1
- package/types/services/location-service.spec.d.ts +0 -2
- package/types/services/location-service.spec.d.ts.map +0 -1
- package/types/services/resource-manager.spec.d.ts +0 -2
- package/types/services/resource-manager.spec.d.ts.map +0 -1
- package/types/services/screen-service.spec.d.ts +0 -2
- package/types/services/screen-service.spec.d.ts.map +0 -1
- package/types/shade-resources.integration.spec.d.ts +0 -2
- package/types/shade-resources.integration.spec.d.ts.map +0 -1
- package/types/shades.integration.spec.d.ts +0 -2
- package/types/shades.integration.spec.d.ts.map +0 -1
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const util_1 = require("util");
|
|
4
|
-
global.TextEncoder = util_1.TextEncoder;
|
|
5
|
-
global.TextDecoder = util_1.TextDecoder;
|
|
6
|
-
const inject_1 = require("@furystack/inject");
|
|
7
|
-
const utils_1 = require("@furystack/utils");
|
|
8
|
-
const lazy_load_1 = require("./lazy-load");
|
|
9
|
-
const __1 = require("..");
|
|
10
|
-
describe('Lazy Load', () => {
|
|
11
|
-
beforeEach(() => (document.body.innerHTML = '<div id="root"></div>'));
|
|
12
|
-
afterEach(() => (document.body.innerHTML = ''));
|
|
13
|
-
it('Shuld display the loader and completed state', async () => {
|
|
14
|
-
const injector = new inject_1.Injector();
|
|
15
|
-
const rootElement = document.getElementById('root');
|
|
16
|
-
(0, __1.initializeShadeRoot)({
|
|
17
|
-
injector,
|
|
18
|
-
rootElement,
|
|
19
|
-
jsxElement: ((0, __1.createComponent)(lazy_load_1.LazyLoad, { loader: (0, __1.createComponent)("div", null, "Loading..."), component: async () => {
|
|
20
|
-
await (0, utils_1.sleepAsync)(100);
|
|
21
|
-
return (0, __1.createComponent)("div", null, "Loaded");
|
|
22
|
-
} })),
|
|
23
|
-
});
|
|
24
|
-
expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loading...</div></lazy-load></div>');
|
|
25
|
-
await (0, utils_1.sleepAsync)(150);
|
|
26
|
-
expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loaded</div></lazy-load></div>');
|
|
27
|
-
});
|
|
28
|
-
it('Shuld display the failed state with a retryer', async () => {
|
|
29
|
-
const injector = new inject_1.Injector();
|
|
30
|
-
const rootElement = document.getElementById('root');
|
|
31
|
-
const load = jest.fn(async () => {
|
|
32
|
-
throw Error(':(');
|
|
33
|
-
});
|
|
34
|
-
(0, __1.initializeShadeRoot)({
|
|
35
|
-
injector,
|
|
36
|
-
rootElement,
|
|
37
|
-
jsxElement: ((0, __1.createComponent)(lazy_load_1.LazyLoad, { loader: (0, __1.createComponent)("div", null, "Loading..."), component: load, error: (e, retry) => ((0, __1.createComponent)("button", { id: "retry", onclick: retry }, e.message)) })),
|
|
38
|
-
});
|
|
39
|
-
expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loading...</div></lazy-load></div>');
|
|
40
|
-
await (0, utils_1.sleepAsync)(1);
|
|
41
|
-
expect(load).toBeCalledTimes(1);
|
|
42
|
-
expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><button id="retry">:(</button></lazy-load></div>');
|
|
43
|
-
document.getElementById('retry')?.click();
|
|
44
|
-
expect(load).toBeCalledTimes(2);
|
|
45
|
-
});
|
|
46
|
-
it('Shuld display the failed state with a retryer', async () => {
|
|
47
|
-
const injector = new inject_1.Injector();
|
|
48
|
-
const rootElement = document.getElementById('root');
|
|
49
|
-
let counter = 0;
|
|
50
|
-
const load = jest.fn(async () => {
|
|
51
|
-
if (!counter) {
|
|
52
|
-
counter += 1;
|
|
53
|
-
throw Error(':(');
|
|
54
|
-
}
|
|
55
|
-
return (0, __1.createComponent)("div", null, "success");
|
|
56
|
-
});
|
|
57
|
-
(0, __1.initializeShadeRoot)({
|
|
58
|
-
injector,
|
|
59
|
-
rootElement,
|
|
60
|
-
jsxElement: ((0, __1.createComponent)(lazy_load_1.LazyLoad, { loader: (0, __1.createComponent)("div", null, "Loading..."), component: load, error: (e, retry) => ((0, __1.createComponent)("button", { id: "retry", onclick: retry }, e.message)) })),
|
|
61
|
-
});
|
|
62
|
-
expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>Loading...</div></lazy-load></div>');
|
|
63
|
-
await (0, utils_1.sleepAsync)(1);
|
|
64
|
-
expect(load).toBeCalledTimes(1);
|
|
65
|
-
expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><button id="retry">:(</button></lazy-load></div>');
|
|
66
|
-
document.getElementById('retry')?.click();
|
|
67
|
-
expect(load).toBeCalledTimes(2);
|
|
68
|
-
await (0, utils_1.sleepAsync)(1);
|
|
69
|
-
expect(document.body.innerHTML).toBe('<div id="root"><lazy-load><div>success</div></lazy-load></div>');
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
//# sourceMappingURL=lazy-load.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-load.spec.js","sourceRoot":"","sources":["../../src/components/lazy-load.spec.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RouteLink = void 0;
|
|
4
|
-
const shade_1 = require("../shade");
|
|
5
|
-
const services_1 = require("../services");
|
|
6
|
-
const __1 = require("..");
|
|
7
|
-
exports.RouteLink = (0, shade_1.Shade)({
|
|
8
|
-
shadowDomName: 'route-link',
|
|
9
|
-
elementBase: HTMLAnchorElement,
|
|
10
|
-
elementBaseName: 'a',
|
|
11
|
-
render: ({ children, props, injector, element }) => {
|
|
12
|
-
(0, __1.attachProps)(element, {
|
|
13
|
-
...props,
|
|
14
|
-
style: {
|
|
15
|
-
color: 'inherit',
|
|
16
|
-
textDecoration: 'inherit',
|
|
17
|
-
...props.style,
|
|
18
|
-
},
|
|
19
|
-
onclick: (ev) => {
|
|
20
|
-
ev.preventDefault();
|
|
21
|
-
history.pushState('', props.title || '', props.href);
|
|
22
|
-
injector.getInstance(services_1.LocationService).updateState();
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
return (0, __1.createComponent)(__1.createComponent, null, children);
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=route-link.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route-link.js","sourceRoot":"","sources":["../../src/components/route-link.tsx"],"names":[],"mappings":";;;AAAA,oCAAgC;AAEhC,0CAA6C;AAC7C,0BAAiD;AAIpC,QAAA,SAAS,GAAG,IAAA,aAAK,EAAiB;IAC7C,aAAa,EAAE,YAAY;IAC3B,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,GAAG;IACpB,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,IAAA,eAAW,EAAC,OAAO,EAAE;YACnB,GAAG,KAAK;YACR,KAAK,EAAE;gBACL,KAAK,EAAE,SAAS;gBAChB,cAAc,EAAE,SAAS;gBACzB,GAAG,KAAK,CAAC,KAAK;aACf;YACD,OAAO,EAAE,CAAC,EAAc,EAAE,EAAE;gBAC1B,EAAE,CAAC,cAAc,EAAE,CAAA;gBACnB,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpD,QAAQ,CAAC,WAAW,CAAC,0BAAe,CAAC,CAAC,WAAW,EAAE,CAAA;YACrD,CAAC;SACF,CAAC,CAAA;QACF,OAAO,oDAAG,QAAQ,CAAI,CAAA;IACxB,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const util_1 = require("util");
|
|
4
|
-
global.TextEncoder = util_1.TextEncoder;
|
|
5
|
-
global.TextDecoder = util_1.TextDecoder;
|
|
6
|
-
const inject_1 = require("@furystack/inject");
|
|
7
|
-
const route_link_1 = require("./route-link");
|
|
8
|
-
const __1 = require("..");
|
|
9
|
-
describe('RouteLink', () => {
|
|
10
|
-
beforeEach(() => (document.body.innerHTML = '<div id="root"></div>'));
|
|
11
|
-
afterEach(() => (document.body.innerHTML = ''));
|
|
12
|
-
it('Shuld display the loader and completed state', async () => {
|
|
13
|
-
const injector = new inject_1.Injector();
|
|
14
|
-
const rootElement = document.getElementById('root');
|
|
15
|
-
const onRouteChange = jest.fn();
|
|
16
|
-
injector.getInstance(__1.LocationService).onLocationPathChanged.subscribe(onRouteChange);
|
|
17
|
-
(0, __1.initializeShadeRoot)({
|
|
18
|
-
injector,
|
|
19
|
-
rootElement,
|
|
20
|
-
jsxElement: ((0, __1.createComponent)(route_link_1.RouteLink, { id: "route", href: "/subroute" }, "Link")),
|
|
21
|
-
});
|
|
22
|
-
expect(document.body.innerHTML).toBe('<div id="root"><a is="route-link" id="route" href="/subroute" style="text-decoration: inherit;">Link</a></div>');
|
|
23
|
-
expect(onRouteChange).not.toBeCalled();
|
|
24
|
-
document.getElementById('route')?.click();
|
|
25
|
-
expect(onRouteChange).toBeCalledTimes(1);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=route-link.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route-link.spec.js","sourceRoot":"","sources":["../../src/components/route-link.spec.tsx"],"names":[],"mappings":";;AAAA,+BAA+C;AAE/C,MAAM,CAAC,WAAW,GAAG,kBAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,kBAAkB,CAAA;AAEvC,8CAA4C;AAC5C,6CAAwC;AACxC,0BAA0E;AAE1E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC,CAAC,CAAA;IACrE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAA;IAE/C,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAA;QAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAA;QAErE,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QAE/B,QAAQ,CAAC,WAAW,CAAC,mBAAe,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QAEpF,IAAA,uBAAmB,EAAC;YAClB,QAAQ;YACR,WAAW;YACX,UAAU,EAAE,CACV,yBAAC,sBAAS,IAAC,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,WAAW,WAE1B,CACb;SACF,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAClC,gHAAgH,CACjH,CAAA;QACD,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;QACtC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;QACzC,MAAM,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Router = void 0;
|
|
7
|
-
const shade_1 = require("../shade");
|
|
8
|
-
const shade_component_1 = require("../shade-component");
|
|
9
|
-
const services_1 = require("../services");
|
|
10
|
-
const path_to_regexp_1 = require("path-to-regexp");
|
|
11
|
-
const semaphore_async_await_1 = __importDefault(require("semaphore-async-await"));
|
|
12
|
-
const utils_1 = require("@furystack/utils");
|
|
13
|
-
exports.Router = (0, shade_1.Shade)({
|
|
14
|
-
shadowDomName: 'shade-router',
|
|
15
|
-
render: (options) => {
|
|
16
|
-
const { useState, useObservable, injector } = options;
|
|
17
|
-
const [lock] = useState('lock', new semaphore_async_await_1.default(1));
|
|
18
|
-
const [state, setState] = useState('routerState', {
|
|
19
|
-
jsx: (0, shade_component_1.createComponent)("div", null),
|
|
20
|
-
});
|
|
21
|
-
const updateUrl = async (currentUrl) => {
|
|
22
|
-
const [lastState] = useState('routerState', state);
|
|
23
|
-
const { activeRoute: lastRoute, activeRouteParams: lastRouteParams, jsx: lastJsx } = lastState;
|
|
24
|
-
try {
|
|
25
|
-
await lock.acquire();
|
|
26
|
-
for (const route of options.props.routes) {
|
|
27
|
-
const matchFn = (0, path_to_regexp_1.match)(route.url, route.routingOptions);
|
|
28
|
-
const matchResult = matchFn(currentUrl);
|
|
29
|
-
if (matchResult) {
|
|
30
|
-
if (route !== lastRoute || JSON.stringify(lastRouteParams) !== JSON.stringify(matchResult.params)) {
|
|
31
|
-
await lastRoute?.onLeave?.({ ...options, element: lastState.jsx });
|
|
32
|
-
const newJsx = route.component({ currentUrl, match: matchResult });
|
|
33
|
-
setState({ jsx: newJsx, activeRoute: route, activeRouteParams: matchResult.params });
|
|
34
|
-
await route.onVisit?.({ ...options, element: newJsx });
|
|
35
|
-
}
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
if (lastRoute?.onLeave) {
|
|
40
|
-
await lastRoute.onLeave({ ...options, element: lastJsx });
|
|
41
|
-
}
|
|
42
|
-
setState({
|
|
43
|
-
jsx: options.props.notFound || (0, shade_component_1.createComponent)("div", null),
|
|
44
|
-
activeRoute: null,
|
|
45
|
-
activeRouteParams: null,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
catch (e) {
|
|
49
|
-
// path updates can be async, this can be ignored
|
|
50
|
-
if (!(e instanceof utils_1.ObservableAlreadyDisposedError)) {
|
|
51
|
-
throw e;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
lock?.release();
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
useObservable('locationPathChanged', injector.getInstance(services_1.LocationService).onLocationPathChanged, updateUrl, true);
|
|
59
|
-
return state.jsx;
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
//# sourceMappingURL=router.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":";;;;;;AAAA,oCAAgC;AAChC,wDAAoD;AACpD,0CAA6C;AAE7C,mDAAsC;AAEtC,kFAA6C;AAC7C,4CAAiE;AAqBpD,QAAA,MAAM,GAAG,IAAA,aAAK,EAAc;IACvC,aAAa,EAAE,cAAc;IAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QAClB,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QACrD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,+BAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAc,aAAa,EAAE;YAC7D,GAAG,EAAE,mDAAO;SACb,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,KAAK,EAAE,UAAkB,EAAE,EAAE;YAC7C,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAc,aAAa,EAAE,KAAK,CAAC,CAAA;YAC/D,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;YAC9F,IAAI;gBACF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;gBACpB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;oBACxC,MAAM,OAAO,GAAG,IAAA,sBAAK,EAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;oBACtD,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;oBACvC,IAAI,WAAW,EAAE;wBACf,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;4BACjG,MAAM,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAA;4BAClE,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;4BAClE,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;4BACpF,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;yBACvD;wBACD,OAAM;qBACP;iBACF;gBACD,IAAI,SAAS,EAAE,OAAO,EAAE;oBACtB,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;iBAC1D;gBACD,QAAQ,CAAC;oBACP,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,mDAAO;oBACtC,WAAW,EAAE,IAAI;oBACjB,iBAAiB,EAAE,IAAI;iBACxB,CAAC,CAAA;aACH;YAAC,OAAO,CAAC,EAAE;gBACV,iDAAiD;gBACjD,IAAI,CAAC,CAAC,CAAC,YAAY,sCAA8B,CAAC,EAAE;oBAClD,MAAM,CAAC,CAAA;iBACR;aACF;oBAAS;gBACR,IAAI,EAAE,OAAO,EAAE,CAAA;aAChB;QACH,CAAC,CAAA;QAED,aAAa,CAAC,qBAAqB,EAAE,QAAQ,CAAC,WAAW,CAAC,0BAAe,CAAC,CAAC,qBAAqB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAClH,OAAO,KAAK,CAAC,GAAG,CAAA;IAClB,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const util_1 = require("util");
|
|
4
|
-
global.TextEncoder = util_1.TextEncoder;
|
|
5
|
-
global.TextDecoder = util_1.TextDecoder;
|
|
6
|
-
const inject_1 = require("@furystack/inject");
|
|
7
|
-
const router_1 = require("./router");
|
|
8
|
-
const __1 = require("..");
|
|
9
|
-
const _1 = require(".");
|
|
10
|
-
const utils_1 = require("@furystack/utils");
|
|
11
|
-
describe('Router', () => {
|
|
12
|
-
beforeEach(() => (document.body.innerHTML = '<div id="root"></div>'));
|
|
13
|
-
afterEach(() => (document.body.innerHTML = ''));
|
|
14
|
-
it('Shuld display the loader and completed state', async () => {
|
|
15
|
-
history.pushState(null, '', '/');
|
|
16
|
-
const onVisit = jest.fn();
|
|
17
|
-
const onLeave = jest.fn();
|
|
18
|
-
const onLastLeave = jest.fn();
|
|
19
|
-
const injector = new inject_1.Injector();
|
|
20
|
-
const rootElement = document.getElementById('root');
|
|
21
|
-
const onRouteChange = jest.fn();
|
|
22
|
-
injector.getInstance(__1.LocationService).onLocationPathChanged.subscribe(onRouteChange);
|
|
23
|
-
(0, __1.initializeShadeRoot)({
|
|
24
|
-
injector,
|
|
25
|
-
rootElement,
|
|
26
|
-
jsxElement: ((0, __1.createComponent)("div", null,
|
|
27
|
-
(0, __1.createComponent)(_1.RouteLink, { id: "home", href: "/" }, "home"),
|
|
28
|
-
(0, __1.createComponent)(_1.RouteLink, { id: "a", href: "/route-a" }, "a"),
|
|
29
|
-
(0, __1.createComponent)(_1.RouteLink, { id: "b", href: "/route-b" }, "b"),
|
|
30
|
-
(0, __1.createComponent)(_1.RouteLink, { id: "b-with-id", href: "/route-b/123" }, "b-with-id"),
|
|
31
|
-
(0, __1.createComponent)(_1.RouteLink, { id: "c", href: "/route-c" }, "c"),
|
|
32
|
-
(0, __1.createComponent)(_1.RouteLink, { id: "x", href: "/route-x" }, "x"),
|
|
33
|
-
(0, __1.createComponent)(router_1.Router, { routes: [
|
|
34
|
-
{ url: '/route-a', component: () => (0, __1.createComponent)("div", { id: "content" }, "route-a"), onVisit, onLeave },
|
|
35
|
-
{ url: '/route-b/:id?', component: ({ match }) => (0, __1.createComponent)("div", { id: "content" },
|
|
36
|
-
"route-b",
|
|
37
|
-
match.params.id) },
|
|
38
|
-
{
|
|
39
|
-
url: '/route-c',
|
|
40
|
-
component: () => (0, __1.createComponent)("div", { id: "content" }, "route-c"),
|
|
41
|
-
onLeave: onLastLeave,
|
|
42
|
-
},
|
|
43
|
-
{ url: '/', component: () => (0, __1.createComponent)("div", { id: "content" }, "home") },
|
|
44
|
-
], notFound: (0, __1.createComponent)("div", { id: "content" }, "not found") }))),
|
|
45
|
-
});
|
|
46
|
-
const getContent = () => document.getElementById('content')?.innerHTML;
|
|
47
|
-
const getLocation = () => location.pathname;
|
|
48
|
-
const clickOn = (name) => document.getElementById(name)?.click();
|
|
49
|
-
await (0, utils_1.sleepAsync)(100);
|
|
50
|
-
expect(getLocation()).toBe('/');
|
|
51
|
-
expect(getContent()).toBe('home');
|
|
52
|
-
expect(onVisit).not.toBeCalled();
|
|
53
|
-
clickOn('a');
|
|
54
|
-
await (0, utils_1.sleepAsync)(100);
|
|
55
|
-
expect(getContent()).toBe('route-a');
|
|
56
|
-
expect(getLocation()).toBe('/route-a');
|
|
57
|
-
expect(onRouteChange).toBeCalledTimes(1);
|
|
58
|
-
expect(onVisit).toBeCalledTimes(1);
|
|
59
|
-
clickOn('a');
|
|
60
|
-
await (0, utils_1.sleepAsync)(100);
|
|
61
|
-
expect(onVisit).toBeCalledTimes(1);
|
|
62
|
-
expect(onLeave).not.toBeCalled();
|
|
63
|
-
clickOn('b');
|
|
64
|
-
await (0, utils_1.sleepAsync)(100);
|
|
65
|
-
expect(onLeave).toBeCalledTimes(1);
|
|
66
|
-
expect(getContent()).toBe('route-b');
|
|
67
|
-
expect(getLocation()).toBe('/route-b');
|
|
68
|
-
clickOn('b-with-id');
|
|
69
|
-
await (0, utils_1.sleepAsync)(100);
|
|
70
|
-
expect(getContent()).toBe('route-b123');
|
|
71
|
-
expect(getLocation()).toBe('/route-b/123');
|
|
72
|
-
clickOn('c');
|
|
73
|
-
await (0, utils_1.sleepAsync)(100);
|
|
74
|
-
expect(getContent()).toBe('route-c');
|
|
75
|
-
expect(getLocation()).toBe('/route-c');
|
|
76
|
-
expect(onLastLeave).not.toBeCalled();
|
|
77
|
-
clickOn('x');
|
|
78
|
-
await (0, utils_1.sleepAsync)(100);
|
|
79
|
-
expect(getContent()).toBe('not found');
|
|
80
|
-
expect(getLocation()).toBe('/route-x');
|
|
81
|
-
expect(onLastLeave).toBeCalledTimes(1);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
//# sourceMappingURL=router.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router.spec.js","sourceRoot":"","sources":["../../src/components/router.spec.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./services"), exports);
|
|
18
|
-
require("./jsx");
|
|
19
|
-
__exportStar(require("./shade-component"), exports);
|
|
20
|
-
__exportStar(require("./shade"), exports);
|
|
21
|
-
__exportStar(require("./models"), exports);
|
|
22
|
-
__exportStar(require("./components"), exports);
|
|
23
|
-
__exportStar(require("./initialize"), exports);
|
|
24
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,iBAAc;AACd,oDAAiC;AACjC,0CAAuB;AACvB,2CAAwB;AACxB,+CAA4B;AAC5B,+CAA4B"}
|
package/dist/initialize.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.initializeShadeRoot = void 0;
|
|
4
|
-
const initializeShadeRoot = (options) => {
|
|
5
|
-
options.jsxElement.injector = options.injector;
|
|
6
|
-
options.rootElement.appendChild(options.jsxElement);
|
|
7
|
-
};
|
|
8
|
-
exports.initializeShadeRoot = initializeShadeRoot;
|
|
9
|
-
//# sourceMappingURL=initialize.js.map
|
package/dist/initialize.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../src/initialize.ts"],"names":[],"mappings":";;;AAOO,MAAM,mBAAmB,GAAG,CAAC,OAA0B,EAAE,EAAE;IAChE,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IAC9C,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACrD,CAAC,CAAA;AAHY,QAAA,mBAAmB,uBAG/B"}
|
package/dist/jsx.js
DELETED
package/dist/jsx.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../src/jsx.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"children-list.js","sourceRoot":"","sources":["../../src/models/children-list.ts"],"names":[],"mappings":""}
|
package/dist/models/index.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./children-list"), exports);
|
|
18
|
-
__exportStar(require("./partial-element"), exports);
|
|
19
|
-
__exportStar(require("./render-options"), exports);
|
|
20
|
-
__exportStar(require("./selection-state"), exports);
|
|
21
|
-
__exportStar(require("./shade-component"), exports);
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
package/dist/models/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B;AAC/B,oDAAiC;AACjC,mDAAgC;AAChC,oDAAiC;AACjC,oDAAiC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"partial-element.js","sourceRoot":"","sources":["../../src/models/partial-element.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"render-options.js","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selection-state.js","sourceRoot":"","sources":["../../src/models/selection-state.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isShadeComponent = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Type guard that checks if an object is a stateless component
|
|
6
|
-
*
|
|
7
|
-
* @param obj The object to check
|
|
8
|
-
* @returns a value that indicates if the object is a Shade component
|
|
9
|
-
*/
|
|
10
|
-
const isShadeComponent = (obj) => {
|
|
11
|
-
return typeof obj === 'function';
|
|
12
|
-
};
|
|
13
|
-
exports.isShadeComponent = isShadeComponent;
|
|
14
|
-
//# sourceMappingURL=shade-component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../../src/models/shade-component.ts"],"names":[],"mappings":";;;AAOA;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAQ,EAA8B,EAAE;IACvE,OAAO,OAAO,GAAG,KAAK,UAAU,CAAA;AAClC,CAAC,CAAA;AAFY,QAAA,gBAAgB,oBAE5B"}
|
package/dist/services/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./location-service"), exports);
|
|
18
|
-
__exportStar(require("./screen-service"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,mDAAgC"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.LocationService = void 0;
|
|
13
|
-
const utils_1 = require("@furystack/utils");
|
|
14
|
-
const inject_1 = require("@furystack/inject");
|
|
15
|
-
const rest_1 = require("@furystack/rest");
|
|
16
|
-
let LocationService = class LocationService {
|
|
17
|
-
dispose() {
|
|
18
|
-
window.removeEventListener('popstate', this.updateState);
|
|
19
|
-
window.removeEventListener('hashchange', this.updateState);
|
|
20
|
-
this.pushStateTracer.dispose();
|
|
21
|
-
this.replaceStateTracer.dispose();
|
|
22
|
-
this.onLocationPathChanged.dispose();
|
|
23
|
-
this.onLocationSearchChanged.dispose();
|
|
24
|
-
this.onDeserializedLocationSearchChanged.dispose();
|
|
25
|
-
this.locationDeserializerObserver.dispose();
|
|
26
|
-
}
|
|
27
|
-
updateState() {
|
|
28
|
-
this.onLocationPathChanged.setValue(location.pathname);
|
|
29
|
-
this.onLocationHashChanged.setValue(location.hash);
|
|
30
|
-
this.onLocationSearchChanged.setValue(location.search);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* @param key The search param key (e.g. ?search=1 -> search)
|
|
35
|
-
* @param defaultValue The default value if not provided
|
|
36
|
-
* @returns An observable with the current value (or default value) of the search param
|
|
37
|
-
*/
|
|
38
|
-
useSearchParam(key, defaultValue) {
|
|
39
|
-
const actualValue = this.onDeserializedLocationSearchChanged.getValue()[key] ?? defaultValue;
|
|
40
|
-
if (!this.searchParamObservables.has(key)) {
|
|
41
|
-
const newObservable = new utils_1.ObservableValue(actualValue);
|
|
42
|
-
this.searchParamObservables.set(key, newObservable);
|
|
43
|
-
newObservable.subscribe((value) => {
|
|
44
|
-
const params = (0, rest_1.serializeToQueryString)({ ...(0, rest_1.deserializeQueryString)(location.search), [key]: value });
|
|
45
|
-
history.pushState({}, '', `${location.pathname}?${params}`);
|
|
46
|
-
});
|
|
47
|
-
this.onDeserializedLocationSearchChanged.subscribe((search) => {
|
|
48
|
-
const value = search[key] ?? defaultValue;
|
|
49
|
-
this.searchParamObservables.get(key)?.setValue(value);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return this.searchParamObservables.get(key);
|
|
53
|
-
}
|
|
54
|
-
constructor() {
|
|
55
|
-
/**
|
|
56
|
-
* Observable value that will be updated when the location pathname (e.g. /page/1) changes
|
|
57
|
-
*/
|
|
58
|
-
this.onLocationPathChanged = new utils_1.ObservableValue(new URL(location.href).pathname);
|
|
59
|
-
/**
|
|
60
|
-
* Observable value that will be updated when the location hash (e.g. #hash) changes
|
|
61
|
-
*/
|
|
62
|
-
this.onLocationHashChanged = new utils_1.ObservableValue(location.hash);
|
|
63
|
-
/**
|
|
64
|
-
* Observable value that will be updated when the location search (e.g. ?search=1) changes
|
|
65
|
-
*/
|
|
66
|
-
this.onLocationSearchChanged = new utils_1.ObservableValue(location.search);
|
|
67
|
-
this.onDeserializedLocationSearchChanged = new utils_1.ObservableValue((0, rest_1.deserializeQueryString)(this.onLocationSearchChanged.getValue()));
|
|
68
|
-
this.locationDeserializerObserver = this.onLocationSearchChanged.subscribe((search) => {
|
|
69
|
-
this.onDeserializedLocationSearchChanged.setValue((0, rest_1.deserializeQueryString)(search));
|
|
70
|
-
});
|
|
71
|
-
this.searchParamObservables = new Map();
|
|
72
|
-
window.addEventListener('popstate', () => this.updateState());
|
|
73
|
-
window.addEventListener('hashchange', () => this.updateState());
|
|
74
|
-
this.pushStateTracer = utils_1.Trace.method({
|
|
75
|
-
object: history,
|
|
76
|
-
method: history.pushState,
|
|
77
|
-
isAsync: false,
|
|
78
|
-
onFinished: () => this.updateState(),
|
|
79
|
-
});
|
|
80
|
-
this.replaceStateTracer = utils_1.Trace.method({
|
|
81
|
-
object: history,
|
|
82
|
-
method: history.replaceState,
|
|
83
|
-
isAsync: false,
|
|
84
|
-
onFinished: () => this.updateState(),
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
LocationService = __decorate([
|
|
89
|
-
(0, inject_1.Injectable)({ lifetime: 'singleton' }),
|
|
90
|
-
__metadata("design:paramtypes", [])
|
|
91
|
-
], LocationService);
|
|
92
|
-
exports.LocationService = LocationService;
|
|
93
|
-
//# sourceMappingURL=location-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"location-service.js","sourceRoot":"","sources":["../../src/services/location-service.tsx"],"names":[],"mappings":"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"}
|