@lomray/react-mobx-manager 2.1.0 → 2.1.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/lib/context.d.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/manager.d.ts +6 -8
- package/lib/on-change-listener.d.ts +1 -1
- package/lib/storages/async-storage.d.ts +1 -1
- package/lib/storages/local-storage.d.ts +1 -1
- package/lib/suspense-query.d.ts +1 -1
- package/lib/{types-c7e03f73.d.ts → types-a7240264.d.ts} +1 -1
- package/lib/wakeup.d.ts +1 -1
- package/lib/with-stores.d.ts +1 -1
- package/package.json +9 -9
- package/.c8rc.json +0 -11
- package/.mocharc.json +0 -11
- package/.run/Run all.run.xml +0 -14
- package/__helpers__/root-hooks.ts +0 -13
- package/__helpers__/sinon-chai.ts +0 -4
- package/__tests__/manager-stream.ts +0 -57
- package/__tests__/wakeup.ts +0 -32
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -176
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/context.tsx.html +0 -367
- package/coverage/lcov-report/src/events.ts.html +0 -118
- package/coverage/lcov-report/src/index.html +0 -266
- package/coverage/lcov-report/src/index.ts.html +0 -124
- package/coverage/lcov-report/src/manager-stream.ts.html +0 -226
- package/coverage/lcov-report/src/manager.ts.html +0 -1834
- package/coverage/lcov-report/src/on-change-listener.ts.html +0 -169
- package/coverage/lcov-report/src/plugins/dev-extension/index.html +0 -131
- package/coverage/lcov-report/src/plugins/dev-extension/index.ts.html +0 -109
- package/coverage/lcov-report/src/plugins/dev-extension/state-listener.ts.html +0 -397
- package/coverage/lcov-report/src/plugins/helpers.ts.html +0 -514
- package/coverage/lcov-report/src/plugins/index.html +0 -116
- package/coverage/lcov-report/src/plugins/vite/id-generator.ts.html +0 -292
- package/coverage/lcov-report/src/plugins/vite/index.html +0 -131
- package/coverage/lcov-report/src/plugins/vite/index.ts.html +0 -178
- package/coverage/lcov-report/src/storages/async-storage.ts.html +0 -253
- package/coverage/lcov-report/src/storages/index.html +0 -131
- package/coverage/lcov-report/src/storages/local-storage.ts.html +0 -190
- package/coverage/lcov-report/src/store-status.ts.html +0 -109
- package/coverage/lcov-report/src/suspense-query.ts.html +0 -619
- package/coverage/lcov-report/src/types.ts.html +0 -499
- package/coverage/lcov-report/src/wakeup.ts.html +0 -121
- package/coverage/lcov-report/src/with-stores.tsx.html +0 -274
- package/coverage/lcov.info +0 -1849
- package/coverage/tmp/coverage-1953-1701099463465-0.json +0 -1
- package/coverage/tmp/coverage-1966-1701099463425-0.json +0 -1
- package/coverage/tmp/coverage-1973-1701099463382-0.json +0 -1
- package/typing/@lomray/event-manager.d.ts +0 -5
package/lib/context.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { FC, ReactElement } from "react";
|
|
4
4
|
import Manager from "./manager.js";
|
|
5
|
-
import { TStores } from "./types-
|
|
5
|
+
import { TStores } from "./types-a7240264.js";
|
|
6
6
|
interface IStoreManagerProvider {
|
|
7
7
|
storeManager: Manager;
|
|
8
8
|
shouldInit?: boolean;
|
package/lib/index.d.ts
CHANGED
package/lib/manager.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import StoreStatus from "./store-status.js";
|
|
2
|
-
import { IConstructableStore, IManagerOptions, IManagerParams, IStorage, IStore, IStoreParams, TInitStore, TStoreDefinition, TStores } from "./types-
|
|
2
|
+
import { IConstructableStore, IManagerOptions, IManagerParams, IStorage, IStore, IStoreParams, TInitStore, TStoreDefinition, TStores } from "./types-a7240264.js";
|
|
3
3
|
/**
|
|
4
4
|
* Mobx stores manager
|
|
5
5
|
*/
|
|
@@ -116,23 +116,21 @@ declare class Manager {
|
|
|
116
116
|
* Get store identity
|
|
117
117
|
* @protected
|
|
118
118
|
*/
|
|
119
|
-
protected getStoreId<T>(store: IConstructableStore<T> | TInitStore, params?: IStoreParams): string;
|
|
119
|
+
protected getStoreId<T extends IStore>(store: IConstructableStore<T> | TInitStore, params?: IStoreParams): string;
|
|
120
120
|
/**
|
|
121
121
|
* Get exist store
|
|
122
122
|
*/
|
|
123
123
|
/**
|
|
124
124
|
* Get exist store
|
|
125
125
|
*/
|
|
126
|
-
getStore<T>(store: IConstructableStore<T>, params?: IStoreParams): T | undefined;
|
|
126
|
+
getStore<T extends IStore>(store: IConstructableStore<T>, params?: IStoreParams): T | undefined;
|
|
127
127
|
/**
|
|
128
128
|
* Lookup store
|
|
129
|
-
* @protected
|
|
130
129
|
*/
|
|
131
130
|
/**
|
|
132
131
|
* Lookup store
|
|
133
|
-
* @protected
|
|
134
132
|
*/
|
|
135
|
-
protected lookupStore<T>(id: string, params: IStoreParams): TInitStore<T> | undefined;
|
|
133
|
+
protected lookupStore<T extends IStore>(id: string, params: IStoreParams): TInitStore<T> | undefined;
|
|
136
134
|
/**
|
|
137
135
|
* Create new store instance
|
|
138
136
|
* @protected
|
|
@@ -141,7 +139,7 @@ declare class Manager {
|
|
|
141
139
|
* Create new store instance
|
|
142
140
|
* @protected
|
|
143
141
|
*/
|
|
144
|
-
protected createStore<T>(store: IConstructableStore<T>, params: Omit<Required<IStoreParams>, 'key'>): T;
|
|
142
|
+
protected createStore<T extends IStore>(store: IConstructableStore<T>, params: Omit<Required<IStoreParams>, 'key'>): T;
|
|
145
143
|
/**
|
|
146
144
|
* Create stores for component
|
|
147
145
|
*/
|
|
@@ -213,6 +211,6 @@ declare class Manager {
|
|
|
213
211
|
/**
|
|
214
212
|
* Persist store
|
|
215
213
|
*/
|
|
216
|
-
static persistStore<TSt>(store: IConstructableStore<TSt>, id: string): IConstructableStore<TSt>;
|
|
214
|
+
static persistStore<TSt extends IStore>(store: IConstructableStore<TSt>, id: string): IConstructableStore<TSt>;
|
|
217
215
|
}
|
|
218
216
|
export { Manager as default };
|
package/lib/suspense-query.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ declare global {
|
|
|
12
12
|
}
|
|
13
13
|
interface IConstructorParams<TProps = Record<string, any>> {
|
|
14
14
|
storeManager: Manager;
|
|
15
|
-
getStore: <T>(store: IConstructableStore<T>, params?: Partial<IStoreParams>) => T | undefined;
|
|
15
|
+
getStore: <T extends IStore>(store: IConstructableStore<T>, params?: Partial<IStoreParams>) => T | undefined;
|
|
16
16
|
componentProps: TProps;
|
|
17
17
|
}
|
|
18
18
|
interface IStoreLifecycle {
|
package/lib/wakeup.d.ts
CHANGED
package/lib/with-stores.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lomray/react-mobx-manager",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"description": "This package provides Mobx stores manager for react.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"prepare": "husky install"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@lomray/consistent-suspense": "^1.3.
|
|
56
|
+
"@lomray/consistent-suspense": "^1.3.1",
|
|
57
57
|
"@lomray/event-manager": "^2.0.2"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
@@ -66,17 +66,17 @@
|
|
|
66
66
|
"@types/hoist-non-react-statics": "^3.3.5",
|
|
67
67
|
"@types/lodash": "^4.14.202",
|
|
68
68
|
"@types/mocha": "^10.0.6",
|
|
69
|
-
"@types/react": "^18.2.
|
|
69
|
+
"@types/react": "^18.2.42",
|
|
70
70
|
"@types/sinon": "^17.0.2",
|
|
71
71
|
"@types/sinon-chai": "^3.2.12",
|
|
72
72
|
"c8": "^8.0.1",
|
|
73
73
|
"chai": "^4.3.10",
|
|
74
|
-
"eslint": "^8.
|
|
75
|
-
"eslint-config-prettier": "^9.
|
|
74
|
+
"eslint": "^8.55.0",
|
|
75
|
+
"eslint-config-prettier": "^9.1.0",
|
|
76
76
|
"eslint-plugin-jsx-a11y": "^6.8.0",
|
|
77
77
|
"eslint-plugin-prettier": "^5.0.1",
|
|
78
78
|
"husky": "^8.0.3",
|
|
79
|
-
"lint-staged": "^15.
|
|
79
|
+
"lint-staged": "^15.2.0",
|
|
80
80
|
"mocha": "^10.2.0",
|
|
81
81
|
"prettier": "^3.1.0",
|
|
82
82
|
"rollup": "2.79.1",
|
|
@@ -87,11 +87,11 @@
|
|
|
87
87
|
"ts-node": "^10.9.1",
|
|
88
88
|
"tsconfig-paths": "^4.2.0",
|
|
89
89
|
"ttypescript": "^1.5.15",
|
|
90
|
-
"typescript": "^4.
|
|
91
|
-
"vite": "^
|
|
90
|
+
"typescript": "^4.9.5",
|
|
91
|
+
"vite": "^5.0.6"
|
|
92
92
|
},
|
|
93
93
|
"peerDependencies": {
|
|
94
|
-
"hoist-non-react-statics": "
|
|
94
|
+
"hoist-non-react-statics": ">=3.3.2",
|
|
95
95
|
"lodash": ">=4.17.21",
|
|
96
96
|
"mobx": ">=6.9.0",
|
|
97
97
|
"mobx-react-lite": "^3 || ^4",
|
package/.c8rc.json
DELETED
package/.mocharc.json
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"ui": "bdd",
|
|
3
|
-
"timeout": 5000,
|
|
4
|
-
"extension": ["ts", "tsx"],
|
|
5
|
-
"watchFiles": ["__tests__/**/*.ts", "src/**/*.ts"],
|
|
6
|
-
"require": ["./__helpers__/sinon-chai.ts", "./__helpers__/root-hooks.ts"],
|
|
7
|
-
"node-option": [
|
|
8
|
-
"no-warnings",
|
|
9
|
-
"loader=ts-node/register"
|
|
10
|
-
]
|
|
11
|
-
}
|
package/.run/Run all.run.xml
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<component name="ProjectRunConfigurationManager">
|
|
2
|
-
<configuration default="false" name="Run all" type="mocha-javascript-test-runner">
|
|
3
|
-
<node-interpreter>project</node-interpreter>
|
|
4
|
-
<node-options />
|
|
5
|
-
<mocha-package>$PROJECT_DIR$/node_modules/mocha</mocha-package>
|
|
6
|
-
<working-directory>$PROJECT_DIR$</working-directory>
|
|
7
|
-
<pass-parent-env>true</pass-parent-env>
|
|
8
|
-
<ui>bdd</ui>
|
|
9
|
-
<extra-mocha-options>-w</extra-mocha-options>
|
|
10
|
-
<test-kind>PATTERN</test-kind>
|
|
11
|
-
<test-pattern>__tests__/**/*.ts</test-pattern>
|
|
12
|
-
<method v="2" />
|
|
13
|
-
</configuration>
|
|
14
|
-
</component>
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai';
|
|
2
|
-
import sinon from 'sinon';
|
|
3
|
-
import type Manager from '@src/manager';
|
|
4
|
-
import ManagerStream from '@src/manager-stream';
|
|
5
|
-
|
|
6
|
-
describe('ManagerStream', () => {
|
|
7
|
-
const sandbox = sinon.createSandbox();
|
|
8
|
-
const manager = {
|
|
9
|
-
getSuspenseRelations: sandbox.stub(),
|
|
10
|
-
toJSON: sandbox.stub(),
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
afterEach(() => {
|
|
14
|
-
sandbox.restore();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it('should return undefined if no suspense relations for given suspenseId', () => {
|
|
18
|
-
const managerStream = new ManagerStream(manager as unknown as Manager);
|
|
19
|
-
|
|
20
|
-
manager.getSuspenseRelations.returns(new Map());
|
|
21
|
-
|
|
22
|
-
const result = managerStream.take('suspenseId');
|
|
23
|
-
|
|
24
|
-
expect(result).to.be.undefined;
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('should return script chunk with suspense stores', () => {
|
|
28
|
-
const storesIds = new Set(['store1', 'store2']);
|
|
29
|
-
const managerStream = new ManagerStream(manager as unknown as Manager);
|
|
30
|
-
|
|
31
|
-
manager.getSuspenseRelations.returns(new Map([['suspenseId', storesIds]]));
|
|
32
|
-
manager.toJSON.returns({ store1: { data: 'value1' }, store2: { data: 'value2' } });
|
|
33
|
-
|
|
34
|
-
const result = managerStream.take('suspenseId');
|
|
35
|
-
|
|
36
|
-
expect(result).to.include('<script>!window.mbxM && (window.mbxM = []);</script>');
|
|
37
|
-
expect(result).to.include(
|
|
38
|
-
'<script>window.mbxM.push({"store1":{"data":"value1"},"store2":{"data":"value2"}});</script>',
|
|
39
|
-
);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it('should only include preamble in the first call', () => {
|
|
43
|
-
const storesIds = new Set(['store1', 'store2']);
|
|
44
|
-
const managerStream = new ManagerStream(manager as unknown as Manager);
|
|
45
|
-
|
|
46
|
-
manager.getSuspenseRelations.returns(new Map([['suspenseId', storesIds]]));
|
|
47
|
-
manager.toJSON.returns({ store1: { data: 'value1' }, store2: { data: 'value2' } });
|
|
48
|
-
|
|
49
|
-
managerStream.take('suspenseId'); // first call
|
|
50
|
-
const result = managerStream.take('suspenseId'); // second call
|
|
51
|
-
|
|
52
|
-
expect(result).to.not.include('<script>!window.mbxM && (window.mbxM = []);</script>');
|
|
53
|
-
expect(result).to.include(
|
|
54
|
-
'<script>window.mbxM.push({"store1":{"data":"value1"},"store2":{"data":"value2"}});</script>',
|
|
55
|
-
);
|
|
56
|
-
});
|
|
57
|
-
});
|
package/__tests__/wakeup.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { expect } from 'chai';
|
|
2
|
-
import wakeup from '@src/wakeup';
|
|
3
|
-
|
|
4
|
-
describe('wakeup', () => {
|
|
5
|
-
it('should restore persisted store state', () => {
|
|
6
|
-
const persistedState = { prop1: 'value1', prop2: 'value2' };
|
|
7
|
-
const stores = { prop1: 'initialValue1', prop2: 'initialValue2' };
|
|
8
|
-
|
|
9
|
-
const context = {
|
|
10
|
-
persistedState,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
wakeup.call(stores, context);
|
|
14
|
-
|
|
15
|
-
expect(stores.prop1).to.equal(persistedState.prop1);
|
|
16
|
-
expect(stores.prop2).to.equal(persistedState.prop2);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('should not modify store if persistedState is undefined', () => {
|
|
20
|
-
const stores = { prop1: 'initialValue1', prop2: 'initialValue2' };
|
|
21
|
-
|
|
22
|
-
const context = {
|
|
23
|
-
persistedState: undefined,
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
wakeup.call(stores, context);
|
|
27
|
-
|
|
28
|
-
// Ensure that the stores remain unchanged
|
|
29
|
-
expect(stores.prop1).to.equal('initialValue1');
|
|
30
|
-
expect(stores.prop2).to.equal('initialValue2');
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
body, html {
|
|
2
|
-
margin:0; padding: 0;
|
|
3
|
-
height: 100%;
|
|
4
|
-
}
|
|
5
|
-
body {
|
|
6
|
-
font-family: Helvetica Neue, Helvetica, Arial;
|
|
7
|
-
font-size: 14px;
|
|
8
|
-
color:#333;
|
|
9
|
-
}
|
|
10
|
-
.small { font-size: 12px; }
|
|
11
|
-
*, *:after, *:before {
|
|
12
|
-
-webkit-box-sizing:border-box;
|
|
13
|
-
-moz-box-sizing:border-box;
|
|
14
|
-
box-sizing:border-box;
|
|
15
|
-
}
|
|
16
|
-
h1 { font-size: 20px; margin: 0;}
|
|
17
|
-
h2 { font-size: 14px; }
|
|
18
|
-
pre {
|
|
19
|
-
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
|
20
|
-
margin: 0;
|
|
21
|
-
padding: 0;
|
|
22
|
-
-moz-tab-size: 2;
|
|
23
|
-
-o-tab-size: 2;
|
|
24
|
-
tab-size: 2;
|
|
25
|
-
}
|
|
26
|
-
a { color:#0074D9; text-decoration:none; }
|
|
27
|
-
a:hover { text-decoration:underline; }
|
|
28
|
-
.strong { font-weight: bold; }
|
|
29
|
-
.space-top1 { padding: 10px 0 0 0; }
|
|
30
|
-
.pad2y { padding: 20px 0; }
|
|
31
|
-
.pad1y { padding: 10px 0; }
|
|
32
|
-
.pad2x { padding: 0 20px; }
|
|
33
|
-
.pad2 { padding: 20px; }
|
|
34
|
-
.pad1 { padding: 10px; }
|
|
35
|
-
.space-left2 { padding-left:55px; }
|
|
36
|
-
.space-right2 { padding-right:20px; }
|
|
37
|
-
.center { text-align:center; }
|
|
38
|
-
.clearfix { display:block; }
|
|
39
|
-
.clearfix:after {
|
|
40
|
-
content:'';
|
|
41
|
-
display:block;
|
|
42
|
-
height:0;
|
|
43
|
-
clear:both;
|
|
44
|
-
visibility:hidden;
|
|
45
|
-
}
|
|
46
|
-
.fl { float: left; }
|
|
47
|
-
@media only screen and (max-width:640px) {
|
|
48
|
-
.col3 { width:100%; max-width:100%; }
|
|
49
|
-
.hide-mobile { display:none!important; }
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.quiet {
|
|
53
|
-
color: #7f7f7f;
|
|
54
|
-
color: rgba(0,0,0,0.5);
|
|
55
|
-
}
|
|
56
|
-
.quiet a { opacity: 0.7; }
|
|
57
|
-
|
|
58
|
-
.fraction {
|
|
59
|
-
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
|
|
60
|
-
font-size: 10px;
|
|
61
|
-
color: #555;
|
|
62
|
-
background: #E8E8E8;
|
|
63
|
-
padding: 4px 5px;
|
|
64
|
-
border-radius: 3px;
|
|
65
|
-
vertical-align: middle;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
div.path a:link, div.path a:visited { color: #333; }
|
|
69
|
-
table.coverage {
|
|
70
|
-
border-collapse: collapse;
|
|
71
|
-
margin: 10px 0 0 0;
|
|
72
|
-
padding: 0;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
table.coverage td {
|
|
76
|
-
margin: 0;
|
|
77
|
-
padding: 0;
|
|
78
|
-
vertical-align: top;
|
|
79
|
-
}
|
|
80
|
-
table.coverage td.line-count {
|
|
81
|
-
text-align: right;
|
|
82
|
-
padding: 0 5px 0 20px;
|
|
83
|
-
}
|
|
84
|
-
table.coverage td.line-coverage {
|
|
85
|
-
text-align: right;
|
|
86
|
-
padding-right: 10px;
|
|
87
|
-
min-width:20px;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
table.coverage td span.cline-any {
|
|
91
|
-
display: inline-block;
|
|
92
|
-
padding: 0 5px;
|
|
93
|
-
width: 100%;
|
|
94
|
-
}
|
|
95
|
-
.missing-if-branch {
|
|
96
|
-
display: inline-block;
|
|
97
|
-
margin-right: 5px;
|
|
98
|
-
border-radius: 3px;
|
|
99
|
-
position: relative;
|
|
100
|
-
padding: 0 4px;
|
|
101
|
-
background: #333;
|
|
102
|
-
color: yellow;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.skip-if-branch {
|
|
106
|
-
display: none;
|
|
107
|
-
margin-right: 10px;
|
|
108
|
-
position: relative;
|
|
109
|
-
padding: 0 4px;
|
|
110
|
-
background: #ccc;
|
|
111
|
-
color: white;
|
|
112
|
-
}
|
|
113
|
-
.missing-if-branch .typ, .skip-if-branch .typ {
|
|
114
|
-
color: inherit !important;
|
|
115
|
-
}
|
|
116
|
-
.coverage-summary {
|
|
117
|
-
border-collapse: collapse;
|
|
118
|
-
width: 100%;
|
|
119
|
-
}
|
|
120
|
-
.coverage-summary tr { border-bottom: 1px solid #bbb; }
|
|
121
|
-
.keyline-all { border: 1px solid #ddd; }
|
|
122
|
-
.coverage-summary td, .coverage-summary th { padding: 10px; }
|
|
123
|
-
.coverage-summary tbody { border: 1px solid #bbb; }
|
|
124
|
-
.coverage-summary td { border-right: 1px solid #bbb; }
|
|
125
|
-
.coverage-summary td:last-child { border-right: none; }
|
|
126
|
-
.coverage-summary th {
|
|
127
|
-
text-align: left;
|
|
128
|
-
font-weight: normal;
|
|
129
|
-
white-space: nowrap;
|
|
130
|
-
}
|
|
131
|
-
.coverage-summary th.file { border-right: none !important; }
|
|
132
|
-
.coverage-summary th.pct { }
|
|
133
|
-
.coverage-summary th.pic,
|
|
134
|
-
.coverage-summary th.abs,
|
|
135
|
-
.coverage-summary td.pct,
|
|
136
|
-
.coverage-summary td.abs { text-align: right; }
|
|
137
|
-
.coverage-summary td.file { white-space: nowrap; }
|
|
138
|
-
.coverage-summary td.pic { min-width: 120px !important; }
|
|
139
|
-
.coverage-summary tfoot td { }
|
|
140
|
-
|
|
141
|
-
.coverage-summary .sorter {
|
|
142
|
-
height: 10px;
|
|
143
|
-
width: 7px;
|
|
144
|
-
display: inline-block;
|
|
145
|
-
margin-left: 0.5em;
|
|
146
|
-
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
|
|
147
|
-
}
|
|
148
|
-
.coverage-summary .sorted .sorter {
|
|
149
|
-
background-position: 0 -20px;
|
|
150
|
-
}
|
|
151
|
-
.coverage-summary .sorted-desc .sorter {
|
|
152
|
-
background-position: 0 -10px;
|
|
153
|
-
}
|
|
154
|
-
.status-line { height: 10px; }
|
|
155
|
-
/* yellow */
|
|
156
|
-
.cbranch-no { background: yellow !important; color: #111; }
|
|
157
|
-
/* dark red */
|
|
158
|
-
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
|
|
159
|
-
.low .chart { border:1px solid #C21F39 }
|
|
160
|
-
.highlighted,
|
|
161
|
-
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
|
|
162
|
-
background: #C21F39 !important;
|
|
163
|
-
}
|
|
164
|
-
/* medium red */
|
|
165
|
-
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
|
|
166
|
-
/* light red */
|
|
167
|
-
.low, .cline-no { background:#FCE1E5 }
|
|
168
|
-
/* light green */
|
|
169
|
-
.high, .cline-yes { background:rgb(230,245,208) }
|
|
170
|
-
/* medium green */
|
|
171
|
-
.cstat-yes { background:rgb(161,215,106) }
|
|
172
|
-
/* dark green */
|
|
173
|
-
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
|
|
174
|
-
.high .chart { border:1px solid rgb(77,146,33) }
|
|
175
|
-
/* dark yellow (gold) */
|
|
176
|
-
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
|
|
177
|
-
.medium .chart { border:1px solid #f9cd0b; }
|
|
178
|
-
/* light yellow */
|
|
179
|
-
.medium { background: #fff4c2; }
|
|
180
|
-
|
|
181
|
-
.cstat-skip { background: #ddd; color: #111; }
|
|
182
|
-
.fstat-skip { background: #ddd; color: #111 !important; }
|
|
183
|
-
.cbranch-skip { background: #ddd !important; color: #111; }
|
|
184
|
-
|
|
185
|
-
span.cline-neutral { background: #eaeaea; }
|
|
186
|
-
|
|
187
|
-
.coverage-summary td.empty {
|
|
188
|
-
opacity: .5;
|
|
189
|
-
padding-top: 4px;
|
|
190
|
-
padding-bottom: 4px;
|
|
191
|
-
line-height: 1;
|
|
192
|
-
color: #888;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.cover-fill, .cover-empty {
|
|
196
|
-
display:inline-block;
|
|
197
|
-
height: 12px;
|
|
198
|
-
}
|
|
199
|
-
.chart {
|
|
200
|
-
line-height: 0;
|
|
201
|
-
}
|
|
202
|
-
.cover-empty {
|
|
203
|
-
background: white;
|
|
204
|
-
}
|
|
205
|
-
.cover-full {
|
|
206
|
-
border-right: none !important;
|
|
207
|
-
}
|
|
208
|
-
pre.prettyprint {
|
|
209
|
-
border: none !important;
|
|
210
|
-
padding: 0 !important;
|
|
211
|
-
margin: 0 !important;
|
|
212
|
-
}
|
|
213
|
-
.com { color: #999 !important; }
|
|
214
|
-
.ignore-none { color: #999; font-weight: normal; }
|
|
215
|
-
|
|
216
|
-
.wrapper {
|
|
217
|
-
min-height: 100%;
|
|
218
|
-
height: auto !important;
|
|
219
|
-
height: 100%;
|
|
220
|
-
margin: 0 auto -48px;
|
|
221
|
-
}
|
|
222
|
-
.footer, .push {
|
|
223
|
-
height: 48px;
|
|
224
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
var jumpToCode = (function init() {
|
|
3
|
-
// Classes of code we would like to highlight in the file view
|
|
4
|
-
var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
|
|
5
|
-
|
|
6
|
-
// Elements to highlight in the file listing view
|
|
7
|
-
var fileListingElements = ['td.pct.low'];
|
|
8
|
-
|
|
9
|
-
// We don't want to select elements that are direct descendants of another match
|
|
10
|
-
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
|
|
11
|
-
|
|
12
|
-
// Selecter that finds elements on the page to which we can jump
|
|
13
|
-
var selector =
|
|
14
|
-
fileListingElements.join(', ') +
|
|
15
|
-
', ' +
|
|
16
|
-
notSelector +
|
|
17
|
-
missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
|
|
18
|
-
|
|
19
|
-
// The NodeList of matching elements
|
|
20
|
-
var missingCoverageElements = document.querySelectorAll(selector);
|
|
21
|
-
|
|
22
|
-
var currentIndex;
|
|
23
|
-
|
|
24
|
-
function toggleClass(index) {
|
|
25
|
-
missingCoverageElements
|
|
26
|
-
.item(currentIndex)
|
|
27
|
-
.classList.remove('highlighted');
|
|
28
|
-
missingCoverageElements.item(index).classList.add('highlighted');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function makeCurrent(index) {
|
|
32
|
-
toggleClass(index);
|
|
33
|
-
currentIndex = index;
|
|
34
|
-
missingCoverageElements.item(index).scrollIntoView({
|
|
35
|
-
behavior: 'smooth',
|
|
36
|
-
block: 'center',
|
|
37
|
-
inline: 'center'
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function goToPrevious() {
|
|
42
|
-
var nextIndex = 0;
|
|
43
|
-
if (typeof currentIndex !== 'number' || currentIndex === 0) {
|
|
44
|
-
nextIndex = missingCoverageElements.length - 1;
|
|
45
|
-
} else if (missingCoverageElements.length > 1) {
|
|
46
|
-
nextIndex = currentIndex - 1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
makeCurrent(nextIndex);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function goToNext() {
|
|
53
|
-
var nextIndex = 0;
|
|
54
|
-
|
|
55
|
-
if (
|
|
56
|
-
typeof currentIndex === 'number' &&
|
|
57
|
-
currentIndex < missingCoverageElements.length - 1
|
|
58
|
-
) {
|
|
59
|
-
nextIndex = currentIndex + 1;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
makeCurrent(nextIndex);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return function jump(event) {
|
|
66
|
-
if (
|
|
67
|
-
document.getElementById('fileSearch') === document.activeElement &&
|
|
68
|
-
document.activeElement != null
|
|
69
|
-
) {
|
|
70
|
-
// if we're currently focused on the search input, we don't want to navigate
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
switch (event.which) {
|
|
75
|
-
case 78: // n
|
|
76
|
-
case 74: // j
|
|
77
|
-
goToNext();
|
|
78
|
-
break;
|
|
79
|
-
case 66: // b
|
|
80
|
-
case 75: // k
|
|
81
|
-
case 80: // p
|
|
82
|
-
goToPrevious();
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
})();
|
|
87
|
-
window.addEventListener('keydown', jumpToCode);
|
|
Binary file
|