@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.
Files changed (54) hide show
  1. package/lib/context.d.ts +1 -1
  2. package/lib/index.d.ts +1 -1
  3. package/lib/manager.d.ts +6 -8
  4. package/lib/on-change-listener.d.ts +1 -1
  5. package/lib/storages/async-storage.d.ts +1 -1
  6. package/lib/storages/local-storage.d.ts +1 -1
  7. package/lib/suspense-query.d.ts +1 -1
  8. package/lib/{types-c7e03f73.d.ts → types-a7240264.d.ts} +1 -1
  9. package/lib/wakeup.d.ts +1 -1
  10. package/lib/with-stores.d.ts +1 -1
  11. package/package.json +9 -9
  12. package/.c8rc.json +0 -11
  13. package/.mocharc.json +0 -11
  14. package/.run/Run all.run.xml +0 -14
  15. package/__helpers__/root-hooks.ts +0 -13
  16. package/__helpers__/sinon-chai.ts +0 -4
  17. package/__tests__/manager-stream.ts +0 -57
  18. package/__tests__/wakeup.ts +0 -32
  19. package/coverage/lcov-report/base.css +0 -224
  20. package/coverage/lcov-report/block-navigation.js +0 -87
  21. package/coverage/lcov-report/favicon.png +0 -0
  22. package/coverage/lcov-report/index.html +0 -176
  23. package/coverage/lcov-report/prettify.css +0 -1
  24. package/coverage/lcov-report/prettify.js +0 -2
  25. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  26. package/coverage/lcov-report/sorter.js +0 -196
  27. package/coverage/lcov-report/src/context.tsx.html +0 -367
  28. package/coverage/lcov-report/src/events.ts.html +0 -118
  29. package/coverage/lcov-report/src/index.html +0 -266
  30. package/coverage/lcov-report/src/index.ts.html +0 -124
  31. package/coverage/lcov-report/src/manager-stream.ts.html +0 -226
  32. package/coverage/lcov-report/src/manager.ts.html +0 -1834
  33. package/coverage/lcov-report/src/on-change-listener.ts.html +0 -169
  34. package/coverage/lcov-report/src/plugins/dev-extension/index.html +0 -131
  35. package/coverage/lcov-report/src/plugins/dev-extension/index.ts.html +0 -109
  36. package/coverage/lcov-report/src/plugins/dev-extension/state-listener.ts.html +0 -397
  37. package/coverage/lcov-report/src/plugins/helpers.ts.html +0 -514
  38. package/coverage/lcov-report/src/plugins/index.html +0 -116
  39. package/coverage/lcov-report/src/plugins/vite/id-generator.ts.html +0 -292
  40. package/coverage/lcov-report/src/plugins/vite/index.html +0 -131
  41. package/coverage/lcov-report/src/plugins/vite/index.ts.html +0 -178
  42. package/coverage/lcov-report/src/storages/async-storage.ts.html +0 -253
  43. package/coverage/lcov-report/src/storages/index.html +0 -131
  44. package/coverage/lcov-report/src/storages/local-storage.ts.html +0 -190
  45. package/coverage/lcov-report/src/store-status.ts.html +0 -109
  46. package/coverage/lcov-report/src/suspense-query.ts.html +0 -619
  47. package/coverage/lcov-report/src/types.ts.html +0 -499
  48. package/coverage/lcov-report/src/wakeup.ts.html +0 -121
  49. package/coverage/lcov-report/src/with-stores.tsx.html +0 -274
  50. package/coverage/lcov.info +0 -1849
  51. package/coverage/tmp/coverage-1953-1701099463465-0.json +0 -1
  52. package/coverage/tmp/coverage-1966-1701099463425-0.json +0 -1
  53. package/coverage/tmp/coverage-1973-1701099463382-0.json +0 -1
  54. 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-c7e03f73.js";
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
@@ -1,4 +1,4 @@
1
- export * from "./types-c7e03f73.js";
1
+ export * from "./types-a7240264.js";
2
2
  export * from "./context.js";
3
3
  export { default as Manager } from "./manager.js";
4
4
  export { default as onChangeListener } from "./on-change-listener.js";
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-c7e03f73.js";
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 };
@@ -1,4 +1,4 @@
1
- import { IStorePersisted } from "./types-c7e03f73.js";
1
+ import { IStorePersisted } from "./types-a7240264.js";
2
2
  /**
3
3
  * Listen persist store changes
4
4
  */
@@ -1,4 +1,4 @@
1
- import { IStorage } from "../types-c7e03f73.js";
1
+ import { IStorage } from "../types-a7240264.js";
2
2
  interface IAsyncStorage {
3
3
  getItem: (key: string) => Promise<string | null>;
4
4
  setItem: (key: string, value: string) => Promise<void>;
@@ -1,4 +1,4 @@
1
- import { IStorage } from "../types-c7e03f73.js";
1
+ import { IStorage } from "../types-a7240264.js";
2
2
  /**
3
3
  * Local storage for mobx store manager
4
4
  */
@@ -1,4 +1,4 @@
1
- import { TInitStore } from "./types-c7e03f73.js";
1
+ import { TInitStore } from "./types-a7240264.js";
2
2
  interface IPromise<TReturn> extends Promise<TReturn> {
3
3
  status?: 'fulfilled' | 'pending' | 'rejected';
4
4
  value?: TReturn;
@@ -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
@@ -1,4 +1,4 @@
1
- import { TStores, TWakeup } from "./types-c7e03f73.js";
1
+ import { TStores, TWakeup } from "./types-a7240264.js";
2
2
  /**
3
3
  * Restore persisted store state
4
4
  */
@@ -1,5 +1,5 @@
1
1
  import { FC } from 'react';
2
- import { TMapStores, IWithStoreOptions } from "./types-c7e03f73.js";
2
+ import { TMapStores, IWithStoreOptions } from "./types-a7240264.js";
3
3
  /**
4
4
  * Make component observable and pass stores as props
5
5
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lomray/react-mobx-manager",
3
- "version": "2.1.0",
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.0",
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.38",
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.54.0",
75
- "eslint-config-prettier": "^9.0.0",
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.1.0",
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.7.4",
91
- "vite": "^4.5.0"
90
+ "typescript": "^4.9.5",
91
+ "vite": "^5.0.6"
92
92
  },
93
93
  "peerDependencies": {
94
- "hoist-non-react-statics": "^3.3.2",
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
@@ -1,11 +0,0 @@
1
- {
2
- "include": "src/**",
3
- "exclude": "src/types/**",
4
- "all": true,
5
- "cache": false,
6
- "reporter": [
7
- "text",
8
- "text-summary",
9
- "lcov"
10
- ]
11
- }
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
- }
@@ -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,13 +0,0 @@
1
- /* eslint-disable import/prefer-default-export */
2
- // noinspection JSUnusedGlobalSymbols
3
-
4
- import sinon from 'sinon';
5
-
6
- /**
7
- * Mocha root hooks
8
- */
9
- export const mochaHooks = {
10
- afterAll(): void {
11
- sinon.restore();
12
- },
13
- };
@@ -1,4 +0,0 @@
1
- import chai from 'chai';
2
- import sinonChai from 'sinon-chai';
3
-
4
- chai.use(sinonChai);
@@ -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
- });
@@ -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