poi-plugin-item-improvement2 0.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/.eslintrc.js +42 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/inspectionProfiles/profiles_settings.xml +6 -0
- package/.idea/misc.xml +4 -0
- package/.idea/modules.xml +8 -0
- package/.idea/plugin-item-improvement.iml +8 -0
- package/.idea/vcs.xml +6 -0
- package/README.md +7 -0
- package/assets/arsenal.nedb +704 -0
- package/assets/items.nedb +756 -0
- package/assets/main.css +192 -0
- package/assets/useitem.svg +107 -0
- package/i18n/en-US.json +4 -0
- package/i18n/ja-JP.json +54 -0
- package/i18n/zh-CN.json +53 -0
- package/i18n/zh-TW.json +53 -0
- package/index.es +12 -0
- package/index.js +21 -0
- package/package.json +56 -0
- package/poi-plugin-item-improvement2-0.0.1.tgz +0 -0
- package/views/detail-row.js +186 -0
- package/views/divider.js +17 -0
- package/views/item-info-area.js +157 -0
- package/views/item-info-row.js +93 -0
- package/views/item-wrapper.js +126 -0
- package/views/mat-row.js +153 -0
- package/views/selectors.js +127 -0
- package/views/starcraft/add-new-equip-view.js +110 -0
- package/views/starcraft/control-panel.js +104 -0
- package/views/starcraft/equip-category-view.js +115 -0
- package/views/starcraft/equip-list-view.js +100 -0
- package/views/starcraft/equip-view.js +142 -0
- package/views/starcraft/equiptype.js +109 -0
- package/views/starcraft/plan-modify-control.js +201 -0
- package/views/starcraft/plan-view.js +108 -0
- package/views/starcraft/starcraft-area.js +222 -0
- package/views/starcraft/utils.js +51 -0
- package/views/useitem-icon.js +69 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.StarcraftArea = void 0;
|
|
5
|
+
|
|
6
|
+
var _domToImage = _interopRequireDefault(require("dom-to-image"));
|
|
7
|
+
|
|
8
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
+
|
|
10
|
+
var _electron = require("electron");
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _reactRedux = require("react-redux");
|
|
17
|
+
|
|
18
|
+
var _createStore = require("views/create-store");
|
|
19
|
+
|
|
20
|
+
var _equiptype = require("./equiptype");
|
|
21
|
+
|
|
22
|
+
var _equipCategoryView = require("./equip-category-view");
|
|
23
|
+
|
|
24
|
+
var _controlPanel = require("./control-panel");
|
|
25
|
+
|
|
26
|
+
var _divider = require("../divider");
|
|
27
|
+
|
|
28
|
+
var _utils = require("./utils");
|
|
29
|
+
|
|
30
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
|
31
|
+
|
|
32
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
|
+
|
|
34
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
35
|
+
|
|
36
|
+
const {
|
|
37
|
+
$
|
|
38
|
+
} = window;
|
|
39
|
+
window.store = _createStore.store;
|
|
40
|
+
$('#fontawesome-css').setAttribute('href', require.resolve('font-awesome/css/font-awesome.css'));
|
|
41
|
+
|
|
42
|
+
class Main extends _react.Component {
|
|
43
|
+
static prepareAutoCollapse(props) {
|
|
44
|
+
const equipTypeCollapsed = {};
|
|
45
|
+
const {
|
|
46
|
+
equipTypes,
|
|
47
|
+
equipTypeInfo,
|
|
48
|
+
plans
|
|
49
|
+
} = props;
|
|
50
|
+
Object.keys(equipTypes).map(k => {
|
|
51
|
+
const et = equipTypes[k];
|
|
52
|
+
const ci = equipTypeInfo.catInfo[et.api_id];
|
|
53
|
+
equipTypeCollapsed[k] = !ci.group.some(mstId => plans[mstId]);
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
equipTypeCollapsed
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
constructor(props) {
|
|
61
|
+
super();
|
|
62
|
+
Object.defineProperty(this, "handleToggle", {
|
|
63
|
+
configurable: true,
|
|
64
|
+
enumerable: true,
|
|
65
|
+
writable: true,
|
|
66
|
+
value: k => () => {
|
|
67
|
+
this.setState(prevState => {
|
|
68
|
+
const newState = _extends({}, prevState);
|
|
69
|
+
|
|
70
|
+
newState.equipTypeCollapsed = _extends({}, prevState.equipTypeCollapsed);
|
|
71
|
+
newState.equipTypeCollapsed[k] = !prevState.equipTypeCollapsed[k];
|
|
72
|
+
return newState;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
Object.defineProperty(this, "handleControlAction", {
|
|
77
|
+
configurable: true,
|
|
78
|
+
enumerable: true,
|
|
79
|
+
writable: true,
|
|
80
|
+
value: action => {
|
|
81
|
+
const {
|
|
82
|
+
equipTypes
|
|
83
|
+
} = this.props;
|
|
84
|
+
|
|
85
|
+
if (action === 'Auto') {
|
|
86
|
+
this.setState(Main.prepareAutoCollapse(this.props));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (action === 'ExpandAll' || action === 'CollapseAll') {
|
|
91
|
+
const collapsed = action === 'CollapseAll';
|
|
92
|
+
const equipTypeCollapsed = {};
|
|
93
|
+
Object.keys(equipTypes).map(k => {
|
|
94
|
+
equipTypeCollapsed[k] = collapsed;
|
|
95
|
+
});
|
|
96
|
+
this.setState({
|
|
97
|
+
equipTypeCollapsed
|
|
98
|
+
});
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
console.error(`undefined action: ${action}`);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
Object.defineProperty(this, "handleToggleViewMode", {
|
|
106
|
+
configurable: true,
|
|
107
|
+
enumerable: true,
|
|
108
|
+
writable: true,
|
|
109
|
+
value: () => {
|
|
110
|
+
this.setState({
|
|
111
|
+
viewMode: !this.state.viewMode
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
Object.defineProperty(this, "updateRef", {
|
|
116
|
+
configurable: true,
|
|
117
|
+
enumerable: true,
|
|
118
|
+
writable: true,
|
|
119
|
+
value: newRef => {
|
|
120
|
+
this.viewRef = newRef;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
Object.defineProperty(this, "handleRefToImage", {
|
|
124
|
+
configurable: true,
|
|
125
|
+
enumerable: true,
|
|
126
|
+
writable: true,
|
|
127
|
+
value: () => {
|
|
128
|
+
if (this.viewRef) {
|
|
129
|
+
_domToImage.default.toPng(this.viewRef).then(dataUrl => {
|
|
130
|
+
_electron.remote.getCurrentWebContents().downloadURL(dataUrl);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
this.state = _extends({}, Main.prepareAutoCollapse(props), {
|
|
136
|
+
viewMode: false
|
|
137
|
+
});
|
|
138
|
+
this.viewRef = null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
render() {
|
|
142
|
+
const {
|
|
143
|
+
equipTypes,
|
|
144
|
+
equipTypeInfo,
|
|
145
|
+
plans,
|
|
146
|
+
$equips
|
|
147
|
+
} = this.props;
|
|
148
|
+
const {
|
|
149
|
+
equipTypeCollapsed,
|
|
150
|
+
viewMode
|
|
151
|
+
} = this.state;
|
|
152
|
+
return _react.default.createElement("div", {
|
|
153
|
+
id: "starcraft-root",
|
|
154
|
+
style: {
|
|
155
|
+
margin: '5px 10px 5px 5px'
|
|
156
|
+
}
|
|
157
|
+
}, _react.default.createElement(_controlPanel.ControlPanel, {
|
|
158
|
+
viewMode: viewMode,
|
|
159
|
+
onToggleViewMode: this.handleToggleViewMode,
|
|
160
|
+
onControlAction: this.handleControlAction,
|
|
161
|
+
onExportAsImage: this.handleRefToImage
|
|
162
|
+
}), _react.default.createElement(_divider.Divider, null), _react.default.createElement("div", {
|
|
163
|
+
ref: this.updateRef
|
|
164
|
+
}, Object.keys(equipTypes).map(k => {
|
|
165
|
+
const et = equipTypes[k];
|
|
166
|
+
const ci = equipTypeInfo.catInfo[et.api_id];
|
|
167
|
+
return _react.default.createElement(_equipCategoryView.EquipCategoryView, {
|
|
168
|
+
viewMode: viewMode,
|
|
169
|
+
key: et.api_id,
|
|
170
|
+
collapsed: equipTypeCollapsed[k],
|
|
171
|
+
onToggle: this.handleToggle(k),
|
|
172
|
+
equipType: et,
|
|
173
|
+
catInfo: ci,
|
|
174
|
+
plans: plans,
|
|
175
|
+
$equips: $equips
|
|
176
|
+
});
|
|
177
|
+
})));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
Object.defineProperty(Main, "propTypes", {
|
|
183
|
+
configurable: true,
|
|
184
|
+
enumerable: true,
|
|
185
|
+
writable: true,
|
|
186
|
+
value: {
|
|
187
|
+
$equips: _propTypes.default.object.isRequired,
|
|
188
|
+
equipTypes: _propTypes.default.object.isRequired,
|
|
189
|
+
plans: _propTypes.default.object.isRequired,
|
|
190
|
+
equipTypeInfo: _propTypes.default.shape({
|
|
191
|
+
catInfo: _propTypes.default.object.isRequired,
|
|
192
|
+
iconInfo: _propTypes.default.object.isRequired
|
|
193
|
+
}).isRequired
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
const StarcraftArea = (0, _reactRedux.connect)(state => {
|
|
197
|
+
const equipTypeInfo = (0, _equiptype.prepareEquipTypeInfo)(state.const.$equips);
|
|
198
|
+
const equipTypesRaw = state.const.$equipTypes;
|
|
199
|
+
const {
|
|
200
|
+
$equips
|
|
201
|
+
} = state.const; // plans[<equipment master id>] = undefined or object
|
|
202
|
+
// plans[...][0 .. 10] = number of planned count
|
|
203
|
+
// connected plans:
|
|
204
|
+
|
|
205
|
+
const plans = _lodash.default.get(state, `config.${_utils.keyPlans}`, {}); // filter equipTypes to remove empty categories
|
|
206
|
+
// before any UI rendering happens
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
const equipTypes = {};
|
|
210
|
+
Object.keys(equipTypesRaw).map(k => {
|
|
211
|
+
const et = equipTypesRaw[k];
|
|
212
|
+
const ci = equipTypeInfo.catInfo[et.api_id];
|
|
213
|
+
if (ci && ci.group.length > 0) equipTypes[k] = et;
|
|
214
|
+
});
|
|
215
|
+
return {
|
|
216
|
+
equipTypeInfo,
|
|
217
|
+
equipTypes,
|
|
218
|
+
plans,
|
|
219
|
+
$equips
|
|
220
|
+
};
|
|
221
|
+
})(Main);
|
|
222
|
+
exports.StarcraftArea = StarcraftArea;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.isEquipMasterEqual = exports.starText = exports.modifyPlans = exports.keyPlans = exports.PLUGIN_KEY = void 0;
|
|
5
|
+
|
|
6
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
7
|
+
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
|
|
10
|
+
const PLUGIN_KEY = 'plugin.poi-plugin-starcraft';
|
|
11
|
+
exports.PLUGIN_KEY = PLUGIN_KEY;
|
|
12
|
+
const keyPlans = `${PLUGIN_KEY}.plans`;
|
|
13
|
+
exports.keyPlans = keyPlans;
|
|
14
|
+
const {
|
|
15
|
+
config
|
|
16
|
+
} = window;
|
|
17
|
+
const {
|
|
18
|
+
__
|
|
19
|
+
} = window.i18n['poi-plugin-item-improvement'];
|
|
20
|
+
|
|
21
|
+
const modifyPlans = modify => {
|
|
22
|
+
const oldPlans = config.get(keyPlans, {});
|
|
23
|
+
config.set(keyPlans, modify(oldPlans));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.modifyPlans = modifyPlans;
|
|
27
|
+
|
|
28
|
+
const starText = star => star === 0 ? __('Owned') : star === 10 ? '★+max' : `★+${star}`;
|
|
29
|
+
|
|
30
|
+
exports.starText = starText;
|
|
31
|
+
|
|
32
|
+
const simplifyEquips = $equips => {
|
|
33
|
+
const ret = {};
|
|
34
|
+
Object.keys($equips).map(k => {
|
|
35
|
+
const {
|
|
36
|
+
api_type,
|
|
37
|
+
api_name,
|
|
38
|
+
api_id
|
|
39
|
+
} = $equips[k];
|
|
40
|
+
ret[k] = {
|
|
41
|
+
api_type,
|
|
42
|
+
api_name,
|
|
43
|
+
api_id
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
return ret;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const isEquipMasterEqual = (a, b) => _lodash.default.isEqual(simplifyEquips(a), simplifyEquips(b));
|
|
50
|
+
|
|
51
|
+
exports.isEquipMasterEqual = isEquipMasterEqual;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.UseitemIcon = void 0;
|
|
5
|
+
|
|
6
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _path = require("path");
|
|
13
|
+
|
|
14
|
+
var _reactRedux = require("react-redux");
|
|
15
|
+
|
|
16
|
+
var _selectors = require("views/utils/selectors");
|
|
17
|
+
|
|
18
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
19
|
+
|
|
20
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
24
|
+
const src = (0, _path.resolve)(__dirname, '../assets/useitem.svg');
|
|
25
|
+
|
|
26
|
+
class StaticUseitemIcon extends _react.Component {
|
|
27
|
+
constructor(...args) {
|
|
28
|
+
var _temp;
|
|
29
|
+
|
|
30
|
+
return _temp = super(...args), Object.defineProperty(this, "shouldComponentUpdate", {
|
|
31
|
+
configurable: true,
|
|
32
|
+
enumerable: true,
|
|
33
|
+
writable: true,
|
|
34
|
+
value: nextProps => !_lodash.default.isEqual(nextProps, this.props)
|
|
35
|
+
}), _temp;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
render() {
|
|
39
|
+
const {
|
|
40
|
+
useitemId,
|
|
41
|
+
className,
|
|
42
|
+
useSVGIcon
|
|
43
|
+
} = this.props;
|
|
44
|
+
const classNames = (0, _classnames.default)(useSVGIcon ? 'svg' : 'png', className);
|
|
45
|
+
return _react.default.createElement("img", {
|
|
46
|
+
src: src,
|
|
47
|
+
alt: `useitem #${useitemId}`,
|
|
48
|
+
className: classNames
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Object.defineProperty(StaticUseitemIcon, "propTypes", {
|
|
55
|
+
configurable: true,
|
|
56
|
+
enumerable: true,
|
|
57
|
+
writable: true,
|
|
58
|
+
value: {
|
|
59
|
+
useitemId: _propTypes.default.number.isRequired,
|
|
60
|
+
className: _propTypes.default.string.isRequired,
|
|
61
|
+
useSVGIcon: _propTypes.default.bool.isRequired // all fields are primitives
|
|
62
|
+
// so shallow / deep comparisons are hardly making any difference
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const UseitemIcon = (0, _reactRedux.connect)(state => ({
|
|
67
|
+
useSVGIcon: _lodash.default.get((0, _selectors.configSelector)(state), 'poi.useSVGIcon')
|
|
68
|
+
}))(StaticUseitemIcon);
|
|
69
|
+
exports.UseitemIcon = UseitemIcon;
|