@furystack/shades 7.2.6 → 8.0.1
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/esm/components/index.js +4 -0
- package/esm/components/index.js.map +1 -0
- package/{dist → esm}/components/lazy-load.js +2 -5
- package/esm/components/lazy-load.js.map +1 -0
- package/{dist → esm}/components/route-link.js +7 -10
- package/esm/components/route-link.js.map +1 -0
- package/{dist → esm}/components/router.js +13 -19
- package/esm/components/router.js.map +1 -0
- package/esm/index.js +8 -0
- package/esm/index.js.map +1 -0
- package/esm/initialize.js +5 -0
- package/esm/initialize.js.map +1 -0
- package/esm/jsx.js +2 -0
- package/esm/models/children-list.js +2 -0
- package/esm/models/index.js +6 -0
- package/esm/models/index.js.map +1 -0
- package/esm/models/partial-element.js +2 -0
- package/esm/models/render-options.js +2 -0
- package/esm/models/selection-state.js +2 -0
- package/esm/models/shade-component.js +9 -0
- package/esm/models/shade-component.js.map +1 -0
- package/esm/services/index.js +3 -0
- package/esm/services/index.js.map +1 -0
- package/{dist → esm}/services/location-service.js +14 -17
- package/esm/services/location-service.js.map +1 -0
- package/{dist → esm}/services/resource-manager.js +3 -7
- package/esm/services/resource-manager.js.map +1 -0
- package/{dist → esm}/services/screen-service.js +12 -15
- package/esm/services/screen-service.js.map +1 -0
- package/{dist → esm}/shade-component.js +20 -33
- package/esm/shade-component.js.map +1 -0
- package/{dist → esm}/shade.js +10 -15
- package/esm/shade.js.map +1 -0
- package/package.json +26 -9
- 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.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.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.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/models/children-list.js +0 -3
- 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/render-options.js +0 -3
- package/dist/models/selection-state.js +0 -3
- 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.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.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.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.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.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
- /package/{dist → esm}/jsx.js.map +0 -0
- /package/{dist → esm}/models/children-list.js.map +0 -0
- /package/{dist → esm}/models/partial-element.js.map +0 -0
- /package/{dist → esm}/models/render-options.js.map +0 -0
- /package/{dist → esm}/models/selection-state.js.map +0 -0
package/esm/shade.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/shades",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.1",
|
|
4
4
|
"description": "Google Authentication Provider for FuryStack",
|
|
5
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build:es6": "tsc --outDir ./esm"
|
|
8
|
+
},
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./esm/index.js",
|
|
12
|
+
"types": "./types/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"typesVersions": {
|
|
17
|
+
"*": {
|
|
18
|
+
"*": [
|
|
19
|
+
"types/*"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
},
|
|
6
23
|
"files": [
|
|
7
|
-
"
|
|
24
|
+
"esm",
|
|
8
25
|
"types",
|
|
9
26
|
"src"
|
|
10
27
|
],
|
|
@@ -29,18 +46,18 @@
|
|
|
29
46
|
},
|
|
30
47
|
"homepage": "https://github.com/furystack/furystack",
|
|
31
48
|
"devDependencies": {
|
|
32
|
-
"@types/jest": "^29.5.0",
|
|
33
49
|
"@types/jsdom": "^21.1.1",
|
|
34
50
|
"@types/node": "^18.15.11",
|
|
35
|
-
"jsdom": "^21.1.1"
|
|
51
|
+
"jsdom": "^21.1.1",
|
|
52
|
+
"typescript": "^5.0.4",
|
|
53
|
+
"vitest": "^0.30.1"
|
|
36
54
|
},
|
|
37
55
|
"dependencies": {
|
|
38
|
-
"@furystack/inject": "^
|
|
39
|
-
"@furystack/rest": "^
|
|
40
|
-
"@furystack/utils": "^
|
|
56
|
+
"@furystack/inject": "^8.0.1",
|
|
57
|
+
"@furystack/rest": "^5.0.1",
|
|
58
|
+
"@furystack/utils": "^4.0.1",
|
|
41
59
|
"path-to-regexp": "^6.2.1",
|
|
42
60
|
"semaphore-async-await": "^1.5.1"
|
|
43
61
|
},
|
|
44
|
-
"typings": "./types/index.d.ts",
|
|
45
62
|
"gitHead": "76e1d17a71b981984935c9a7a5791cf61ebf5213"
|
|
46
63
|
}
|
|
@@ -2,6 +2,7 @@ import { createComponent } from './shade-component'
|
|
|
2
2
|
import './jsx'
|
|
3
3
|
import { Shade } from './shade'
|
|
4
4
|
import { Injector } from '@furystack/inject'
|
|
5
|
+
import { describe, it, expect, vi } from 'vitest'
|
|
5
6
|
|
|
6
7
|
describe('Shades Component Factory', () => {
|
|
7
8
|
describe('HTML Elements', () => {
|
|
@@ -42,7 +43,7 @@ describe('Shades Component Factory', () => {
|
|
|
42
43
|
})
|
|
43
44
|
|
|
44
45
|
it('Should attach listeners', () => {
|
|
45
|
-
const onclick =
|
|
46
|
+
const onclick = vi.fn()
|
|
46
47
|
const component = <div onclick={onclick}></div>
|
|
47
48
|
expect(component.onclick).toBe(onclick)
|
|
48
49
|
})
|
|
@@ -7,10 +7,15 @@ import { Injector } from '@furystack/inject'
|
|
|
7
7
|
import { sleepAsync } from '@furystack/utils'
|
|
8
8
|
import { LazyLoad } from './lazy-load'
|
|
9
9
|
import { createComponent, initializeShadeRoot } from '..'
|
|
10
|
+
import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
|
|
10
11
|
|
|
11
12
|
describe('Lazy Load', () => {
|
|
12
|
-
beforeEach(() =>
|
|
13
|
-
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
15
|
+
})
|
|
16
|
+
afterEach(() => {
|
|
17
|
+
document.body.innerHTML = ''
|
|
18
|
+
})
|
|
14
19
|
|
|
15
20
|
it('Shuld display the loader and completed state', async () => {
|
|
16
21
|
const injector = new Injector()
|
|
@@ -38,7 +43,7 @@ describe('Lazy Load', () => {
|
|
|
38
43
|
const injector = new Injector()
|
|
39
44
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
40
45
|
|
|
41
|
-
const load =
|
|
46
|
+
const load = vi.fn(async () => {
|
|
42
47
|
throw Error(':(')
|
|
43
48
|
})
|
|
44
49
|
|
|
@@ -70,7 +75,7 @@ describe('Lazy Load', () => {
|
|
|
70
75
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
71
76
|
let counter = 0
|
|
72
77
|
|
|
73
|
-
const load =
|
|
78
|
+
const load = vi.fn(async () => {
|
|
74
79
|
if (!counter) {
|
|
75
80
|
counter += 1
|
|
76
81
|
throw Error(':(')
|
|
@@ -6,16 +6,21 @@ global.TextDecoder = TextDecoder as any
|
|
|
6
6
|
import { Injector } from '@furystack/inject'
|
|
7
7
|
import { RouteLink } from './route-link'
|
|
8
8
|
import { createComponent, initializeShadeRoot, LocationService } from '..'
|
|
9
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
|
|
9
10
|
|
|
10
11
|
describe('RouteLink', () => {
|
|
11
|
-
beforeEach(() =>
|
|
12
|
-
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
14
|
+
})
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
document.body.innerHTML = ''
|
|
17
|
+
})
|
|
13
18
|
|
|
14
19
|
it('Shuld display the loader and completed state', async () => {
|
|
15
20
|
const injector = new Injector()
|
|
16
21
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
17
22
|
|
|
18
|
-
const onRouteChange =
|
|
23
|
+
const onRouteChange = vi.fn()
|
|
19
24
|
|
|
20
25
|
injector.getInstance(LocationService).onLocationPathChanged.subscribe(onRouteChange)
|
|
21
26
|
|
|
@@ -8,22 +8,27 @@ import { Router } from './router'
|
|
|
8
8
|
import { createComponent, initializeShadeRoot, LocationService } from '..'
|
|
9
9
|
import { RouteLink } from '.'
|
|
10
10
|
import { sleepAsync } from '@furystack/utils'
|
|
11
|
+
import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
|
|
11
12
|
|
|
12
13
|
describe('Router', () => {
|
|
13
|
-
beforeEach(() =>
|
|
14
|
-
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
16
|
+
})
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
document.body.innerHTML = ''
|
|
19
|
+
})
|
|
15
20
|
|
|
16
21
|
it('Shuld display the loader and completed state', async () => {
|
|
17
22
|
history.pushState(null, '', '/')
|
|
18
23
|
|
|
19
|
-
const onVisit =
|
|
20
|
-
const onLeave =
|
|
21
|
-
const onLastLeave =
|
|
24
|
+
const onVisit = vi.fn()
|
|
25
|
+
const onLeave = vi.fn()
|
|
26
|
+
const onLastLeave = vi.fn()
|
|
22
27
|
|
|
23
28
|
const injector = new Injector()
|
|
24
29
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
25
30
|
|
|
26
|
-
const onRouteChange =
|
|
31
|
+
const onRouteChange = vi.fn()
|
|
27
32
|
|
|
28
33
|
injector.getInstance(LocationService).onLocationPathChanged.subscribe(onRouteChange)
|
|
29
34
|
|
|
@@ -4,7 +4,7 @@ import { LocationService } from '../services'
|
|
|
4
4
|
import type { MatchResult, TokensToRegexpOptions } from 'path-to-regexp'
|
|
5
5
|
import { match } from 'path-to-regexp'
|
|
6
6
|
import type { RenderOptions } from '../models'
|
|
7
|
-
import
|
|
7
|
+
import { Lock } from 'semaphore-async-await'
|
|
8
8
|
import { ObservableAlreadyDisposedError } from '@furystack/utils'
|
|
9
9
|
|
|
10
10
|
export interface Route<TMatchResult extends object> {
|
|
@@ -30,7 +30,7 @@ export const Router = Shade<RouterProps>({
|
|
|
30
30
|
shadowDomName: 'shade-router',
|
|
31
31
|
render: (options) => {
|
|
32
32
|
const { useState, useObservable, injector } = options
|
|
33
|
-
const [lock] = useState('lock', new
|
|
33
|
+
const [lock] = useState('lock', new Lock())
|
|
34
34
|
const [state, setState] = useState<RouterState>('routerState', {
|
|
35
35
|
jsx: <div />,
|
|
36
36
|
})
|
|
@@ -10,7 +10,6 @@ export type RenderOptions<TProps> = {
|
|
|
10
10
|
element: JSX.Element<TProps>
|
|
11
11
|
/**
|
|
12
12
|
* Creates and disposes a resource after the component has been detached from the DOM
|
|
13
|
-
*
|
|
14
13
|
* @param key The key for caching the disposable resource
|
|
15
14
|
* @param factory A factory method for creating the disposable resource
|
|
16
15
|
* @returns The Disposable instance
|
|
@@ -34,7 +33,6 @@ export type RenderOptions<TProps> = {
|
|
|
34
33
|
|
|
35
34
|
/**
|
|
36
35
|
* Creates a state object that will trigger a component re-render on change
|
|
37
|
-
*
|
|
38
36
|
* @param key The Key for caching the observable value
|
|
39
37
|
* @param initialValue The initial value for the observable
|
|
40
38
|
* @returns tuple with the current value and a setter function
|
|
@@ -43,7 +41,6 @@ export type RenderOptions<TProps> = {
|
|
|
43
41
|
|
|
44
42
|
/**
|
|
45
43
|
* Creates a state object that will use a value from the search string of the current location. Triggers a component re-render on change
|
|
46
|
-
*
|
|
47
44
|
* @param key The Key for caching the observable value
|
|
48
45
|
* @param initialValue The initial value - if the value is not found in the search string
|
|
49
46
|
* @returns a tuple with the current value and a setter function
|
|
@@ -52,7 +49,6 @@ export type RenderOptions<TProps> = {
|
|
|
52
49
|
|
|
53
50
|
/**
|
|
54
51
|
* Creates a state object that will use a value from the storage area. Triggers a component re-render on change
|
|
55
|
-
*
|
|
56
52
|
* @param key The key in the storage area
|
|
57
53
|
* @param initialValue The initial value that will be used if the key is not found in the storage area
|
|
58
54
|
* @param storageArea The storage area to use
|
|
@@ -7,7 +7,6 @@ export type ShadeComponent<TProps = {}> = (arg: TProps, children?: ChildrenList)
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Type guard that checks if an object is a stateless component
|
|
10
|
-
*
|
|
11
10
|
* @param obj The object to check
|
|
12
11
|
* @returns a value that indicates if the object is a Shade component
|
|
13
12
|
*/
|
|
@@ -6,10 +6,15 @@ global.TextDecoder = TextDecoder as any
|
|
|
6
6
|
import { Injector } from '@furystack/inject'
|
|
7
7
|
import { using } from '@furystack/utils'
|
|
8
8
|
import { LocationService } from './'
|
|
9
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'
|
|
9
10
|
|
|
10
11
|
describe('LocationService', () => {
|
|
11
|
-
beforeEach(() =>
|
|
12
|
-
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
14
|
+
})
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
document.body.innerHTML = ''
|
|
17
|
+
})
|
|
13
18
|
|
|
14
19
|
it('Shuld be constructed', () => {
|
|
15
20
|
using(new Injector(), (i) => {
|
|
@@ -20,7 +25,7 @@ describe('LocationService', () => {
|
|
|
20
25
|
|
|
21
26
|
it('Shuld update state on events', () => {
|
|
22
27
|
using(new Injector(), (i) => {
|
|
23
|
-
const onLocaionChanged =
|
|
28
|
+
const onLocaionChanged = vi.fn()
|
|
24
29
|
const s = i.getInstance(LocationService)
|
|
25
30
|
s.onLocationPathChanged.subscribe(onLocaionChanged)
|
|
26
31
|
expect(onLocaionChanged).toBeCalledTimes(0)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ObservableValue, using } from '@furystack/utils'
|
|
2
2
|
import { ResourceManager } from './resource-manager'
|
|
3
|
+
import { describe, it, expect } from 'vitest'
|
|
3
4
|
describe('ResourceManager', () => {
|
|
4
5
|
it('Should return an observable from cache', () => {
|
|
5
6
|
using(new ResourceManager(), (rm) => {
|
|
@@ -6,10 +6,15 @@ global.TextDecoder = TextDecoder as any
|
|
|
6
6
|
import { Injector } from '@furystack/inject'
|
|
7
7
|
import { usingAsync } from '@furystack/utils'
|
|
8
8
|
import { ScreenService } from './screen-service'
|
|
9
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest'
|
|
9
10
|
|
|
10
11
|
describe('ScreenService', () => {
|
|
11
|
-
beforeEach(() =>
|
|
12
|
-
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
14
|
+
})
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
document.body.innerHTML = ''
|
|
17
|
+
})
|
|
13
18
|
|
|
14
19
|
it('Shuld be constructed', async () => {
|
|
15
20
|
await usingAsync(new Injector(), async (i) => {
|
package/src/shade-component.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { isShadeComponent } from './models'
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Appends a list of items to a HTML element
|
|
6
|
-
*
|
|
7
6
|
* @param el the root element
|
|
8
7
|
* @param children array of items to append
|
|
9
8
|
*/
|
|
@@ -68,7 +67,6 @@ type CreateComponentArgs<TProps> = [
|
|
|
68
67
|
// eslint-disable-next-line jsdoc/require-param
|
|
69
68
|
/**
|
|
70
69
|
* Factory method that creates a component. This should be configured as a default JSX Factory in tsconfig.
|
|
71
|
-
*
|
|
72
70
|
* @returns the created JSX element
|
|
73
71
|
*/
|
|
74
72
|
export const createComponentInner = <TProps>(...[elementType, props, ...children]: CreateComponentArgs<TProps>) => {
|
|
@@ -9,16 +9,21 @@ import { initializeShadeRoot } from './initialize'
|
|
|
9
9
|
import { Shade } from './shade'
|
|
10
10
|
import { createComponent } from './shade-component'
|
|
11
11
|
import { ObservableValue } from '@furystack/utils'
|
|
12
|
+
import { describe, it, expect, afterEach, beforeEach, vi } from 'vitest'
|
|
12
13
|
|
|
13
14
|
describe('Shade Resources integration tests', () => {
|
|
14
|
-
beforeEach(() =>
|
|
15
|
-
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
17
|
+
})
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
document.body.innerHTML = ''
|
|
20
|
+
})
|
|
16
21
|
|
|
17
22
|
it('Should update the component based on a custom observable value change', () => {
|
|
18
23
|
const injector = new Injector()
|
|
19
24
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
20
25
|
|
|
21
|
-
const renderCounter =
|
|
26
|
+
const renderCounter = vi.fn()
|
|
22
27
|
|
|
23
28
|
const obs1 = new ObservableValue(0)
|
|
24
29
|
const obs2 = new ObservableValue('a')
|
package/src/shade.ts
CHANGED
|
@@ -9,10 +9,15 @@ global.TextDecoder = TextDecoder as any
|
|
|
9
9
|
import { initializeShadeRoot } from './initialize'
|
|
10
10
|
import { Shade } from './shade'
|
|
11
11
|
import { createComponent } from './shade-component'
|
|
12
|
+
import { describe, it, expect, vi, afterEach, beforeEach } from 'vitest'
|
|
12
13
|
|
|
13
14
|
describe('Shades integration tests', () => {
|
|
14
|
-
beforeEach(() =>
|
|
15
|
-
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
document.body.innerHTML = '<div id="root"></div>'
|
|
17
|
+
})
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
document.body.innerHTML = ''
|
|
20
|
+
})
|
|
16
21
|
|
|
17
22
|
it('Should mount a custom component to a Shade root', () => {
|
|
18
23
|
const injector = new Injector()
|
|
@@ -177,8 +182,8 @@ describe('Shades integration tests', () => {
|
|
|
177
182
|
it("Should execute the constructed and constructed's cleanup callback", async () => {
|
|
178
183
|
await usingAsync(new Injector(), async (injector) => {
|
|
179
184
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
180
|
-
const cleanup =
|
|
181
|
-
const constructed =
|
|
185
|
+
const cleanup = vi.fn()
|
|
186
|
+
const constructed = vi.fn(() => cleanup)
|
|
182
187
|
|
|
183
188
|
const ExampleComponent = Shade({
|
|
184
189
|
constructed,
|
|
@@ -201,8 +206,8 @@ describe('Shades integration tests', () => {
|
|
|
201
206
|
it('Should execute the onAttach and onDetach callbacks', async () => {
|
|
202
207
|
await usingAsync(new Injector(), async (injector) => {
|
|
203
208
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
204
|
-
const onAttach =
|
|
205
|
-
const onDetach =
|
|
209
|
+
const onAttach = vi.fn()
|
|
210
|
+
const onDetach = vi.fn()
|
|
206
211
|
|
|
207
212
|
const ExampleComponent = Shade({
|
|
208
213
|
onAttach,
|
|
@@ -8,7 +8,6 @@ export type RenderOptions<TProps> = {
|
|
|
8
8
|
element: JSX.Element<TProps>;
|
|
9
9
|
/**
|
|
10
10
|
* Creates and disposes a resource after the component has been detached from the DOM
|
|
11
|
-
*
|
|
12
11
|
* @param key The key for caching the disposable resource
|
|
13
12
|
* @param factory A factory method for creating the disposable resource
|
|
14
13
|
* @returns The Disposable instance
|
|
@@ -25,7 +24,6 @@ export type RenderOptions<TProps> = {
|
|
|
25
24
|
useObservable: <T>(key: string, observable: ObservableValue<T>, onChange?: (newValue: T) => void, getLast?: boolean) => [value: T, setValue: (newValue: T) => void];
|
|
26
25
|
/**
|
|
27
26
|
* Creates a state object that will trigger a component re-render on change
|
|
28
|
-
*
|
|
29
27
|
* @param key The Key for caching the observable value
|
|
30
28
|
* @param initialValue The initial value for the observable
|
|
31
29
|
* @returns tuple with the current value and a setter function
|
|
@@ -33,7 +31,6 @@ export type RenderOptions<TProps> = {
|
|
|
33
31
|
useState: <T>(key: string, initialValue: T) => [value: T, setValue: (newValue: T) => void];
|
|
34
32
|
/**
|
|
35
33
|
* Creates a state object that will use a value from the search string of the current location. Triggers a component re-render on change
|
|
36
|
-
*
|
|
37
34
|
* @param key The Key for caching the observable value
|
|
38
35
|
* @param initialValue The initial value - if the value is not found in the search string
|
|
39
36
|
* @returns a tuple with the current value and a setter function
|
|
@@ -41,7 +38,6 @@ export type RenderOptions<TProps> = {
|
|
|
41
38
|
useSearchState: <T>(key: string, initialValue: T) => [value: T, setValue: (newValue: T) => void];
|
|
42
39
|
/**
|
|
43
40
|
* Creates a state object that will use a value from the storage area. Triggers a component re-render on change
|
|
44
|
-
*
|
|
45
41
|
* @param key The key in the storage area
|
|
46
42
|
* @param initialValue The initial value that will be used if the key is not found in the storage area
|
|
47
43
|
* @param storageArea The storage area to use
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnE,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B
|
|
1
|
+
{"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnE,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B;;;;;OAKG;IACH,aAAa,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAEzE;;;;;;;OAOG;IACH,aAAa,EAAE,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,EAChC,OAAO,CAAC,EAAE,OAAO,KACd,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAE1F;;;;;OAKG;IACH,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhG;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,WAAW,CAAC,EAAE,OAAO,KAClB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;CACjD,CAAA"}
|
|
@@ -5,7 +5,6 @@ import type { ChildrenList } from './children-list';
|
|
|
5
5
|
export type ShadeComponent<TProps = {}> = (arg: TProps, children?: ChildrenList) => JSX.Element;
|
|
6
6
|
/**
|
|
7
7
|
* Type guard that checks if an object is a stateless component
|
|
8
|
-
*
|
|
9
8
|
* @param obj The object to check
|
|
10
9
|
* @returns a value that indicates if the object is a Shade component
|
|
11
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../../src/models/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,GAAG,CAAC,OAAO,CAAA;AAE/F
|
|
1
|
+
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../../src/models/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,GAAG,CAAC,OAAO,CAAA;AAE/F;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAS,GAAG,+BAExC,CAAA"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { ChildrenList, ShadeComponent } from './models';
|
|
2
2
|
/**
|
|
3
3
|
* Appends a list of items to a HTML element
|
|
4
|
-
*
|
|
5
4
|
* @param el the root element
|
|
6
5
|
* @param children array of items to append
|
|
7
6
|
*/
|
|
@@ -28,7 +27,6 @@ type CreateComponentArgs<TProps> = [
|
|
|
28
27
|
];
|
|
29
28
|
/**
|
|
30
29
|
* Factory method that creates a component. This should be configured as a default JSX Factory in tsconfig.
|
|
31
|
-
*
|
|
32
30
|
* @returns the created JSX element
|
|
33
31
|
*/
|
|
34
32
|
export declare const createComponentInner: <TProps>(elementType: string | ShadeComponent<TProps>, props: TProps, ...children: (string | HTMLElement | JSX.Element<any> | string[] | HTMLElement[] | JSX.Element<any>[])[]) => HTMLElement | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG5D
|
|
1
|
+
{"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG5D;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,GAAG,gBAAgB,iCAY7D,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,GAAG;WAAqB,QAAQ,mBAAmB,CAAC;CAEnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,WAAW,SAAS,GAAG,SAOvD,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,WAAW,SAAS,GAAG,SAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,SAAS,GAAG,SAOtD,CAAA;AAED,KAAK,mBAAmB,CAAC,MAAM,IAAI;IACjC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM;IACb,GAAG,QAAQ,EAAE,YAAY;CAC1B,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,4MAgBhC,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,YAAY,CAAC,CAAA;AAElE,eAAO,MAAM,mBAAmB,6IAI/B,CAAA;AAED,eAAO,MAAM,eAAe,oWAK3B,CAAA"}
|
package/types/shade.d.ts
CHANGED
package/types/shade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAI3D,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI;IACjC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAEvE;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAC3B,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IAE/E;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAEnD;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAA;IAE5D;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CACzC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAI3D,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI;IACjC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAEvE;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAC3B,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IAE/E;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAEnD;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAA;IAE5D;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CACzC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,kGA8NjB,CAAA"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const shade_component_1 = require("./shade-component");
|
|
4
|
-
require("./jsx");
|
|
5
|
-
const shade_1 = require("./shade");
|
|
6
|
-
const inject_1 = require("@furystack/inject");
|
|
7
|
-
describe('Shades Component Factory', () => {
|
|
8
|
-
describe('HTML Elements', () => {
|
|
9
|
-
it('Should create a simple component', () => {
|
|
10
|
-
const component = (0, shade_component_1.createComponent)("div", null, "test");
|
|
11
|
-
expect(component).toBeInstanceOf(HTMLDivElement);
|
|
12
|
-
expect(component.innerHTML).toBe('test');
|
|
13
|
-
expect(component.outerHTML).toBe('<div>test</div>');
|
|
14
|
-
});
|
|
15
|
-
it('Should apply styles', () => {
|
|
16
|
-
const component = (0, shade_component_1.createComponent)("div", { style: { color: 'red' } }, "a");
|
|
17
|
-
expect(component).toBeInstanceOf(HTMLDivElement);
|
|
18
|
-
expect(component.style.color).toBe('red');
|
|
19
|
-
});
|
|
20
|
-
it('Should apply data attributes', () => {
|
|
21
|
-
const component = (0, shade_component_1.createComponent)("div", { "data-testid": "asd-123" }, "a");
|
|
22
|
-
expect(component).toBeInstanceOf(HTMLDivElement);
|
|
23
|
-
expect(component.getAttribute('data-testid')).toBe('asd-123');
|
|
24
|
-
});
|
|
25
|
-
it('Should create a nested component', () => {
|
|
26
|
-
const component = ((0, shade_component_1.createComponent)("div", { style: { display: 'flex' } },
|
|
27
|
-
(0, shade_component_1.createComponent)("h1", null, "Hi, I'm a header"),
|
|
28
|
-
(0, shade_component_1.createComponent)("p", null,
|
|
29
|
-
"paragraph... ",
|
|
30
|
-
['a', 'b', 'c']),
|
|
31
|
-
(0, shade_component_1.createComponent)("a", { target: "_blank", href: "https://google.com" }, "link")));
|
|
32
|
-
expect(component).toBeInstanceOf(HTMLDivElement);
|
|
33
|
-
expect(component.childElementCount).toBe(3);
|
|
34
|
-
expect(component.innerHTML).toBe(`<h1>Hi, I'm a header</h1><p>paragraph... abc</p><a target="_blank" href="https://google.com">link</a>`);
|
|
35
|
-
});
|
|
36
|
-
it('Should attach listeners', () => {
|
|
37
|
-
const onclick = jest.fn();
|
|
38
|
-
const component = (0, shade_component_1.createComponent)("div", { onclick: onclick });
|
|
39
|
-
expect(component.onclick).toBe(onclick);
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
describe('Shade components', () => {
|
|
43
|
-
it('Should render a basic component', () => {
|
|
44
|
-
const Example = (0, shade_1.Shade)({ shadowDomName: 'example-basic', render: () => (0, shade_component_1.createComponent)("div", null) });
|
|
45
|
-
const component = ((0, shade_component_1.createComponent)("div", null,
|
|
46
|
-
(0, shade_component_1.createComponent)(Example, null)));
|
|
47
|
-
const shade = component.firstElementChild;
|
|
48
|
-
expect(shade.props).toEqual({});
|
|
49
|
-
expect(shade.shadeChildren).toEqual([]);
|
|
50
|
-
});
|
|
51
|
-
it('Should render a component with props', () => {
|
|
52
|
-
const Example = (0, shade_1.Shade)({
|
|
53
|
-
shadowDomName: 'example-with-props',
|
|
54
|
-
render: ({ props }) => (0, shade_component_1.createComponent)("div", null, props.foo),
|
|
55
|
-
});
|
|
56
|
-
const component = ((0, shade_component_1.createComponent)("div", null,
|
|
57
|
-
(0, shade_component_1.createComponent)(Example, { foo: "example", injector: new inject_1.Injector() })));
|
|
58
|
-
const shade = component.firstElementChild;
|
|
59
|
-
shade.callConstructed();
|
|
60
|
-
expect(shade.props.foo).toEqual('example');
|
|
61
|
-
expect(shade.shadeChildren).toEqual([]);
|
|
62
|
-
expect(shade.innerHTML).toBe('<div>example</div>');
|
|
63
|
-
});
|
|
64
|
-
it('Should render a component with state', () => {
|
|
65
|
-
const Example = (0, shade_1.Shade)({
|
|
66
|
-
shadowDomName: 'example-with-state',
|
|
67
|
-
render: ({ useState }) => {
|
|
68
|
-
useState('foo', 'example');
|
|
69
|
-
return (0, shade_component_1.createComponent)("div", null);
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
const component = ((0, shade_component_1.createComponent)("div", null,
|
|
73
|
-
(0, shade_component_1.createComponent)(Example, { injector: new inject_1.Injector() })));
|
|
74
|
-
const shade = component.firstElementChild;
|
|
75
|
-
shade.callConstructed();
|
|
76
|
-
expect(shade.resourceManager.stateObservers.get('foo')?.getValue()).toEqual('example');
|
|
77
|
-
expect(shade.shadeChildren).toEqual([]);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
//# sourceMappingURL=component-factory.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"component-factory.spec.js","sourceRoot":"","sources":["../src/component-factory.spec.tsx"],"names":[],"mappings":"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"}
|
package/dist/components/index.js
DELETED
|
@@ -1,20 +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("./lazy-load"), exports);
|
|
18
|
-
__exportStar(require("./router"), exports);
|
|
19
|
-
__exportStar(require("./route-link"), exports);
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,2CAAwB;AACxB,+CAA4B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-load.js","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":";;;AAAA,oCAAgC;AAanB,QAAA,QAAQ,GAAG,IAAA,aAAK,EAAgB;IAC3C,aAAa,EAAE,WAAW;IAC1B,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAClD,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,WAAW,EAAE,SAAS,CAAC,CAAA;QAC5F,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAsB,OAAO,EAAE,SAAS,CAAC,CAAA;QACtF,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;YACtC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;SAC5C;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,CAAC,KAAK,EAAE;gBACf,OAAO,CAAC,WAAW,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;aAC5C;iBAAM;gBACL,MAAM,KAAK,CAAA;aACZ;SACF;IACH,CAAC;IACD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsB,OAAO,EAAE,SAAS,CAAC,CAAA;QAC3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0B,WAAW,EAAE,SAAS,CAAC,CAAA;QAE3F,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;YACxB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;gBACnC,IAAI;oBACF,QAAQ,CAAC,SAAS,CAAC,CAAA;oBACnB,YAAY,CAAC,SAAS,CAAC,CAAA;oBACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;oBACtC,YAAY,CAAC,MAAM,CAAC,CAAA;iBACrB;gBAAC,OAAO,CAAC,EAAE;oBACV,QAAQ,CAAC,CAAC,CAAC,CAAA;iBACZ;YACH,CAAC,CAAC,CAAA;SACH;QACD,IAAI,SAAS,EAAE;YACb,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,KAAK,CAAC,MAAM,CAAA;IACrB,CAAC;CACF,CAAC,CAAA"}
|